如何在Ortools中对变量进行排序?

2024-06-06 12:27:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用或工具解决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.

多谢各位


Tags: 工具thetofromorderelements解决方案cp
1条回答
网友
1楼 · 发布于 2024-06-06 12:27:41

根据斯特拉迪瓦里的建议

我将使用回路约束

从虚拟节点开始。从虚拟节点向每个变量添加一条弧。 在XI和XJ IFF XJ之间加一个弧大于席席,并且具有正确的间隙。 从每个节点向虚拟节点添加一条弧。 寻找可行的解决方案

如果要计算秩,请使用初始圆弧将达到的var的秩设置为0。使用每个弧将头部的秩设置为尾部的秩+1

相关问题 更多 >