运筹学经典问题(八):CVRP和VRP-TW

文章目录

  • 问题描述
  • 问题建模
    • 决策变量
    • 数学建模
    • 基于容量的消除子环的约束 (load-based SECs)
  • CVRP完整的数学模型
  • 加上时间窗限制的CVRP

问题描述

给定一个图,图上的点代表客户,边代表客户之间的路线,边的权重代表客户之间的距离,点上的数字代表每个用户的需求量。
在这里插入图片描述

数学符号表示如下:

在这里插入图片描述

本文讨论的问题背景:

  • 用户需求已知,且被一辆车满足(不要拆开);
  • m m m辆车,且有相同的最大载量 L L L
  • 路网络是对称的(往返距离一样,不考虑上下坡之类的问题);
  • 要么取货要么送货;
  • 1个仓库,而且车的路线 T T T要是闭环的(最后要回到仓库);
  • 只考虑1个规划周期;
  • 目标是最小化车辆的行驶距离
  • 点0代表仓库。

问题建模

决策变量

在这里插入图片描述

数学建模

疑问:这种建模方式怎么知道每辆车的路线?
会有图上的哪些边被选中,形成 m m m个环,就知道啦!

目标函数:最小化行驶距离

m a x ∑ i , j ∈ V , i ≠ j x i j ∗ c i j max \sum_{i,j \in V, i \neq j}x_{ij}*c_{ij} maxi,jV,i=jxijcij

约束1:车辆从每个客户出发一次

∑ j ∈ V , i ≠ j x i j = 1 , ∀ i ∈ V − { 0 } \sum_{j \in V, i \neq j}x_{ij} = 1, \forall i \in V-\{0\} jV,i=jxij=1,iV{0}

约束2:车辆进入每个客户一次

∑ j ∈ V , i ≠ j x j i = 1 , ∀ i ∈ V − { 0 } \sum_{j \in V, i \neq j}x_{ji} = 1, \forall i \in V-\{0\} jV,i=jxji=1,iV{0}

约束3:最多用 m m m辆车

∑ j ∈ V − { 0 } x 0 j ≤ m \sum_{j \in V-\{0\}}x_{0j} \leq m jV{0}x0jm

如果只是上面的模型,可能会出现下图这种解,右下角这个环没有包含仓库!因此,我们需要一个约束去消除这种不包含仓库的子环。此外,上面的约束也没有约束车辆的容量限制!这也是VRP建模的一个略难的约束。
在这里插入图片描述

基于容量的消除子环的约束 (load-based SECs)

学术上称为Sub-tour-elimination constraints (SECs),该约束需要保证:

1. 每个环路不超过车辆最大容量;
2. 每个环路都包含仓库。

新引入一个变量:
u i u_i ui: 假设我们的问题是车辆去客户那里取货, u i u_i ui表示车辆到达客户点 i i i时的载量, ∀ i ∈ V \forall i \in V iV

因此有如下约束:

如果我们选择了 ( i , j ) (i, j) (i,j)这条连边,那么车辆到达客户 i i i时的容量,加上用户 i i i寄货的重量,要为车辆到达客户 j j j时的容量。逻辑上是相等的,但是我理解是为了刻画这个等式的成立是基于 ( i , j ) (i, j) (i,j)这条连边被选择,所以描述成了下面的 ≤ \leq 的形式。

u i + b i ≤ u j + ( 1 − x i j ) L , ∀ i , j ∈ V − 0 , i ≠ j u_i + b_i \leq u_j + (1-x_{ij})L, \forall i,j \in V -{0},i \neq j ui+biuj+(1xij)L,i,jV0,i=j

但是这个约束并没有刻画车辆的容量限制?

应该还要加一个:
u i ≤ L , ∀ i ∈ V u_i \leq L, \forall i \in V uiLiV

CVRP完整的数学模型

在这里插入图片描述

加上时间窗限制的CVRP

假设某些客户只想在特定时间段被服务,那么在上述问题的基础上,我们需要引入如下新的常量定义:
在这里插入图片描述

