问题标签 [constraint-programming]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 约束求解集合中的差异
我有一组五组元组(int myInt,float myFloat)
我希望统一缩放每个集合,以便它:
在所有集合中的所有集合到集合的元组配对之间,最大化 myInts 对和 myFloats 对之间的差值接近 0 的发生次数。
然后它缩放所有集合以最小化那些近连音配对的距离
所以输入集
[ (24, .56), (0, .55) ]
[ (22, .37), (23, .59) ]
两个连音彼此靠近,它们应该缩放以最小化它们的浮点值的差异,忽略离群的连音。
在实际使用中,每组有 20 个连音,在 2 到 20 组之间,但通常在 4 个左右。
我是约束求解的新手,但我想到的方法是。
给每个集合一个随机缩放,然后向上或向下调整每个集合以最大化接近 0 的 myFloats 的数量。使用不同的随机值重复多次。
这类问题有什么已知的方法吗?我在正确的轨道上吗?
prolog - 如何将变量域定义为非连续范围
我从 SICStus Prolog 开始,我想定义一个变量,比如说StartingTimes
,让域由 list 定义[1, 5, 10]
我怎样才能在 SICStus Prolog 中做到这一点?
我会做类似的事情:
但这太可怕了。必须有一个简单的方法来做到这一点。也许fd_sets
?
注意:我试图找出它是如何在手册中完成的,但是序言使用了常用词,而且很难使用谷歌来做到这一点。
prolog - 如何将域变量添加到 global_cardinality?
我正在尝试为global_cardinality
我的程序添加一个约束,并且在SICStus Prolog 的手册中写道:
global_cardinality(+Xs,+Vals)
global_cardinality(+Xs,+Vals,+Options)
其中 Xs = [X1,...,Xd] 是整数或域变量的列表,Vals = [K1-V1,...,Kn-Vn] 是对的列表,其中每个键 Ki 都是唯一的整数Vi 是域变量或整数。如果 Xs 的每个元素都等于某个键,并且对于每对 Ki-Vi,则 Xs 的 Vi 元素恰好等于 Ki。
现在我可以写:
说这个号码1
会被使用两次。该号码2
将只使用一次。
但我想说的是,1
将使用该数字:once, twice or three times
根据手册,我需要一个域变量,但正确的语法是什么?
c++ - 涉及向量(数组)的快速简单的约束规划
我有很多很多向量,我需要使用一些非常基本的一阶逻辑来检查数字的重复项。
我可以使用十字路口,但事实证明这太慢了。我想我可以把它变成一个逐位问题。整组整数是已知的,每个向量/数组都可以表示为一个位集,但我只能找到一半的解决方案。
我目前使用循环和矢量交集,但事实证明它对于我需要检查的问题数量来说太慢了。
举一个简单的例子,给定:
我要确定的问题始终是更大的格式:
我需要验证以上是否可能没有重复。
有没有一种比 900 万次循环更快的检查向量/数组的方法?约束库是唯一的选择吗?
为了澄清:
容器是 std::vector。
向量包含任何整数。
我需要逐个问题地检查它们以识别完整的整数集。
使用指定的条件逻辑来选择整个向量,是否会出现重复?使用的条件运算符总是只有“AND”和“OR”。我列出的问题是一个简化版本,但这实际上就是它的全部内容。它只是大小不同。
我不太关心的输出......它可能是一个布尔值,另一个潜在重复的向量等。我试图找到适合这项工作的工具,而不是打捞。
在我目前的设置中,我将通过分析像 A 这样的强制项目并删除它与...相交的任何东西来解决这个问题(在这种情况下,N...然后我会再次循环,并对 M 执行相同的过程,这现在是强制选择,删除 E,留下 F。
prolog - 增加 ECLiPSe/prolog/fd 中的堆栈大小
我们必须在几个有约束的环境(ECLiPSe ic、ECLiPSe fd、SWI-prolog、GNU-prolog、NaxosSolver 等)中解决 prolog 中的骗子问题。我已经使用了尾递归(我认为)和我能想到的尽可能多的削减(这样我猜分辨率树没有变得尽可能大。如果需要,我可以发布我的代码。
当数据数变为 10000-50000 时,我在 ECLiPSe 中的 fd 和 ic 中收到堆栈溢出,在 SWI-prolog 中,程序永远运行。所以我想增加 ECLiPSe 中堆栈的大小,但我看不到如何。我试图在我的代码的第一行写这个:
,但它说超出范围。
看看 eclipse 说了什么,这可能会有所帮助: *尽管进行了垃圾收集,但全局/跟踪堆栈的溢出!您可以使用“-g kBytes”(GLOBALSIZE)选项来获得更大的堆栈。峰值大小为:全局堆栈 128832 KB,跟踪堆栈 5312 KB
binding - Prolog中变量的几个绑定选项
我想以这样的方式将变量绑定到几个原子,以便稍后它将与这些原子之一统一。直觉上它应该像这样工作(假设 ; 是可能值的析取):
如您所见,这个想法接近类型层次结构的概念。所以,我想知道是否有一些内置的(元)谓词可以很容易地做这样的事情,或者是否有一些常用的方法使用某种数据结构来建模,或者我必须构建这种谓词从头开始?
constraint-programming - SMT-Lib标准是否支持理论组合?
我知道有几部作品试图处理 SMT 中的理论组合。但是,SMT-Lib 2.0 语言 ( http://smtlib.cs.uiowa.edu/docs.html ) 没有说明这一点。我的问题是它是否支持这一点,以及什么 Solvers 提供了同时处理多种理论的能力?
谢谢,
schedule - 大型会议调度后勤
我要安排一个会议,每天有 6 节课,10 多位讲师,为期 14 天。有些讲师有些天有空,有些则没有,有些更喜欢特定的日期或课程,有些天他们休息
我用谷歌搜索了很多,但找不到好的材料来了解它。我想从头开始学习它,这意味着如果我需要学习约束编程,这对我来说没问题,因为我没有任何相关背景。
我正在寻找学习材料、书籍和任何关于此的建议。在 stackoverflow 的某个地方,我读过遗传算法,它对它有好处,但没有人确定它。因为这是我必须面对的最简单的话题之一,而且我将来会面临更难的解决方案,我必须从我的经理那里学习基本的新任务,我必须面对它。
如果您建议任何书籍、网站、论文和资源来学习或与我分享,我将不胜感激
java - Simple constraint programming solver
I'm trying to get familiar with constraint programming.
All documentation/videos I've seen so far just contain description of top-level concepts and code examples based on CP-libraries utilization (like Choko, Gecode, JaCoP etc).
I'd like to implement at least something simple in Java without any libraries.
Are there any resources where I can find working code in Java/C#/C++/Python which implements main CP ideas? (at least "send more money" problem solution).
(or, maybe, if somebody can explain it here, it would be great).
math - 在eclipse clp中使用三角函数
我是 eclipse CLP 的新手,我想实现一个谓词,让所有角度都等同于特定的正弦函数,比如
我知道这个方案可能适用于变量的整数值;所以我需要一个也使用 CLP 的替代解决方案。