【问题标题】:How to write milp equation for this problem?如何为这个问题编写 milp 方程?
【发布时间】:2019-07-15 02:50:30
【问题描述】:

考虑经典的网络流问题,其中约束是一个顶点的流出量等于流入它的流入量的总和。考虑有一个更具体的约束,可以在边缘之间拆分流。

我有两个问题:

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

  2. 如何创建另一个方程来确定在汇节点中连接来自不同边缘的 x 个项目的成本(每个项目 2 个单位时间)?

【问题讨论】:

    标签: linear-programming mixed-integer-programming


    【解决方案1】:

    这是一个棘手的建模问题。让我们分部分来。

    考虑有一个更具体的约束,可以在边缘之间分割流

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

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

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

    接下来,您将需要另一个额外的整数变量集,比如说 p_i 和一个额外的约束

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

    如何创建另一个方程来确定在汇节点中连接来自不同边缘的 x 个项目的成本(每个项目 2 单位时间)?

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

    【讨论】:

    • 在我的问题中,每个弧都会发送多个项目,我认为 p_i 的值将给出到达节点 j 的弧数。在那种情况下:将 p_i 的值乘以每个项目的加入成本会将加入成本添加到节点 j?
    • 在这种情况下,您将有一个多商品流(可以用变量y_ij^k表示,这样每个k代表一个项目)。然后,您需要将索引 k 添加到变量 z 并对变量 ik 的最后一个方程执行求和。 -- 这是一个解决方案,但我不能 100% 确定这一点,因为我没有对您的问题或模型的完整描述
    猜你喜欢
    • 1970-01-01
    • 2019-11-26
    • 1970-01-01
    • 2016-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    相关资源
    最近更新 更多