【发布时间】:2019-03-22 11:38:09
【问题描述】:
在连续变量的优化问题中,我使用 GLPK for python(pymprog 模块)。结果出乎我的意料。
begin('optimzer')
X = var('X', 5)
k = par('k', [1, 1, 1, 1, 1])
0 <= X[0] <= 100
100 <= X[1] <= 200
400 <= X[2] <= 500
400 <= X[3] <= 500
400 <= X[4] <= 500
sum(k[i]*X[i] for i in range(len(k))) >= 150
minimize(sum(k[i]*X[i] for i in range(len((k)))), 'Profit')
solve()
save(mip='_save.mip')
结果是这样的
Problem: optimzer
Rows: 1
Columns: 5 (0 integer, 0 binary)
Non-zeros: 5
Status: INTEGER UNDEFINED
Objective: Profit = 0 (MINimum)
No. Row name Activity Lower bound Upper bound
------ ------------ ------------- ------------- -------------
1 R1 0 150
No. Column name Activity Lower bound Upper bound
------ ------------ ------------- ------------- -------------
1 X[0] 0 0 100
2 X[1] 0 100 200
3 X[2] 0 400 500
4 X[3] 0 400 500
5 X[4] 0 400 500
Integer feasibility conditions:
KKT.PE: max.abs.err = 0.00e+00 on row 0
max.rel.err = 0.00e+00 on row 0
High quality
KKT.PB: max.abs.err = 4.00e+02 on column 3
max.rel.err = 9.98e-01 on column 3
SOLUTION IS INFEASIBLE
End of output
如果我使用连续变量,为什么状态为 INTEGER UNDEFINED?
在应该 >= 150 的给定约束下,利润如何为 0?
【问题讨论】:
标签: python optimization linear-programming glpk