我想在Matlab中求解一个线性不等式系统,其中未知数为x(1), x(2), x(3), x(4)
。我想要整个解决方案x(1), x(2), x(3), x(4)
。因此,我无法使用linprog
,因为它只给我一个可行点。
澄清:此问题https://stackoverflow.com/questions/37258835/how-to-set-the-objective-function-when-using-linprog-in-matlab-to-solve-a-system与linprogr
有关,但只提供了一种可能的解决方案。在这里,我要问如何找到整套解决方案。
这是一组不平等。有什么建议吗?
5x(1)+3x(2)+3x(3)+5x(4)<5
-5x(1)-3x(2)-3x(3)-5x(4)<-3
-x(2)-x(3)<0
x(2)+x(3)<1
-x(1)-x(4)<0
x(1)+x(4)<1
-3x(3)-5x(4)<-1
3x(3)+5x(4)>3
x(3)<1
-x(3)<0
x(4)<1
-x(4)<0
-5x(1)-3x(2)<0
5x(1)+3x(2)<2
x(2)<1
-x(2)<0
x(1)<1
-x(1)<0
答案 0 :(得分:1)
对于连续变量,我们基本上有零个,一个或无限多个解。当然,显示所有解决方案是不可能的。然而,线性规划中有一个角点概念,我们可以列举这些点,尽管需要付出很多努力。
以下是可以执行此操作的工具的一些链接:
另一种方法是使用额外的二元变量枚举最佳基数。 (你有一个零目标,所以这变得有效:枚举所有可行的LP基础)。这种方法使问题成为MIP。我们可以通过以下算法来枚举:
这是link,它说明了这种方法来枚举(连续)LP问题的所有最佳基础。
请注意,枚举不等式系统的所有整数解决方案更容易。许多约束编程工具会自动为您完成。另外我们可以使用上面描述的“切割平面”技术。