我正在尝试解决一个运输问题,它具有一个约束,使我能够指定卡车从某个来源到某个目的地应采取的补给量。
例如:
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约束。 我认为我必须查看混合整数整数求解器,但找不到任何可以解决我的问题的示例或文档。
答案 0 :(得分:0)
欧文,你是对的。
我使用了混合整数求解器,并使用了以下约束。
约束:
变量是一个整数,介于0和1之间(因此为1或0)。
20 S1D1 + 20 S2D1 + 20 S3D1 = 40
这是一个简化的示例,在我的问题中,我实际上有更多的目的地。 为了确保一个源没有提供更多的资源,使用了以下约束(以2个目标为例,目标2的需求为40,由一个源提供):
20 S1D1 + 40 S1D2 <= 40(对于所有来源均重复此操作)
感谢您的帮助。