Scipy最小化没有简单表达式的约束



我正试图找到最小化最小二乘函数的值。问题是,解决方案可能是有效,也可能不是以一种不能作为值的简单表达式给出的方式。相反,我们可以通过调用一个函数来检查有效性。

我试图做的是,如果解决方案无效,将平方和设置为无穷大,但scipy.optimize.minimize不喜欢这样。解决这个问题的更好方法是什么?

我的代码的简化版本:

probs = constant
def sse(a_candidate):
validity = some_function(a_candidate)
if not validity:
sum_sq_err = np.inf
else:
ym = function_of(a_candidate)
sum_sq_err = np.sum((ym-probs)**2)
return sum_sq_err
a_solution = scipy.optimize.minimize(sse,a0)

您可以将非线性约束对象传递给scipy.optimize.minimize

a_solution = scipy.optimize.minimize(sse, a0, constraints=scipy.optimize.NonlinearConstraint(...))

我不能提供更多的细节,因为你的问题没有提供任何细节,同样的论点,我不能保证施加NonLinearConstraint实际上会帮助你。

最新更新