0

我正在尝试通过约束来解决运输问题的变体,这使我能够指定卡车应该从某个来源到某个目的地的补给量。

例如:

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.

我希望能够做到 D1 的需求由两个供应商满足,每个供应商提供 20 个。

在约束形式中,我认为这将是:

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

S1D1 + S2D1 + S3D1 = 40

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

4

1 回答 1

1

欧文你是对的。

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

约束:

变量是一个整数,介于 0 和 1 之间(所以它是 1 或 0)。

20 S1D1 + 20 S2D1 + 20 S3D1 = 40

这是一个简化的例子,在我的问题中我实际上有更多的目的地。为了确保源提供的数量不超过它,使用了以下约束(以 2 个目的地为例,目的地 2 的需求为 40,由一次源提供):

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

谢谢你的帮助。

于 2018-10-25T19:33:04.587 回答