首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scipy.optimize.linprog不为我工作:我做错什么了?

scipy.optimize.linprog不为我工作:我做错什么了?
EN

Stack Overflow用户
提问于 2015-10-01 12:54:30
回答 1查看 592关注 0票数 0

我正在尝试使用scipy.optimize.linprog,在一个简单的例子中,它并不适用于我。我一定做错了什么--请帮我找出来。

这里是输入和期望的解决方案,并测试了预期的解决方案是可行的。

代码语言:javascript
复制
import numpy, scipy.optimize
print "A", A_ub
print "b", b_ub
print "c", c
print "x_expected", x_expected
print "expected optimum", numpy.dot(c, x_expected)
print "feasibility test", numpy.dot(A_ub, x_expected) <= b_ub

这个指纹

代码语言:javascript
复制
A [[-1. -0.  0.  1.]
   [-0. -1.  1.  1.]
   [-1. -0. -0. -1.]
   [-0. -1. -1. -1.]]
b [ 2.  1. -2. -1.]
c [ 1.  1.  0.  0.]
x_expected [ 0  0 -1  2]
expected optimum 0.0
feasibility test [ True  True  True  True]

当我调用linprog时,我得到了一个可行的解决方案,但它似乎不像我所期望的那样最优。

代码语言:javascript
复制
r = scipy.optimize.linprog(c, A_ub, b_ub)
x_derived = r.x
print "x_derived", x_derived
print "derived optimum", numpy.dot(c, x_derived)
print "derived feasibility", numpy.dot(A_ub, x_derived) <= b_ub

这个指纹

代码语言:javascript
复制
x_derived [ 1.  0.  0.  1.]
derived optimum 1.0
derived feasibility [ True  True  True  True]

我的推理有什么问题吗?我应该得到预期的解决方案(或者如果有更好的解决方案),而不是我得到的解决方案?如果我没有错,我如何使林普得到它给我?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-01 13:11:30

默认情况下,Linprog假定通常的线性规划下限x >= 0,而您的“预期”解决方案并不满足这一要求。请参阅bounds关键字参数以更改边界。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32888117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档