同时,我们需要引入一个新的决策变量:
a i a_i ai:到达客户 i i i时的时间, ∀ i ∈ V \forall i \in V iV

新增的约束包括:

1. 定义到达第一个客户的时间:

t 0 j x i j ≤ a j , ∀ j ∈ V t_{0j}x_{ij} \leq a_j, \forall j \in V t0jxijaj,jV

2. 约束两个连续访问的用户的时间:访问用户 i i i的时间+用户 i i i被服务的时间+从 i i i j j j的形式时间 = 访问用户 j j j的时间

a i + s i + t i j ≤ a j + ( 1 − x i j ) T , ∀ i , j ∈ V − 0 , i ≠ j a_i + s_i + t_{ij} \leq a_j + (1-x_{ij})T, \forall i,j \in V-0, i \neq j ai+si+tijaj+(1xij)Ti,jV0i=j

3. 约束每个用户被访问的时间在指定时间窗内:
w i s ≤ a i , ∀ i ∈ V − 0 w_i^s \leq a_i, \forall i \in V-0 wisai,iV0
a i + s i ≤ w i e , ∀ j ∈ V − 0 a_i + s_i \leq w_i^e, \forall j \in V-0 ai+siwie,jV0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/508524.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

css-盒子阴影

1.box-shadow: 10px 20px 10px 10px blue; 参数对应顺序:上下,左右 ,模糊程度,颜色 ,阴影大小 2.box-shadow: 10px 20px 10px 20px blue,-10px -20px 10px 50px red; 负号就是相反方向 支持多个阴影 在后面加逗号 3…

128:忆往昔,迎春来

机缘 时间真的是过得好快啊,128,距离我的第一篇博客已经128天了,从大一上的冬天,到大一下的春夏,从一个初入大学的新人,到一个开始思考未来的新人。我开始不断更新博客,开始不断吸收知识&#…

OpenHarmony分布式五子棋-使用Canvas组件 实现棋盘、棋子的绘制

介绍 五子棋是一款比较流行的棋类游戏,此游戏使用分布式数据管理功能开发完成的。 本示例使用Canvas组件 实现棋盘、棋子的绘制,使用分布式数据管理 实现两台设备间数据的同步。 本示例使用分布式设备管理能力接口ohos.distributedDeviceManager。 分…

网络原理 - HTTP / HTTPS(1)——http请求

目录 一、认识HTTP协议 理解 应用层协议 二、fiddler的安装以及介绍 1、fiddler的安装 2、fiddler的介绍 三、HTTP 报文格式 1、http的请求 2、http的响应 五、认识URL 六、关于URL encode 一、认识HTTP协议 HTTP 全称为:“超文本传输协议”,是…

MySQL 连接池的实现

