【发布时间】:2018-12-21 22:23:28
【问题描述】:
您好,我正在尝试求解具有两个侧约束的线性方程组,其中一个已成功实现,结果的总和应为 1,但我需要另一个,即每个解都应该是非负的。任何知道如何添加此约束的人?谢谢
import numpy as np
import numpy.linalg as LA
import scipy.optimize as optimize
A = np.array([[.5, .3, .2], [.4, 6, .3], [.2, .3, .5]])
b = np.array([0, 0, 0])
x = LA.solve(A, b)
def f(x):
y = np.dot(A, x) - b
return np.dot(y, y)
cons = ({'type': 'eq', 'fun': lambda x: x.sum() - 1},{'type': 'eq', 'fun': lambda x: x >= 0})
res = optimize.minimize(f, [0, 0, 0], method='SLSQP', constraints=cons,
options={'disp': False})
xbest = res['x']
print(xbest)
【问题讨论】:
-
你愿意使用来自 scipy (scipy.optimize.linprog) 的线性编程库吗?
-
是的!我只需要解决问题,对它是如何完成的不是很感兴趣