【发布时间】:2021-01-21 06:37:31
【问题描述】:
我做了什么
首先,这可能不是最好的论坛,如果是这样,请道歉。我正在创建一个 Pyomo 模型,我在其中创建了一个二进制矩阵,如下所示:
model.binMat = Var(range(6),range(6),domain=Binary)
我的模型求解这个矩阵,典型输出如下:
binaryMatrix = [[0 1 0 1 0 0]
[1 0 1 0 0 0]
[0 1 0 0 0 1]
[1 0 0 0 1 0]
[0 0 0 1 0 1]
[0 0 1 0 1 0]]
结果被解释为 1 的坐标,即 (1,2),(1,4),(2,1),(2,3),(3,2),(3,6),本例中为 (4,1),(4,5),(5,4),(5,6),(6,3),(6,5)。
然后根据连接元素的组来考虑。在这种情况下,只有 1 个唯一组:(1,2,3,4,5,6)。
我需要什么
我希望通过引用 model.binMat 中的值来创建一个新的约束,以仅允许 2 个大小相同的唯一组。
这些最终组的示例如下:(1,5,6) 和 (2,3,4)。对应的坐标可以是:(1,5),(1,6),(2,3),(2,4),(3,2),(3,4),(4,2), (4,3),(5,1),(5,6),(6,1),(6,5)
我目前正在尝试使用 Pyomo 集来解决这个问题,但由于这些对我来说是新的,所以我没有运气。
编辑
对于那些对相同问题的替代方法感兴趣的人,我也发布了这个here
【问题讨论】:
标签: python linear-programming pyomo