2

CLP(FD) 允许用户为每个想要的整数变量设置域,因此它能够求解方程。
到现在为止还挺好。

但是,您不能在 CLP(R) 或类似语言中做同样的事情(您只能做简单的推理)。而且不难理解为什么:一个数字的小数部分可能有一个几乎无限的区域,被实现限制所限制。这意味着搜索空间将太大而无法实际用于处理浮点数(如整数)的求解器。因此,用户的任务是在 CLP(R) 中编写生成器并在需要使用数字实例化变量的地方设置约束保护(如果无法进行简单推断)。

所以我的问题是:在实数上是否有任何类似 CLP(FD) 的语言?我认为它可以通过使用数字舍入、搜索和遵循增量近似来实现。

4

2 回答 2

1

至少有一些主要的 CLP(FD) 求解器支持真实(决策)变量:

(前三个在 MiniZinc 中也支持 var float。)

于 2014-07-11T17:13:44.243 回答
0

你的问题的答案是肯定的。有专门用于浮点数的基于约束的求解器。我没有求解器列表,但我知道 ibex http://www.ibex-lib.org是一个允许使用浮点数的库。您还应该看看 SMT-Solvers 实现 Real-Theory ( http://smtlib.cs.uiowa.edu/solvers.shtml )。

于 2014-07-11T14:57:38.840 回答