微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。