首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用numpy数组和lpsolve?

使用numpy数组和lpsolve?
EN

Stack Overflow用户
提问于 2015-03-16 15:13:58
回答 1查看 1.1K关注 0票数 1

在文档中,它表示您可以使用numpy数组:

蒙皮包装 在上面的一节中,已经提到了最大限度地使用lp解解包numpy的矩阵。有关简要概述,请参见http://numpy.scipy.org/。这个包是旧的和过时的软件包数字的继承者。由于lp_solve完全是关于数组和矩阵的,所以驱动程序接受numpy数组是合乎逻辑的。这可以从驱动程序5.5.0.9版本中实现。在需要之前,numpy数组被转换为列表。例如:

代码语言:javascript
复制
>>> from numpy import *
>>> from lpsolve55 import *
>>> lp=lpsolve('make_lp', 0, 4);
>>> c = array([1, 3, 6.24, 0.1])
>>> ret = lpsolve('set_obj_fn', lp, c)

请注意,numpy数组变量c直接传递给lpsolve。在驱动程序5.5.0.9版本之前,这给出了一个错误,因为lpsolve不知道numpy数组。必须将其转换为清单:

代码语言:javascript
复制
>>> ret = lpsolve('set_obj_fn', lp, list(c))

对于小型模型来说,这是可以的,但是对于较大的数组,这会产生额外的内存开销,因为c现在是内存中的两倍。一次作为numpy数组,一次作为列表。 请注意,lpsolve返回的所有数组都是列表。 还请注意,lpsolve不支持较旧的程序包“数字”。因此,不可能向lp解题提供数字数组。这会带来一个错误。

http://lpsolve.sourceforge.net/5.5/Python.htm

当我尝试这样做时,我会得到一个错误。

代码语言:javascript
复制
lp = lpsolve('make_lp', 0, 7)
coef = np.array([0, 0, 0, 1, 1, 1, 1])
lpsolve('set_obj_fn', lp, coef)

在以下方面的成果:

代码语言:javascript
复制
lpsolve('set_obj_fn', lp, coef)
lpsolve.error: invalid vector.

如果我愿意的话:

代码语言:javascript
复制
lpsolve('set_obj_fn', lp, coef.tolist())

它可以工作,但要花费更多的内存(在一般情况下)。

当我运行lpsolve()

其结果是:

代码语言:javascript
复制
lpsolve  Python Interface version 5.5.0.9
using lpsolve version 5.5.2.0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-13 12:11:10

您可以使用PyLPSolve,如果您有问题的if解决方案。它是lpsolve的一个包装器,它允许我使用numpy数组。

http://www.stat.washington.edu/~hoytak/code/pylpsolve/

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

https://stackoverflow.com/questions/29080348

复制
相关文章

相似问题

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