Python 如何在scipy中找到对输入值和有限制的函数的最佳值?

Python 如何在scipy中找到对输入值和有限制的函数的最佳值?,python,optimization,scipy,scipy-optimize-minimize,Python,Optimization,Scipy,Scipy Optimize Minimize,我有两个输入值的线性函数,如下所示(params已计算): 现在我想用scipy.optimize.minimize计算函数的最佳值(最小值),并限制输入值范围:输入的总和不允许大于1000。我可以将各自的两个输入限制在以下范围内: bounds = ((0.0, 1000.0), (0, 1000.0)) scipy.optimize.minimize(objective, (0, 0), method="TNC", bounds=bounds) 它给出了1000,100

我有两个输入值的线性函数,如下所示(
params
已计算):

现在我想用
scipy.optimize.minimize
计算函数的最佳值(最小值),并限制输入值范围:输入的总和不允许大于1000。我可以将各自的两个输入限制在以下范围内:

bounds = ((0.0, 1000.0), (0, 1000.0))
scipy.optimize.minimize(objective, (0, 0), method="TNC", bounds=bounds)

它给出了
1000,1000
作为最佳输入值的候选值,正如预期的那样。然而,正如我所说的,我需要输入值对在值的总和受到限制的范围内进行优化,而不仅仅是单独的输入值。我应该如何修改我的代码才能做到这一点?

只是一个猜测——当然不是一个好的解决方案——但也许您可以在函数的输出中添加一个术语,当输入偏离值和的条件时,该术语会急剧增加。通过使其平滑,它仍然可以很好地使用依赖于估计梯度的方法。断言最终解决方案满足求和标准。
bounds = ((0.0, 1000.0), (0, 1000.0))
scipy.optimize.minimize(objective, (0, 0), method="TNC", bounds=bounds)