使用Scipy的非凸函数的优化问题。不是初步猜测

时间:2020-05-11 22:34:32

标签: python python-3.x scipy scipy-optimize scipy-optimize-minimize

我需要优化目标函数(最小化)。

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'))

0 个答案:

没有答案