【发布时间】:2020-08-04 02:54:01
【问题描述】:
我想为附图https://i.stack.imgur.com/W6fhf.jpg中描述的问题找到最佳解决方案
我的代码是
from scipy.optimize import minimize
def create_constraints(t, tau, ub):
constraints = [{
'type': 'ineq',
'fun': lambda x: x[0] * (-1),
}]
con1 = {
'type': 'ineq',
'fun': lambda x: x[0] - x[1] + tau[0],
}
constraints.append(con1)
con2 = {
'type': 'ineq',
'fun': lambda x: x[1] - ub + tau[1],
}
constraints.append(con2)
return constraints
def f(x):
return (x[0] + x[1]) * (-1)
t0 = np.array([1, 10])
tau0 = [5, 5]
cons = create_constraints(t0, tau0, 30)
res = minimize(f, t0, constraints=cons, method='trust-constr')
使用上述约束参数,我预计最佳解决方案将接近 [20, 25]。然而优化的结果是x: array([ 6.66666669, 18.33333334])。我究竟做错了什么?为什么最小化器不能按预期工作?
任何帮助表示赞赏。
【问题讨论】: