Gurobi Python 关于车辆路径问题的问题

问题描述

我有一个通过线性规划解决的车辆路径问题,但我对它的约束感到困惑(参见图 1 中的模型)。模型中,u和x为决策变量,我们设置节点0为仓库,节点1到n为客户。约束 1 和 2 表示进出 CUSTOMER 节点只能有一条边。但是,当我使用 Gurobi 优化器来解决它时,我发现该解决方案始终包含仓库(节点 0)(参见图 2 中的解决方案)。即使我将 depot 设置在一个非常远的位置(图 3&4),depot 仍然在解决方案中。理论上,为了最小化目标函数,如果没有关于进出库的边的约束,那么 x_0i 和 x_i0 应该始终为 0。关于库的约束可以像 sum(x_i0 >= 1),但没有模型中的此类约束。

这是用于添加约束的代码

mdl.addConstrs(   # mdl is the name of the model
    quicksum(x[i,j] for j in V if j != i) == 1 for i in N)  # only one edge into customer node i
mdl.addConstrs(
    quicksum(x[i,j] for i in V if i != j) == 1 for j in N)  # only one edge out of customer node i
mdl.addConstrs((x[i,j] == 1) >> (u[i] + q[i] == u[j]) for i,j in A if i != 0 and j != 0)
mdl.addConstrs(u[i] >= q[i] for i in N)
mdl.addConstrs(u[i] <= Q for i in N)

现在我确信我的代码没有问题(如果有人想检查它,我已经把它放在我的 Github 上:https://github.com/KaiyuWei/VRP-problem-by-Gurobi--Python),那么谁能解释一下为什么总是包含该软件仓库的原因?谢谢!

figure 1

figure 2

figure 3

figure 4

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)