【发布时间】:2016-06-07 14:32:17
【问题描述】:
我有一个线性问题,即找到满足所有约束的所有解决方案。 例如我的变量是 = [0.323, 0.123, 1.32, 6.3...] 是否可以获得例如按适应度(最大化/最小化)函数排序的前 100 个解决方案?
【问题讨论】:
标签: linear-programming constraint-programming or-tools
我有一个线性问题,即找到满足所有约束的所有解决方案。 例如我的变量是 = [0.323, 0.123, 1.32, 6.3...] 是否可以获得例如按适应度(最大化/最小化)函数排序的前 100 个解决方案?
【问题讨论】:
标签: linear-programming constraint-programming or-tools
在连续 LP 中枚举不同的解决方案是一个困难的概念。例如。考虑max x, s.t. x <= 1。显然x=1、x=0.99999 是解决方案,它们之间的无限数量的解决方案也是如此。我们可以列举“角落解决方案”(或基本解决方案)。有关示例,请参阅here。这种方案可以适应于找到按目标排序的前 100 个不同的角点。对于具有离散变量的模型,许多约束规划求解器将使您有可能找到许多解决方案。
【讨论】:
如果您可以按照您的建议定义适应度函数,那么您可能首先要求解最大化该函数的 LP。之后,您可以包含一个客观截止值,迫使您的第二个解决方案比第一个解决方案稍差。您可以通过在optimal value - epsilon 的右侧引入作为目标函数的切割来实现这一点。
当然,这不会为您提供所有(基本)解决方案,但您可能会发现哪些变量始终具有相同的值,或者不同解决方案之间存在多少差异。
【讨论】: