constraint-programming - 使用累积函数进行矩形放置
问题描述
我有一个矩形放置问题。我想要的是将大小 x x y 的矩形放入另一个矩形而不重叠。我最终想要的是每个矩形的起点。
我为它编写了这部分代码,逻辑是它会沿着函数的高度和宽度累积检查 x 和 y 轴。但是,当我运行它时,它适用于一些实例,但不适用于其他实例。因此,我发布了一个特定的实例,它在这里给出了重复点,以询问问题是什么以及可以进行哪些更改。
谢谢
constraint cumulative(start, x, y, height);
constraint cumulative(starty, y, x, width);
解决方案
如果您添加diffn
约束框不重叠的约束,它应该可以工作,即
include(globals.mzn);
....
constraint diffn(start,starty,x,y);
...
有关. _ _diffn
10752 解决方案之一是:
15 15
10
1: 3 3 0 9
2: 3 4 12 0
3: 3 5 12 10
4: 3 6 12 4
5: 3 7 9 8
6: 3 8 9 0
7: 3 9 0 0
8: 3 12 3 0
9: 3 15 6 0
10: 6 3 0 12
我在纸上检查了这是一个正确的解决方案,即没有重叠并且 15x15 框中的所有单元格都被覆盖。
推荐阅读
- exception - 从redis缓存反序列化java.time.Instant期间出现异常
- npm - npm script onchange/watch 仅对实际更改的文件而不是文件夹中的所有文件运行命令
- javascript - 尝试检查 beforeinstallprompt 是否未定义
- css - 将您带到水平滚动网站中的锚点的按钮
- java - PicoCli 相互依赖选项问题(解析值)
- javascript - 为什么for循环内的全局变量不会改变值?Javascript
- julia - 如何让 Julia CuArrays 使用下载的 CUDA 10.2 而不是下载新副本?
- powershell - 在通过管道之前对数据进行批处理
- r - 如何一次应用多个行名
- python - 训练图像准确率高,但测试准确率差