在Google OR工具中实现OR约束?

时间:2018-10-19 11:31:08

标签: linear-programming mixed-integer-programming or-tools

我正在尝试解决一个运输问题,它具有一个约束,使我能够指定卡车从某个来源到某个目的地应采取的补给量。

例如:

Source S1 has a supply of 40.
Source S2 has a supply of 40.
Source S3 has a supply of 20.
Destination D1 has a a demand of 40.

我希望能够做到这一点,以便由两个分别交付20个的供应商满足D1的需求。

在约束形式下,我认为应该是:

S1D1 = 0 OR 20
S2D1 = 0 OR 20
S3D1 = 0 or 20

S1D1 + S2D1 + S3D1 = 40

但是我不知道如何在Google OR工具中实现OR约束。 我认为我必须查看混合整数整数求解器,但找不到任何可以解决我的问题的示例或文档。

1 个答案:

答案 0 :(得分:0)

欧文,你是对的。

我使用了混合整数求解器,并使用了以下约束。

约束:

变量是一个整数,介于0和1之间(因此为1或0)。

20 S1D1 + 20 S2D1 + 20 S3D1 = 40

这是一个简化的示例,在我的问题中,我实际上有更多的目的地。 为了确保一个源没有提供更多的资源,使用了以下约束(以2个目标为例,目标2的需求为40,由一个源提供):

20 S1D1 + 40 S1D2 <= 40(对于所有来源均重复此操作)

感谢您的帮助。