我想最小化以下LPP: C = 60X + 40Y + 50Z 受制于 20x + 10y + 10z> = 350, 10x + 10y + 20z> = 400,x,y,z> = 0
我的代码片段如下(我第一次使用scipy包)
from scipy.optimize import linprog
c = [60, 40, 50]
A = [[20,10], [10,10],[10,20]]
b = [350,400]
res = linprog(c, A, b)
print(res)
输出为:https://golang.org/pkg/net/http/#Request.ParseMultipartForm
1.有人可以详细解释linprog函数的参数,特别是如何计算界限?
2.我写了参数吗?
我对LPP基础知识很天真,我认为我理解错误的参数。
答案 0 :(得分:2)
linprog
期望A
每个不等式有一行,每个变量有一列,而不是相反。试试这个:
from scipy.optimize import linprog
c = [60, 40, 50]
A = [[20, 10, 10], [10, 10, 20]]
b = [350, 400]
res = linprog(c, A, b)
print(res)
输出:
fun: -0.0
message: 'Optimization terminated successfully.'
nit: 0
slack: array([ 350., 400.])
status: 0
success: True
x: array([ 0., 0., 0.])
答案 1 :(得分:1)
该消息告诉您,您的A_ub
矩阵的维度不正确。它目前是一个3x2矩阵,不能左右乘以3x1优化变量x
。你需要写:
A = [[20,10, 10], [10,10,20]]
这是一个2x3矩阵,可以保持乘法x
。