我有一个小尺寸线性程序,限制Ax< = b和x> = 0。为了解决这个问题,我一直在使用Python库scipy.optimize.linprog。 从我的n个变量中,我需要知道哪些是基础。
我经常搜索,无法找到解决方法。我也尝试了Pulp库但没有成功。 我对退化实例感兴趣,所以寻找正变量是不够的;有些零变量很可能是基本的。
您知道获取此信息的方法吗?我可以使用任何库,但必须使用Python。
谢谢!
答案 0 :(得分:1)
几乎没有LP解算器不返回包含每个变量和每行(或松弛)的基础状态的数组/向量。不幸的是scipy.optimize.linprog
是个例外。我相信如果您查看源代码,您可以找到基础状态数组。纸浆不是解决者,而是建模工具。我不确定Pulp提供的解决方案信息。但您始终可以使用PULP生成MPS文件,并在任何LP解算器中提供该文件。
如果解决方案是非退化的,您可以执行类似
的操作 x(j)>0 => basic
x(j)=0 => non-basic
s(i)>0 => slack is basic
s(i)=0 => slack is non-basic
但是如果解决方案是退化的,我们有一些基本的变量/松弛值为零。