linear-programming - 在 Google OR 工具中实现 OR 约束?
问题描述
我正在尝试通过约束来解决运输问题的变体,这使我能够指定卡车应该从某个来源到某个目的地的补给量。
例如:
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 约束。我想我必须查看一个混合整数整数求解器,但我找不到任何可以解决我的问题的示例或文档。
解决方案
欧文你是对的。
我使用了混合整数求解器并使用了以下约束。
约束:
变量是一个整数,介于 0 和 1 之间(所以它是 1 或 0)。
20 S1D1 + 20 S2D1 + 20 S3D1 = 40
这是一个简化的例子,在我的问题中我实际上有更多的目的地。为了确保源提供的数量不超过它,使用了以下约束(以 2 个目的地为例,目的地 2 的需求为 40,由一次源提供):
20 S1D1 + 40 S1D2 <= 40(对所有来源重复此操作)
谢谢你的帮助。
推荐阅读
- javascript - 克隆项目的索引文件未显示在本地主机中
- python - 重塑神经网络层输出,使其变得像一个时间序列
- javascript - 我有 3 个 addeventlister,每个调用一个按钮,如何将它们更改为 1 个功能
- javascript - 如何从 html 正文内容中提取字符串并添加为 javascript 变量
- django - 在python中获取CHOICES的显示值
- c++ - 如何将不能被2整除的数组中的数字添加元素
- python-3.x - 只保留一个数据帧的行,其某些列的值也显示在另一个数据帧中
- php - 检查第二个字符串php中的第一个字符串的字符是否输出不一致
- java - 更新没有空值的响应
- php - 如何使用 PHP 从 mysql 下载多个文档(word、ppt、pdf)?