或工具:在最小成本流类别中添加约束?

问题描述

我正在尝试使用or-tools解决供应链网络流动问题。我的需求和供应节点具有电弧的能力和需求。我设法使用SolveMaxFlowWithMinCost()获得了最佳结果。

但是我正在尝试找到一种解决方案,其中每个需求节点只能由1个供应节点进行服务。无论如何,我可以将此约束添加到模型中吗?

解决方法

直觉的反应是,您不能对最低成本流添加任何约束,也不能期望任何公平性之类的属性。一旦这样做,就可以将复杂度从多项式(最小成本流)更改为NP完全。

您可以尝试使用整数求解器(MPSOlver,CP-SAT),但是性能会更差。

您还可以尝试对最小成本流的输出进行后处理以修复分配。

最后,您可以使用最小成本流分配来限制NP解算器的模型(例如,仅保留出现在最小成本流中的弧)。