如何限制优化值大于0

How to restrict optimized value to be greater than 0

假设我需要最小化一个函数,但我想将结果保持在 0 以上。即优化值应该是>= 0。我可以找到关于如何约束参数的内容,但不能找到 return 值本身。

def test(params, *args):
    return params[0] + params[1]
minVal = minimize(test, [0.01, 0.02], ...) # I want minVal to be lowest non-negative value

只需添加一个强制 objective 为 >= 0 的约束:

from scipy.optimize import minimize

def test(params):
    return params[0] + params[1]

# forces test(params) >= 0
con = [{"type" : "ineq", "fun" : test}]

minVal = minimize(test, x0=[0.01, 0.02], constraints=con)