首页 > 解决方案 > 具有没有简单表达式的约束的 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)

标签: pythonscipymathematical-optimizationscipy-optimize

解决方案


您可以将NonlinearConstraint对象传递给scipy.optimize.minimize.

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

我无法提供更多详细信息,因为您的问题没有提供任何详细信息,并且通过同样的论点,我不能保证强加 NonLinearConstraint 确实可以帮助您。


推荐阅读