如何为这个问题写milp方程?

时间:2019-07-15 02:50:30

标签: linear-programming mixed-integer-programming

考虑经典的网络流量问题,其中的约束条件是,从顶点流出的流量等于流入该流量的总和。考虑在流可以在边缘之间分配的情况下具有更具体的约束。

我有两个问题:

  1. 如何使用决策变量来标识节点j正在从多个边接收项目?

  2. 如何创建另一个方程式来确定从x汇聚节点不同边缘加入x数量的物品所需的成本(每件物品2个时间单位)?

1 个答案:

答案 0 :(得分:0)

这是一个棘手的建模问题。让我们按部就班。

  

考虑具有更具体的约束条件,即可以在边缘之间分配流

我在这里假设您有一个经典的流量约束模型,将其建模为实变量集 y_ij 。因此,可以在两个或更多个弧之间分配流。

  

如何使用决策变量来标识节点j正在接收来自多个边的项目?

您需要创建一个附加的二进制变量 z_ij 来表示您的流程。您还必须创建以下约束:

z_ij >= y_ij

接下来,您将需要另一个附加的整数变量集,例如 p_i 和一个附加约束

enter image description here

然后, p_i 将在节点 j 中存储传入弧的数量,这些弧用于发送流。由于您将尝试最小化连接弧的成本(我认为),因此需要使用 <=

  

如何创建另一个等式来确定从汇聚节点的不同边缘加入x个项目的成本(每个项目2个时间单位)?

为此,您可以使用 p_i 的值乘以加入流程的预定义成本。