我正在尝试编写一个简单的单纯形算法,第一步是找到一个基本可行解:
有没有人有一个纯Numpy / Scipy实现找到基础(步骤1)或,更好的是以上所有内容的方法呢?
示例:
- 选择A的线性独立列集B
- 将与不在B中的列对应的所有x分量设置为零。
- 解决m个方程以确定x的分量。 这些是基本变量。
有没有人有一个纯Numpy / Scipy实现找到基础(步骤1)或,更好的是以上所有内容的方法呢?
示例:
>>> A
array([[1, 1, 1, 1, 0, 0, 0],
[1, 0, 0, 0, 1, 0, 0],
[0, 0, 1, 0, 0, 1, 0],
[0, 3, 1, 0, 0, 0, 1]])
>>> u, s, v = scipy.linalg.svd(A)
>>> non_zero, = numpy.where(s > 1e-7)
>>> rank = len(non_zero)
>>> rank
4
>>> for basis in some_unknown_function(A):
... print(basis)
{3, 4, 5, 6}
{1, 4, 5, 6}
等等。
scipy.optimize.linprog
- 它实际上实现了单纯形算法。 - Fred Foo