【发布时间】:2014-01-12 04:15:18
【问题描述】:
我有一组想要解决的整数约束。约束可以由大于、小于或等于某个常数的变量的添加组成。
例子:
A >= 20
A <= 30
B <= 10
A + B <= 25
...
会有数百个这样的简单约束,而在实践中,常量的值要大得多(数十万)。
但是,我不只是想要 解决这些限制:我想要来自解决方案空间的随机 解决方案。这并不意味着每个解决方案都必须具有相等的概率(我认为不枚举它们是不可能的?)但我想要的是,例如对于变量 A,解决方案通常不是 20 或 30,而是介于两者之间的值同样可能(甚至更有可能)被选中。
什么样的技术适合这类问题?我不知道该去哪里找,因为大多数算法都专注于寻找最佳或快速或最小的解决方案,而不是随机的解决方案。
【问题讨论】:
-
一种(可能效率极低)的方法是trial and error:在空间中生成一个随机点并测试它是否满足所有约束。重复直到一个点过去。
-
约束也是线性的吗?是否有任何项是两个或多个变量的乘积?
-
问题域是什么?它可能会为如何解决问题提供一些见解。
-
@TedHopp:那会非常昂贵。某种引导式随机搜索可能是一种选择。
-
只有当可行区域的体积与生成随机试验的体积相比非常小时,试验和错误才会“非常昂贵”。这完全取决于约束的性质以及您如何限制试用生成空间。这带来了另一个反复试验的问题:可行区域是否有界?
标签: algorithm random linear-programming constraint-programming