我需要优化目标函数(最小化)。
x1 + x2 + x3的总和= 1(这是我唯一的constranint)。此后,x1,x2,x3的边界必须在(+0,<1)之间。正值,但小于1。
我没有任何初步猜测。在此示例中,我复制了我在纸上提出的问题的答案。但是科学的答案是不一样的,所以这是不对的。
我尝试使用scipy和puLP。但是两者都无法解决。我不知道我是否在使用完美的工具来解决这个问题。
谢谢。
from scipy.optimize import minimize
import numpy as np
def objective(x):
x1=x[0]
x2=x[1]
x3=x[2]
return 0.3442 * x1 **2 + 0.3814 * x2 + 0.2901 **2 + 2*(-0.0116)* x1 *x2+ 2*(-0.30373)* x2 * x3 +2*(0.1883)* x1 *x3
def equality(x):
x1=x[0]
x2=x[1]
x3=x[2]
return x1+x2+x3-1
cons = {'type':'eq', 'fun': equality}
x0=[0.1944,0.4056,0.4000] #the correct answear for the values of x1, x2, x3
bounds=[[0,1],[0,1],[0,1]]
print(minimize(objective, x0, constraints=cons, method='SLSQP'))