Optimization Scipy最小化SLSQP约束优化的数学域错误

Optimization Scipy最小化SLSQP约束优化的数学域错误,optimization,scipy-optimize-minimize,Optimization,Scipy Optimize Minimize,我试图最小化函数 20A+40B受限于120=100平方米(A)+150平方米(B) 我编写了下面的代码,并将其与其他函数一起使用,效果良好。但这一次它与math.sqrt无关 from scipy.optimize import minimize from math import sqrt import numpy as np def U(args): A, B = args return 20*A+40*B def constraint(args): A,

我试图最小化函数

20A+40B受限于120=100平方米(A)+150平方米(B)

我编写了下面的代码,并将其与其他函数一起使用,效果良好。但这一次它与math.sqrt无关

from scipy.optimize import minimize
from math import sqrt
import numpy as np


def U(args):  
    A, B = args
    return 20*A+40*B 

def constraint(args):
    A, B = args
    return  120-100*sqrt(A)-150*sqrt(B)

con = {'type':'eq','fun':constraint}  
result1 = minimize(U, x0 = [0.1, 0.1], method='SLSQP', constraints=con)
print(f'Optimal_A is {result1.x[0]:.2f} and optimal_B is {result1.x[1]:.2f}')

我能够使用np.sqrt而不是math.sqrt正确地解决这个问题。这是怎么回事?非常感谢。

我还没有试过你的例子,但是SLSQP是否可能会在a或B中出现负值?由于约束取它们的平方根,我建议将A和B的边界设为非负