【问题标题】:Scipy minimze with constrains that have no simple expressionScipy 使用没有简单表达式的约束来最小化
【发布时间】:2021-03-29 11:44:48
【问题描述】:

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

如果解决方案无效,我尝试将平方和设置为无穷大,但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)

【问题讨论】:

    标签: python scipy mathematical-optimization scipy-optimize


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢!使用非线性约束,我得到一个Singular matrix C in LSQ subproblem。是否有与我应该使用的默认解算器不同的解算器?
    • @tmkadamcz 我对你的问题的细节一无所知,为什么你认为我可以提供进一步的帮助?是的,有不同的求解器,它们在 Scipy 文档中进行了解释,这是 the starting point
    • 我会重写一个更完整的问题
    • @tmkadamcz 如果你重写你的问题,你会得到更好的答案。
    猜你喜欢
    • 2013-12-03
    • 2016-05-27
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多