建模实战|第二期:快速掌握ortools求解VRPTW数学模型(附python代码)

经过上一篇无形忍者-禁忌搜索算法求解带时间窗的车辆路径规划问题详解(附python代码)的介绍,我们对带时间窗的车辆路径问题(VRPTW问题)已经有了一定的了解。另外经过这一篇无形忍者-OR-Tools-VRPTW带时间窗的车辆路径问题 的介绍我们对ortools求解器也有了一定的了解,这篇文章是使用ortools的自带库来解决VRPTW问题的。

但是实际工作中遇到的VRPTW问题更复杂,比如约束更多,或者是多目标的。这时候使用ortools中解决车辆路线的自带库会有一定的局限性。所以,本次我们尝试用ortools中的CP-SAT求解器来自行建模求解。接下来,我们先复习一下之前的介绍。

1.什么是VRPTW?

VRPTW(Vehicle Routing Problem with Time Windows,带时间窗的车辆路径问题)是一种经典的组合优化问题,是基于VRP(Vehicle Routing Problem,车辆路径问题)的扩展。在VRPTW中,除了考虑车辆如何有效地访问一组客户点以最小化总行驶成本外,还必须满足每个客户点的时间窗约束。

在VRPTW中,问题的目标是找到一组车辆的最佳路径,以便在满足以下条件的情况下最小化总成本:

①每辆车必须从仓库出发,最终返回仓库;

②每个客户只被1辆车服务;

③每辆车的载重不超过总容量Q;

④每辆车的总时间不超过Dk;

⑤车辆需要在时间窗[a_i,b_i]  内服务客户i,并且需要在[a_0,b_0] 时间窗内返回仓库点

因此,VRPTW需要考虑更多约束条件和限制,使得问题更具挑战性。

2.VRPTW问题建模

2.1问题背景

VRPTW 问题是不仅考虑CVRP的所有约束,还需要考虑时间窗约束,也就是每个顾客对应一个时间窗[a_i,b_i] ,其中 和a_ib_i 分别代表该点的最早到达时间和最晚到达时间。通过下面介绍的参数说明和决策变量,结合参考文献(Desaulniers et al.,2006),我们将给出VRPTW 问题的标准模型

2.2参数说明

2.3决策变量

2.4目标函数

2.5约束条件

  • 约束1~4分别约束如下:每个客户只被1辆车服务;每辆车必须从仓库出发;经过一个点就离开那个点;车辆最终返回仓库,其中点n+1是仓库点的一个备份,是为了方便实现。

  • 约束5为车辆的容量约束

  • 约束6~7是时间窗约束,分别约束如下:车辆到达每个顾客点的时间均在时间窗内;

 3.部分python代码

# -*- coding: utf-8 -*-#
# 作者: 无形忍者
# 时间: 2024/3/18 13:14
# 描述: Python调用ortools求解VRPTW数学模型
import math
import re
import time

import matplotlib.pyplot as plt
from ortools.sat.python import cp_model


class InputData:
    customer_num = 0
    node_num = 0
    vehicle_num = 0
    capacity = 0
    cor_x = []
    cor_y 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值