求解(不知道到对不对,请大佬看看)
每次求解答案都不同,越往后答案越大,求的为局部最优解,只有第一次为全局最优解,
都为0的时候
import numpy as np
import math
from scipy.optimize import minimize,Bounds
def func(x):
return sum(math.sqrt(x[i]) for i in range(100))
def con(x):
return 1000-np.sum(x[i]*(101-i+1) for i in range(100))
con1={'type':'ineq','fun': lambda x: 10-x[0]}
con2={'type':'ineq','fun': lambda x: 20-x[0]-2*x[1]}
con3={'type':'ineq','fun': lambda x: 30-x[0]-x[1]*2-x[2]*3}
con4={'type':'ineq','fun': lambda x: 40-x[0]-x[1]*2-x[2]*3-x[3]*4}
con5={'type':'ineq','fun': con}
cons=[con1,con2,con3,con4,con5]
bounds=Bounds([0]*100,np.inf*100)
res=minimize(func,np.random.randn(100),constraints=cons,bounds=bounds)
print(res.x)
print(res.fun)