我遇到了一个线性问题,即找到满足所有约束条件的所有解决方案。 例如我的变量是= [0.323,0.123,1.32,6.3 ......] 是否有可能获得按健身(最大化/最小化)函数排序的前100个解决方案?
答案 0 :(得分:2)
在连续的LP中,列举不同的解决方案是一个困难的概念。例如。考虑max x, s.t. x <= 1
。显然x=1
,x=0.99999
是解决方案,中间有无数解决方案。我们可以列举“角落解决方案”(或基本解决方案)。有关示例,请参阅here。可以调整这样的方案以找到按目标排序的前100个不同角点。对于具有离散变量的模型,许多约束编程求解器将为您提供找到许多解决方案的可能性。
答案 1 :(得分:0)
如果您可以按照建议定义适应度函数,那么您可能首先要解决最大化此功能的LP。之后,您可以包含一个客观截止值,迫使您的第二个解决方案比第一个解决方案略差。您可以通过在optimal value - epsilon
的右侧引入作为目标函数的剪切来实现此目的。
当然,这将不为您提供所有(基本)解决方案,但您可能会发现哪些变量始终处于相同值或不同解决方案之间存在多少差异。