1

ドキュメントでは、numpy 配列を使用できると書かれています。

numpy パッケージ

上記のセクション lpsolve を使用した行列の最大使用量では、パッケージ numpy が既に言及されています。簡単な概要については、http://numpy.scipy.org/を参照してください。このパッケージは、古い古いパッケージ Numeric の後継です。lp_solve はすべて配列と行列に関するものであるため、lpsolve Python ドライバーが 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 がメモリ内で 2 倍になるため、余分なメモリ オーバーヘッドが発生します。numpy 配列として 1 回、リストとして 1 回。

lpsolve から返されるすべての配列は常にリストであることに注意してください。

また、古いパッケージ Numeric は lpsolve ではサポートされていないことに注意してください。そのため、数値配列を lpsolve に提供することはできません。それはエラーになります。

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
4

1 に答える 1