如何在或工具中对变量排序?

oogrdqng  于 2021-09-08  发布在  Java
关注(0)|答案(1)|浏览(332)

我正在使用或工具解决cp问题。解算器给出了一个可行的解决方案,如下所示。这意味着:

X1=345, X2=437, ..., X6=1150, X7=716, X8=788...etc.

random_list=[345, 437, 801, 981, 1068, 1150, 716, 788, 860, 982, 1069, 1151, 717, 789, 861, 944, 1026, 1152, 718, 790, 862, 984, 1071, 1153, 719, 791, 863, 985, 1072, 1154, 354, 436, 622, 1073, 1155]

The adjacent elements' gap ranged from -880 to 364.

实际上,我希望获得如下所示的排序变量,并将约束设置为相邻元素的间距。例如,间隙应在10到50之间。那么,这样设置约束是否可行?

order_list=[345, 354, 436, 437, 622, 716, 717, 718, 719, 788, 789, 790, 791, 801, 860, 861, 862, 863, 944, 981, 982, 984, 985, 1026, 1068, 1069, 1071, 1072, 1073, 1150, 1151, 1152, 1153, 1154, 1155]

X1=345, X30=354, X31=436, X2=437,.... # the variables are not in order as definition. 

The adjacent elements' gap ranged from 1 to 185.

非常感谢。

ep6jt1vc

ep6jt1vc1#

根据斯特拉迪瓦里的建议,
我将使用回路约束。
从虚拟节点开始。从虚拟节点向每个变量添加一个弧。在XI和XJ IFF XJ之间添加一个弧大于席席,并且具有正确的间隙。从每个节点向虚拟节点添加一条弧。寻找可行的解决方案。
如果要计算秩,请使用初始弧将达到的var的秩设置为0。使用每个弧将头部的秩设置为尾部的秩+1。

相关问题