VRP and related algorithms for logistics distribution综述的笔记

选了些自己感兴趣的。

        车辆路径问题(VRP)是当今物流公司面临的最关键挑战之一。自1959年丹齐格和兰姆泽(1959年)介绍了卡车调度问题以来,研究人员一直在研究车辆路由和交付调度。它被认为是车辆路径问题(VRP)的范例,并且涉及从中央仓库到地理分散的客户的货物配送。 自那时以来,已经引入了影响该问题的几个因素,例如车辆容量的变化,与时间相关的限制,即由客户设置的时间窗口,以及涉及分配的多个仓库的存在。这些以及其他特征和要求,都被转化为问题的约束条件或定义问题的变量。这一挑战导致了一个复杂的问题,需要同时考虑多个标准和限制,包括每个客户的要求。无论如何,源自物流公司实际情况的变量和约束,都被研究人员转化为VRP变体。

 因此,下面分析的VRP变体与实际情况相关联。在大多数情况下,无论是在实践中还是在理论上,目标都是相同的,即最小化总配送成本同时保持配送服务水平高。 配送成本构成了产品最终销售价格的很大一部分,包括固定成本和变动成本。因此,公司需要减少这两种成本中的一种或两种,以实现更高的客户需求。固定成本主要源自司机的工资或车辆使用成本,不管是使用车辆还是服务的客户数量如何,都会给配送公司带来负担。另一方面,变动成本主要源自燃料成本或每条路线的行驶时间。因此,变动成本受到路线的长度和持续时间的影响。路线的长度和持续时间由路由实际问题中包含的限制和参数以及与不同VRP变体相关的决定。因此,首先需要定义一个实际情况的VRP变体,定义问题的公式,以及构成总成本的目标函数。所有这些因素将使得寻找最合适的优化方法成为可能,以最经济的方式解决问题。

 过去,车辆路由和调度的整个过程对于业务执行人员来说是困难的,因为几乎完全基于地图使用和负责人的经验知识。如今,随着计算机的使用,这一过程变得更加容易,使用车辆路由和调度软件,尽管主要挑战仍然存在,主要是由于需要管理的大量数据以及外部环境的不断增长的需求和要求。当然,这并不意味着对计划交付负责人的经验提出质疑。市场领导者的经验是每个计算机开发者依赖的基础,以便开发集成到路由软件中的高效算法。如今,物流公司面临的需求和挑战显然比以往任何时候都更加激烈,越来越需要使用先进的系统进行交付的路由和执行。

  在这个方向上,公司充分认识到不仅影响他们日常运营的许多变体和参数,而且算法也是至关重要的。基于这一前提,本文的主要目标首先是定义物流配送中最常见的VRP变体然后介绍用于解决特定变体的算法。在今天充满挑战且不断变化的环境中,算法对于物流公司至关重要。客户数量及其需求和要求不断增加,使用优化算法是实现有效客户服务和高效运营的关键组成部分。 所提出的研究认识到了标志着VRP变体和所提出算法的趋势,以及它们之间的相关性。具体而言,不同的VRP变体被讨论并分类为十六(16)种类别,这代表了物流配送中最常见的实际情况。具有相似特征的一些变体被分类并一起讨论在16个类别中的一个。接下来,利用系统性文献回顾介绍解决VRP变体的算法,并讨论VRP变体与各种算法之间的关系。据我们所知,没有其他论文尝试在这个分析水平上找到VRP变体和算法之间的相关性。其他有关VRP算法的文献回顾仅将它们分类为图1中呈现的高级别:精确、启发式和元启发式。我们的贡献在于我们将分析扩展到算法的更低级别的分类。因此,本文对物流行业的研究人员和从业者的贡献是重大的。Marinakis和Migdalas(2007年)是首次对VRP变体及其解决算法进行定性研究的人,为当前研究提供了良好的起点。这些VRP变体由Eksioglu等人(2009年)、Lahyani等人(2015年)和Braekers等人(2016年)的出版物中提出的其他变体进一步增强,这些变体要么在过去几年提出,要么在VRP中被认为是重要的。

        1.配送物流的VRP变体

        在这一部分中,分析了物流和配送公司在日常运营中面临的车辆路由和交付调度方面的大多数变体,以及这些变体与实际情况的关系。首先,车辆的容量构成了车辆路径问题的关键因素,因为它是实际配送案例中最受研究的因素(Kim等,2015年;Mańdziuk和Nejman,2015年),也是研究人员和从业者最先考虑的因素。容量形成了VRP的两个变体(1)容量限制的VRP(CVRP),在这种情况下,所有车辆都是相同的,具有相同的容量;(2)异构车队VRP(HFVRP),在这种情况下,存在多种类型的车辆,每种车辆由不同的容量、固定成本和变动成本定义(Prins,2009年)。在实际实践中,很少有公司拥有一致的车队。相反,为了有效地为客户服务,公司使用不同类型的车辆。小型车辆主要服务于城市中心的客户(最后一英里配送),而大型车辆主要服务于距离更远、需要更大订单量的客户和零售商。在制定问题时,在完成路线后假定车辆返回到中央仓库是常见的。(3)然而,合作运输公司的情况,特别是那些寻求减少固定成本的第三方物流(3PL)公司,他们会与拥有车队的运输公司合作。在这种情况下,合作伙伴的车辆在完成路线后不一定返回仓库。这种情况被研究界认为是开放式VRP(OVRP)(Zachariadis和Kiranoudis,2010年)。无论车队是异构的还是均匀的,过去十年来,一些研究人员考虑了二维(2D-VRP)三维(3D-VRP)装载约束,以确保分配的物品能够合理地装载到车辆中(Zachariadis等,2016年)。在考虑这些约束时,研究人员最常将问题分解为不同的问题,其中一个是装载问题,另一个是路径问题。在本文中,我们将2D和3D装载约束视为问题的一个单一变体,即3D-VRP,并仅关注用于车辆路由的算法。此外,与装载容量相关的另一个变体是卡车和拖车VRP(TTVRP)。在特定情况下,一些客户可能由拉拖车的卡车服务,而其他客户仅由单个卡车服务(Lin等,2010年)。这主要与城市中心和农村地区的交付和收集有限制的情况有关(Usberti等,2013年)。 在其他情况下,城市中的交通拥堵、通行限制和环境法规迫使公司使用容量较低的车辆(Quak和de Koster,2009年;Sitek,2014年;Perboli和Rosano,2019年)。在这种情况下,车辆在行驶过程中只能访问少数客户。然而,他们可以在工作日内执行多次行程,导致多次行程VRP(MTVRP)(Brandão和Mercer,1998年)。为了优化程序并在驾驶员轮班期间执行最大数量的行程,通常使用卫星设施(VRPSF)来补充车辆。在这种情况下,应用了两级VRP,通过卫星设施将货物从仓库送到客户那里(G

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Polars学习-常用函数代码

下载包 导入包 数据读写 import polars as pl from datetime import datetimedf pl.DataFrame({"integer": [1, 2, 3],"date": [datetime(2022, 1, 1),datetime(2022, 1, 2),datetime(2022, 1, 3),],"float": [4.0, 5.0, 6.0],} ) print(df) …

小白从0学习ctf(web安全)

文章目录 前言一、baby lfi(bugku-CTF)1、简介2、解题思路1、解题前置知识点2、漏洞利用 二、baby lfi 2(bugku-CTF)1.解题思路1、漏洞利用 三、lfi(bugku CTF)1、解题思路1、漏洞利用 总结 前言 此文章是…

uniapp保留两位小数,整数后面加.00

直接把方法粘贴进去就能用 <text class"bold">总收入&#xffe5;{{formater(priceNumer)}}</text>export default {data() {priceNumer: 199.999, // 总收入},methods: {// 保留两位小数formater(data) {if(!data) return 0.00data parseFloat(data).…

SpringBoot -- 整合SpringMVC

SpringBoot已经替我们整合了许多框架并进行了默认的配置&#xff0c;我们只需要在依赖中导入spring-boot-starter-web&#xff0c;就可以直接使用SpringMVC以及web场景下的已经整合好的功能。但SpringBoot的默认配置可能无法满足我们所有的需求&#xff0c;那么我们怎么进行自定…

Java复习第十二天学习笔记(JDBC),附有道云笔记链接

【有道云笔记】十二 3.28 JDBC https://note.youdao.com/s/HsgmqRMw 一、JDBC简介 面向接口编程 在JDBC里面Java这个公司只是提供了一套接口Connection、Statement、ResultSet&#xff0c;每个数据库厂商实现了这套接口&#xff0c;例如MySql公司实现了&#xff1a;MySql驱动…

Unity SqlServer

今天说点废话 这段代码是在Unity中实现的一个简单的数据库连接示例&#xff0c;主要用于演示如何在Unity中使用C#连接到SQL Server数据库并执行基本的SQL查询操作。 导入所需命名空间&#xff1a; 1using UnityEngine; 2using System.Data.SqlClient; UnityEngine是Unity引擎提…

初识 51

keil的使用: 具体细节请移步我上一篇博客:创建第一个51文件-CSDN博客 hex -- 汇编语言实现的文件 -- 直接与单片机对接的文件 单片机 -- 一个集成电脑芯片 单片机开发版 -- 基于单片机的集成电路 stc 89 c52RC / RD 系列单片机 命名规则: 89 -- 版本号&#xff1f; C --…

Dockerfile常用指令以及使用案例

Dockerfile常用指令以及使用案例 1、ADD复制文件 ADD 指令用于复制文件&#xff0c;格式为&#xff1a;* ADD <src>...<dest>* ADD ["<src>",..."<dest>"]从 src 目录复制文件到容器的 dest。其中 src 可以是Dockerfile 所在目录…

C++初阶:string类模拟实现

本节内容主要针对的是在STL之前的string类的实现&#xff0c;通过模拟实现string类的一些功能来更好地使用string。本篇主要针对的是非const对象&#xff0c;如果要实现const的对象的话&#xff0c;只需要在对应的部分增添上const就行了。编者水平有限&#xff0c;如有错误欢迎…

手把手在K210上部署自己在线训练的YOLO模型

小白花了两天时间学习了一下K210&#xff0c;将在线训练的模型部署在K210&#xff08;代码后面给出&#xff09;上&#xff0c;能够识别卡皮巴拉水杯&#xff08;没错&#xff0c;卡皮巴拉&#xff0c;情绪稳定&#xff0c;真的可爱&#xff01;&#xff09;。数据集是用K210拍…

IndexController

目 录 1 IndexController.. 1 1.1 * 后台管理首页... 2 1.2 * 页面跳转... 2 // 取最新的20条日志... 2 1.3 * 个人设置页面... 3 IndexControllerpackage com.my.blog.website.controller.admin;

Java数组填充:Arrays.fill()方法

Arrays.fill()方法 Arrays 类提供了一个 fill() 方法,可以在指定位置进行数值填充。这个方法属于Java标准库中的java.util.Arrays类 1. 方法介绍&#xff1a; 填充到所有位置 Arrays.fill(Type[] array, Type value) 参数&#xff1a; array 是目标数组&#xff0c;可以是…

linux下minio部署和nginx配置

1 下载minio wget https://dl.min.io/server/minio/release/linux-amd64/minio chmod x minio #启动minio&#xff0c;文件数据存放在/data目录 ./minio server /data2 部署minio 下载minio后赋予可执行权限就可以运行了&#xff0c;这里我整理了遇到的坑和解决问题的最终配置…

算法打卡day21(开始回溯)

今日任务&#xff1a; 1&#xff09;77.组合 77.组合 题目链接&#xff1a;77. 组合 - 力扣&#xff08;LeetCode&#xff09; 文章讲解&#xff1a;代码随想录 (programmercarl.com) 视频讲解&#xff1a;带你学透回溯算法-组合问题&#xff08;对应力扣题目&#xff1a;77…

Java多线程学习(概念笔记)

面试题&#xff1a;并行和并发有什么区别&#xff1f; 现在都是多核CPU&#xff0c;在多核CPU下 并发是同一时间应对多件事情的能力&#xff0c;多个线程轮流使用一个或多个CPU 并行是同一时间动手做多件事情的能力&#xff0c;4核CPU同时执行4个线程 面试题&#xff1a;创建线…

JavaScript编写评分控件

编写一个评分控件&#xff0c;用一个单行5列的Table做评分控件&#xff0c;监听td的click事件&#xff0c;点击一个td的时候&#xff0c;将这个td及之前的td背景色变为红色&#xff0c;之后的td背景色变为白色。 关键代码&#xff1a; <!DOCTYPE html> <html lang&q…

HeidiSQL导出SQL文件

目前开发阶段的数据库可视化工具逐渐转为了HeidiSQL&#xff0c;本文讲一讲导出到sql文件的小细节&#xff0c;给自己做个记录补充。 安装或数据库可视化工具比较可参考&#xff1a; windows下全免费手动搭建php8mysql8开发环境及可视化工具安装 导出 原来用Navicat的时候&am…

对象数组与指针与引用

一.对象指针的使用 #include<iostream> using namespace std; class A{ public:A(int a){xa;}void show_a(){cout<<x<<endl;}private:int x; }; int main() { A ob&#xff08;2&#xff09;,*p;//声明A的对象和对象指针 ob.show_a();//利用对象名访问对象的…

什么是面向对象【大白话Java面试题】

什么是面向对象 同样是解决一个问题&#xff0c;面向对象的角度是将问题抽象成对象的形式。通过分类的思维方式&#xff0c;将问题分成几个解决方案的对象。给每个对象赋值属性和方法&#xff0c;对每个对象的细节进行面向过程的思维&#xff0c;执行自己的方法来解决问题。 …

接口测试vs功能测试

接口测试和功能测试的区别&#xff1a; 本文主要分为两个部分&#xff1a; 第一部分&#xff1a;主要从问题出发&#xff0c;引入接口测试的相关内容并与前端测试进行简单对比&#xff0c;总结两者之前的区别与联系。但该部分只交代了怎么做和如何做&#xff1f;并没有解释为什…