在文档中,它表示您可以使用numpy数组:
蒙皮包装 在上面的一节中,已经提到了最大限度地使用lp解解包numpy的矩阵。有关简要概述,请参见http://numpy.scipy.org/。这个包是旧的和过时的软件包数字的继承者。由于lp_solve完全是关于数组和矩阵的,所以驱动程序接受numpy数组是合乎逻辑的。这可以从驱动程序5.5.0.9版本中实现。在需要之前,numpy数组被转换为列表。例如:
>>> 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数组。必须将其转换为清单:
>>> ret = lpsolve('set_obj_fn', lp, list(c))对于小型模型来说,这是可以的,但是对于较大的数组,这会产生额外的内存开销,因为c现在是内存中的两倍。一次作为numpy数组,一次作为列表。 请注意,lpsolve返回的所有数组都是列表。 还请注意,lpsolve不支持较旧的程序包“数字”。因此,不可能向lp解题提供数字数组。这会带来一个错误。
http://lpsolve.sourceforge.net/5.5/Python.htm
当我尝试这样做时,我会得到一个错误。
lp = lpsolve('make_lp', 0, 7)
coef = np.array([0, 0, 0, 1, 1, 1, 1])
lpsolve('set_obj_fn', lp, coef)在以下方面的成果:
lpsolve('set_obj_fn', lp, coef)
lpsolve.error: invalid vector.如果我愿意的话:
lpsolve('set_obj_fn', lp, coef.tolist())它可以工作,但要花费更多的内存(在一般情况下)。
当我运行lpsolve()时
其结果是:
lpsolve Python Interface version 5.5.0.9
using lpsolve version 5.5.2.0发布于 2015-06-13 12:11:10
您可以使用PyLPSolve,如果您有问题的if解决方案。它是lpsolve的一个包装器,它允许我使用numpy数组。
http://www.stat.washington.edu/~hoytak/code/pylpsolve/
https://stackoverflow.com/questions/29080348
复制相似问题