作业5.7
5.7
点击查看代码
from scipy.optimize import minimize, NonlinearConstraint
import numpy as np
if __name__=="__main__":
fun=lambda x:np.sum(50*x+0.2*x**2)+4*(2*x[0]+x[1]-140)
con_fun1 = lambda x:x[0]+x[1]+x[2]
con_fun2 = lambda x:x[0]+x[1]
con1 = NonlinearConstraint(con_fun1, 180, 180)
con2 = NonlinearConstraint(con_fun2, 100, np.inf)
cons = [con1,con2]
lb = np.array([40,0,0])
ub=np.array([100]*3)
bound=np.vstack((lb,ub)).T
res=minimize(fun, np.zeros(3), method='SLSQP', bounds=bound, constraints=cons)
print("最优解", np.round(res.x))
print("最优值", fun(np.round(res.x)))
print("3010")