Scipy 使用没有简单表达式的约束最小化
Scipy minimze with constrains that have no simple expression
我试图找到最小化最小二乘函数的值。问题是解决方案可能 有效 或无效,无法作为值的简单表达式给出。相反,我们可以通过调用函数来检查有效性。
我试图做的是在解无效时将平方和设置为无穷大,但 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)
您可以将 NonlinearConstraint 对象传递给 scipy.optimize.minimize
。
a_solution = scipy.optimize.minimize(sse, a0, constraints=scipy.optimize.NonlinearConstraint(...))
我无法提供进一步的细节,因为你的问题没有提供任何细节,并且根据同样的论点,我不能保证施加 NonLinearConstraint 确实可以帮助你。
我试图找到最小化最小二乘函数的值。问题是解决方案可能 有效 或无效,无法作为值的简单表达式给出。相反,我们可以通过调用函数来检查有效性。
我试图做的是在解无效时将平方和设置为无穷大,但 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)
您可以将 NonlinearConstraint 对象传递给 scipy.optimize.minimize
。
a_solution = scipy.optimize.minimize(sse, a0, constraints=scipy.optimize.NonlinearConstraint(...))
我无法提供进一步的细节,因为你的问题没有提供任何细节,并且根据同样的论点,我不能保证施加 NonLinearConstraint 确实可以帮助你。