池化技术 池化技术能够减少资源对象的创建次数,提高程序的响应性能,特别是在高并发下这种提高更明显。共同特征 对象创建时间长。对象创建需要大量资源。对象创建后可被重复使用。 数据库连接池 数据库连接池(Connection pooling&#xff…

【JAVA】postman import certificates in project 导入证书pfx

1. 打开这个按钮 2. File ->Settings 3. 打开“certificates”, Add certificates 添加证书 4. 输入证书地址,然后选择证书文件pfx , 输入证书密码。点击添加就可以了。 特别提醒: 推荐本地自己证书验证软件,“KeyStore” 这个软件可以…

SpringMVC --- 老杜

1、什么是SpringMVC? SpringMVC是一个基于Java实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的及部分,…

Java的Object类和Objects类和包装类和StringBuilder类和StringJoiner的简单API

Object类: public String toString(); Returns a string representation of the object. 基本作用:返回对象的字符串表示形式 存在的意义:让子类重写,以便返回子类对象的内容 public class student {private String name;private…

C++入门(以c为基础)——学习笔记2

1.引用 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空 间。在语法层面,我们认为它和它引用的变量共用同一块内存空间。 可以取多个别名,也可以给别名取别名。 b/c/d本质都是别名&#…

基于深度学习的端到端自动驾驶的最新进展:调研综述

基于深度学习的端到端自动驾驶的最新进展:调研综述 附赠自动驾驶学习资料和量产经验:链接 论文链接:https://arxiv.org/pdf/2307.04370.pdf 调研链接:https://github.com/Pranav-chib/ 摘要 本文介绍了基于深度学习的端到端自…

QT-飞机水平仪图标

QT-飞机水平仪图标 一、演示效果二、关键程序三、下载链接 一、演示效果 二、关键程序 #include <stdio.h> #include <stdlib.h> #include <string.h>#include <QtCore> #include <QtGui> #include <QDebug> #include <QTableWidget&g…

百度网站收录提交入口

百度网站收录提交入口 在网站刚建立或者更新内容后&#xff0c;及时将网站提交给搜索引擎是提高网站曝光和获取流量的重要步骤之一。百度作为中国最大的搜索引擎之一&#xff0c;网站在百度中的收录情况尤为重要。下面介绍一下如何通过百度的网站收录提交入口提交网站。 1. 百…

游戏引擎中的粒子系统

一、粒子基础 粒子系统里有各种发射器&#xff08;emitter&#xff09;&#xff0c;发射器发射粒子&#xff08;particle&#xff09;。 粒子是拥有位置、速度、大小尺寸、颜色和生命周期的3D模型。 粒子的生命周期中&#xff0c;包含产生&#xff08;Spawn&#xff09;、与环…

08.类型转换、深浅拷贝

08.类型转换、深浅拷贝 01.类型转换1.1 int()1.2 float1.3 str()1.4 eval()1.5 list() 02.深浅拷贝2.1 赋值2.2 浅拷贝&#xff08;数据半共享&#xff09;2.3 深拷贝&#xff08;数据完全不共享&#xff09; 03.可变对象04.不可变对象 01.类型转换 02.深浅拷贝 03.可变对象 04…

自定义 Unity Scene 的界面工具

介绍 文档中会进行SceneView的自定义扩展&#xff0c;实现显示常驻GUI和添加自定义叠加层&#xff08;Custom Overlay&#xff09;。 最近项目开发用回了原生的Unity UI相关内容。对于之前常用的FairyGUI来说&#xff0c;原生的UGUI对于UI同学来讲有些不太方便。再加上这次会…

【STM32嵌入式系统设计与开发】——14PWM(pwm脉宽输入应用)

这里写目录标题 一、任务描述二、任务实施1、WWDG工程文件夹创建2、函数编辑&#xff08;1&#xff09;主函数编辑&#xff08;2&#xff09;USART1初始化函数(usart1_init())&#xff08;3&#xff09;USART数据发送函数&#xff08; USART1_Send_Data&#xff08;&#xff09…

【随笔】Git -- 高级命令(中篇)(七)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

【Linux】ubuntu/centos8安装zsh终端

本文首发于 ❄️慕雪的寒舍 根据这篇知乎文章进行 https://zhuanlan.zhihu.com/p/514636147 1.安装zsh 先安装zsh并设置为默认的终端 # ubuntu sudo apt install zsh # centos sudo yum install zsh util-linux-user # 通用 chsh -s /bin/zsh如果centos下找不到chsh命令&am…

【优化算法】VMD分解算法的16种优化,对K和alpha参数寻优,附MATLAB代码

在上一篇文章中&#xff0c;我们介绍了优化算法的基本原理和一些常见的生物启发式算法。另外我们封装了一个16合1的寻优函数。 不过在上一篇中&#xff0c;我们举了一个简单的数值模型作为适应度函数的演示案例&#xff0c;然而在实际的研究中&#xff0c;适应度函数往往要复杂…

iOS移动应用实时查看运行日志的最佳实践

目录 一、设备连接 二、使用克魔助手查看日志 三、过滤我们自己App的日志 &#x1f4dd; 摘要&#xff1a; 本文介绍了如何在iOS iPhone设备上实时查看输出在console控制台的日志。通过克魔助手工具&#xff0c;我们可以连接手机并方便地筛选我们自己App的日志。 &#x1f4…