具有时间窗口的车辆路线 minizinc 示例

问题描述 投票:0回答:1

我想用 minizinc 建模语言表达带有时间窗口的车辆路径问题(https://ir.cwi.nl/pub/2036),以便使用约束编程来解决它。

由于我对建模语言和约束编程总体来说是新手,所以我想知道是否有人已经用这种语言表达了这个问题。我找到了以下“vrp(无时间窗口)”的示例基准https://github.com/MiniZinc/minizinc-benchmarks/blob/master/vrp/vrp.mzn

如何修改模型以包含交付时间窗口?

constraint-programming minizinc
1个回答
1
投票

我修改了该模型以包含时间窗口。我删除了与容量相关的逻辑,因为我的情况不需要它。

基本上你需要添加这些约束:

    % Departure time constraints
constraint
    forall(i in 1..N, j in 1..N)(
        DepartureTimes[i] + TravelTimes[i, j] - DepartureTimes[j] <= (1 - x[i, j]) * 1000000
    );

    % Time windows constraints
constraint
    forall(i in 1..N)(
        TimeWindows[i, 1] <= DepartureTimes[i]
    );

constraint
    forall(i in 1..N)(
        DepartureTimes[i] <= TimeWindows[i, 2]
    );

这是完整的代码:https://github.com/jlhonora/vrp-minizinc

参考论文:Desrochers、Martin 等人。 “具有时间窗口的车辆路线:优化和近似。” 车辆路线:方法与研究 16 (1988): 65-84.

© www.soinside.com 2019 - 2024. All rights reserved.