基于带时间窗口的电动汽车路由问题的精英对立学习的多群PSO(2022)

英文:Multi-swarm PSO based on Elite Opposite Learning on Electric Vehicle Routing Problem with Time Window

摘要:

        带时间窗口的电动汽车路由问题(EVRPTW)是交通领域的一个新问题,用传统的精确求解方法很难解决。启发式算法通常用于解决EVRPTW并获得近似的最优解。我们使用混合整数线性编程对EVRPTW进行建模,同时考虑到实践中遇到的各种因素。作为一种启发式的求解算法,基于精英反向学习的多群粒子群优化算法(M-PSO-EL)对于解决EVRPTW的高维复杂问题具有更快的接收速度和可搜索性。基于EVRPTW设计电动汽车的充电策略。遗传算法(GA)、离散量子行为粒子群优化(DQPSO)和M-PSO-EL在包含不同类型客户点分布的Solomon基准上进行了测试。实验结果表明,M-PSO-EL可以有效地解决有100个客户点的EVRPTW。


引言

        以碳排放为重点,通过增加车辆是电池电动汽车(BEV)的约束条件,提出了电动汽车路由问题(EVRP)[1]。与内燃机汽车相比,BEVs的噪音产生最小,由可再生能源驱动[2]。由于电池容量的限制,当BEVs完全充电时,交付里程比内燃机汽车少480-650公里[3, 4]。因此,需要考虑电动车的充电问题。考虑到客户点的有效服务时间窗口的限制,提出了一个带时间窗口的电动汽车路由问题(EVRPTW)[5]。

        EVRPTW求解方法已经成为一个研究热点和未来发展趋势。许多学者已经取得了一些成就。Keskin[6]放宽了全电荷限制并允许部分电荷(EVRPTW-PR),开发了一种自适应大邻域搜索。结果表明,这种方法可以有效地找到高质量的解决方案,而且一些充电方案可以显著改善路由。Kucukolu[7]提出了一种用于EVRPTW的模拟退火算法,该算法结合了基于分支和基于边界的站点插入,将充电站插入到可行的路径中。Booth[8]提出了第一个用于建模和解决EVRPTW的约束性编程方法。不同目标的结果表明,对于所有的问题类别,单一资源转换比替代资源模型更好,对于大多数大问题和中问题类别,单一资源转换比MILP更好。

        在本文中,EVRPTW被认为是混合整数线性规划(MILP)模型[9]。优化目标函数的组成考虑到了交付成本、完成时间和客户满意度。EVRPTW需要在分配过程中关注车辆的剩余功率和可用里程数[10]。我们设计了一种基于精英反向学习的多群粒子群优化算法来解决多目标EVRPTW。经典遗传算法(GA)[11-13]和离散量子行为粒子群优化(DQPSO)算法[14]在Solomon标准测试集上进行了实验比较。


2 问题公式化

EVRPTW模型是基于CVRPTW的,使用纯电动汽车作为配送车辆[15]。EVRPTW模型能够由图൐ܣǡܸൌ൏ܩ描述,其中顶点׫ܨ׫ܥൌܸܦ଴的集合包含:ܥ的ܰ௖客户,ܨ的ܰ௙充电站加上(ܰ௙ǯ)它们的克隆,以允许多次访问充电站作为基本路线,ܦ଴代表仓库集合,作为每条路线的起点和终点。此外,子集ǯܸ表示ܦ̳ሼܸ ଴ ሽ 。弧的集合A包含所有有序的顶点对,除了仓库之间的顶点,以及每个充电站的顶点。EVRPTW模型中的数学符号和描述见表1。

此外,ݔ ௜௝௞ , ݓ ௜௞ , ݈ ௜௞被用作二元决策变量。当ݔ௜௝௞ൌͳ表示车辆݇已经通过了݅和݆两点之间的路径时,当ݔ௜௝௞ൌͲ表示没有濁时,ݓ௜௞ൌͳ表示电动汽车݇已经提前到达݅点,需要等待݅点的有效服务时间开始,当ݓ௜௞ൌͲ时,电动汽车݇不需要在݅点进行等待。当݈௜௞ൌͳ时,表示电动汽车k到达݅点的时间比服务时间晚,需要惩罚,当݈௜௞ൌͲ时,车辆在服务时间内到达݅点。EVRPTW模型的优化目标函数可以表示为。

公式。(6)和公式。(7)确保每个客户由一辆车提供服务,(8)-(9)是仓库和车辆负载约束,公式。(10)是充电站的约束条件,公式。(11)是电动车在路线上时的电池消耗约束,(12)是电动车在CS的充电约束。公式。(13)-(16)是时间窗口约束,(17)-(18)是服务时间和等待时间约束,(19)是仓库的时间参数,(20)是路线消除条件。

设计一个充电判断策略,这是在电动汽车完成其客户交付点后需要的。充电判断策略可以描述为:计算电动汽车的当前位置和到达下一个客户点所需的功率,并从下一个客户点开始搜索充电站列表中最近的充电站位置。计算车辆的剩余电力是否足以满足下一个客户点的交付。如果满足将电力分配给下一个客户点所需的功率,则进行分配。如果不是,从充电站列表中选择最近的充电站并对其进行充电。


3解决方法

在这篇文章中,我们学习了麻雀搜索算法(SSA)[16]的思想,并设计了基于精英反向学习的蜂群优化算法(M-PSO-EL)来解决多目标EVRPTW。SSA[17]本质上是一种多群粒子群优化算法。M-PSO-EL是基于一个涵盖检测和警告机制的发现者-追随者模型。对于复杂的优化问题,当大多数粒子进入局部最优时,少量的粒子会跳出局部最小值并移动到全局最优方向。通过增加粒子类型和改进粒子迭代公式,在处理高维复杂优化问题时,它具有更快的融合速度和未知区域探索能力。

3.1 初始化策略

对于组合优化问题,种群初始化将大大影响后续的迭代过程。对于函数测试中一小部分非收问题,本文将精英反向学习应用于群体初始化。

M-PSO-EL中的种群初始化如下。随机生成一个种群,并计算种群中每个个体的适应度值。根据适合度值选择精英个体,形成精英群体濁 将普通组中的个体转换为反向个体,重新计算并选择适合度值。通过多次迭代形成具有高适应度值的精英组作为初始组。

3.2 位置更新

        在M-PSO-EL中,设计了三个搜索粒子,分别是环境搜索粒子、水平搜索粒子和垂直搜索粒子。

环境搜索粒子被用来评估当前搜索空间的搜索质量。环境搜索粒子需要填充整个搜索空间。在搜索其他粒子的过程中提供环境信息。经典的PSO算法与当前速度、当前个体位置和速度更新时的群体位置有关。由于车辆路由问题的高群体相关性,存在搜索范围小的问题。PSO[18]的位置速度更新公式可以表示为

在上式中,c1和ܿc2是学习因子或加速因子,r1和r2是随机数。ܺXb粒子的历史最佳位置,ܺXp是当前群体中的全局最佳位置。

水平搜索粒子侧重于扩大整个群体的搜索范围,只关注它们自己的速度和位置更新。在经典的PSO速度迭代公式中,粒子在前一时刻的位置制约着速度。为了扩大搜索范围粒子的能力,位置限制被从速度更新中移除。

在解决EVRPTW时,水平搜索粒子需要扩大搜索空间。为了解决种群集中的问题,模型的解被困在难以逃脱的局部最优值中。在i时刻݅,只考虑速度信息。水平搜索粒子的速度和位置。

在公式(22)中,\alpha是一个随机数,݉݁item是最大迭代次数。

垂直搜索粒子专注于搜索的深度并进行垂直搜索。垂直搜索粒子专注于搜索的深度并进行垂直搜索。从位置更新中删除速度。在更新过程中,个人和全局位置信息都被使用。垂直搜索粒子使用公式(23)[16]进行位置更新。

在公式(23)中,Q是一个具有正态分布的随机数,L是一个具有ܰ1*Nc维度的全1矩阵,Xp是当前种群的全局最优位置,ܺ Xworst是全局最差位置。N代表种群中按适配度排序的个体总数。A代表一个݀1*d的矩阵,其中每个元素被随机分配一个1或者-1的值.

环境搜索粒子、水平搜索粒子和垂直搜索粒子构成一个最佳搜索的群体。环境搜索粒子收集并利用个体和种群的速度和位置信息。为了扩大种群的搜索范围,水平搜索粒子不受个体和种群位置信息的限制。只考虑个体在最后时刻的速度和位置信息。垂直搜索粒子收集其他粒子和整个群体的信息,深入搜索以找到最优值。因此,M-PSO-EL可以有效地提高搜索质量。

3.3 求解过程

基于M-PSO-EL的EVRPTW模型求解过程可以表示为。

步骤1:模型参数初始化。

第二步:对实例信息进行编码并初始化群体。

第3步:计算和排序适应度值。

第四步:更新水平搜索粒子、垂直搜索粒子和环境搜索粒子的位置。

第5步:计算适应度值。

第6步:确定是否达到了最大迭代次数,如果不是,则继续执行第3-5步。

第7步:解码并输出结果。


4. 数学实验

4.1 实验设计和参数设置

        我们所有的实验都是在台式电脑上进行的,处理器(Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz)和RAM(16.0GB)。所有的算法和测试程序都是用Python编程实现的。实验中使用的测试数据是一个标准的功能测试集。测试实例包括一个仓库、20个充电站和100个客户。EVRPTW数据集的客户点分布根据地理位置分为三类:随机客户分布(R),聚类客户分布(C),以及混合R和C(RC)。

        在实验中,EVRPTW调度方案中的固定参数是统一设置的,可以根据实际情况进行调整。相关参数的单位已被归一化,具体数值见表2。

车辆启动成本 1 单位分配成本 0.1 单位等待成本 0.2 单位延迟成本3 客户满意度 3

客户不满意 5 目标函数权重[0.5 0.3 0.2]

电动汽车的车辆参数在EVRPTW标准测试数据集中提供。电动汽车的相关参数显示在表3中。

电动汽车参数 参数值

车辆油箱容量 79.69

车辆负荷容量 200.0

燃料消耗率 1.0

逆向加油率3.39

平均速度1.0

我们使用GA、DQPSO和M-PSO-EL来解决EVRPTW模型。GA、DQPSO和M-PSO-EL的算法参数见表4。算法参数由预实验决定,以确保三种算法在实验过程中达到最佳结果。

表4.算法参数 算法参数 参数值

GA 迭代 500 种群大小 250 交叉概率 0.5 突变概率 0.3

DQPSO 迭代 3000 种群大小 250 扩展-收缩因子 0.8

M -PSO-EL 迭代 3000 种群大小 250 水平搜索粒子比率 0.2 垂直搜索粒子比率 0.5 环境搜索粒子比率 0.3 上边界 500 下边界 0

4.2 实验结果和分析

使用GA、DQPSO和M-PSO-EL方法测试了olomon-s基准。记录每个算法的输出并打印迭代曲线。在这篇文章中,在一个有客户点集群的数据集上选择了一个典型的测试案例。

对于每个测试实例,每个算法独立运行20次,设置不同的时间作为算法的终止条件,并根据客户点数量的大小记录算法的运行时间。同时,输出适应度曲线以确定算法在平滑位置的迭代次数并记录下来。在本文中,BestVal、WorstVal和AvgVal被用来表示20种独立运行算法的最佳、最差、平均和平均时间,OptVal是所有算法的最佳值。

实例C102、C106和C108都属于Solomon基准中的集群客户点,仓库和充电站位置一致。在本文中,选择Solomon基准中不同客户点分布的三个代表性实例来绘制DQPSO和M-PSO-EL的迭代曲线。集群客户点分布实例选择C102、C106和C108(图1);随机分布客户点实例选择R101(图2);集群和随机分布混合客户点实例选择RC103(图3)。对于图3中的集群客户点分布,三个实例之间的客户端时间窗口存在差异。C102时间窗口分布在总时间线的前面,时间窗口较窄。T C106时间窗口在整个时间线上均匀分布。C108时间窗口分布在总时间线的后面,并且时间窗口很宽。

图3.DQPSO和M-PSO-EL在实例RC103上的迭代曲线

在上图中,由于M-PSO-EL增加了一个整体的初始化策略,迭代开始时的总目标函数值明显小于DQPSO。在迭代开始时,DQPSO和M-PSO-EL的目标函数值都以较快的速度下降,然后以较慢的速度下降,逐渐接近找到的近似值。与DQPSO不同,M-PSO-EL可以跳出当前的局部最优,当迭代落入局部最优时,继续根据算法中的警报机制进行搜索。在不同分布类型的客户点实例上,DQPSO在迭代过程中落入局部最优值,直到迭代次数达到设定的最大迭代次数,而且目标函数没有再次下降的趋势或可能性。

而,M-PSO-EL能够落入局部最优,特别是在C101、C106、C108和R101中,对局部最优有显著的限制。由于M-PSO-EL的侦察预警机制和内部竞争的存在,它可以在有限的迭代后跳出局部最优值,转向全局最优值。

为了更直观地解决不同客户点分布的EVRPTW问题,我们使用了GA、DQPSO和M-PSO-EL三种算法。表5给出了在Solomon基准上求解三种算法的一些实例的结果。共有9个测试用例,其中5个是集群客户点分布测试用例,随机客户点分布和随机集群混合客户点分布是两个。每个实例独立运行20次后,记录݈ܸܽݐ݅ܤ和\1864quot。

基于实验结果,经典启发式算法GA在三种不同类型的客户点测试实例上难以接近全局最优值,容易陷入局部最优值。与DQPSO相比,在测试实例上,M-PSO-EL解的质量高于DQPSO。尽管在求解上花费了时间,但从迭代曲线图中也可以观察到,M-PSO-EL可以通过使用有限次数的迭代来摆脱局部最优解。DQPSO被困在局部最优解中,无法逃脱,导致解的质量低于M-PSO-EL。

5 结论

本文给出了EVRPTW的问题背景描述和线性混合整数编程模型的数学表示。总分配成本、总分配时间和客户满意度被线性加权为总目标函数。本文设计了M-PSO-EL来解决EVRPTW模型,并使用GA和DQPSO作为比较算法。在Solomon-s基准的EVRPTW数据集上的测试实例是聚类的,随机分布的,以及聚类的随机分布的客户点。结果表明,M-PSO-EL在不同类型的客户点分布中具有更好的解决方案质量。M-PSO-EL在求解过程中显示的不稳定性也是摆脱局部最优解的一种表现。

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

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

相关文章

vue3.0源码解析之数据代理Proxy

前言 多年前刚转前端的时候,对频繁的拼接页面元素深恶痛绝,当时是通过封装字符串模版来处理页面的。之后又陆续发现,数据变化后需要频繁的修改dom节点来操作页面,便不得不自己写很多更新的代码,直到出现了vue和react、…

【排序】详解堆排序

一、思想 堆排序是一种基于比较的排序算法,且使用了堆的数据结构来辅助进行排序。其思想是利用堆的特性,即在每个节点都保证是最大(大顶堆)或者最小(小顶堆)的关键码。具体原理和步骤如下: 构…

基于SpringBoot的论坛系统(附项目源码+论文)

摘要 如今的时代,是有史以来最好的时代,随着计算机的发展到现在的移动终端的发展,国内目前信息技术已经在世界上遥遥领先,让人们感觉到处于信息大爆炸的社会。信息时代的信息处理肯定不能用之前的手工处理这样的解决方法&#xf…

最值得入手的五款骨传导耳机,六大专业的选购技巧

亲爱的小伙伴们,你们是否曾因长时间戴着耳机而感到耳朵不适,比如耳朵闷痛、发痒,甚至出现异味?现在有一种耳机可以帮你解决这些问题,它就是骨传导耳机。这种耳机的设计避免了传统入耳式耳机可能带来的堵塞感和细菌滋生…

【prompt五】CoCoOP:Conditional Prompt Learning for Vision-Language Models

motivation 随着像CLIP这样强大的预训练视觉语言模型的兴起,研究如何使这些模型适应下游数据集变得至关重要。最近提出的一种名为上下文优化(CoOp)的方法将提示学习(nlp的最新趋势)的概念引入视觉领域,以适应预训练的视觉语言模型。具体来说,CoOp将提示中的上下文单词转换为…

Golang 程序启动原理详解

一.编译 go源代码首先要通过 go build 编译为可执行文件,然后去机器上直接执行的,在 linux 平台上为 ELF 格式的可执行文件,linux 能直接执行这个文件,而编译阶段会经过编译器、汇编器、链接器三个过程最终生成可执行文件 编译器:*.go 源码通…

数字逻辑与计算机组成

冯诺依曼计算机 计算机结构 计算机特点 1.采用二进制 2.程序存储 2.由五大部件组成计算机系统:运算器、存储器、控制器、输入设备和输出设备 计算机硬件系统的层次 中央处理器(CPU):运算器 控制器 计算机主机:…

【韩国留学】四大生活技能 学起来!柯桥留学中介韩语学习

如何高效拿学分 在韩国大学,学分是评价学生学习成果的重要标准。要想高效拿学分,首先要制定合理的学习计划。明确每学期需要修的课程,并提前预习,了解课程重点和难点。 其次,要积极参与课堂讨论,这不仅能提…

社科院与杜兰大学金融管理硕士——让我们的读研梦想,与春天一同醒来

随着春天的到来,万物复苏,生机盎然。在这个充满希望的季节里,你的读研梦想觉醒了吗?社科院与杜兰大学金融管理硕士项目为你提供梦想的种子,它将在你心中生根发芽,助你在学术殿堂里收获丰硕的果实。 中国社会…

第七个程序:两个字符串连接后计算长度

实验步骤; 第一步:新建项目 第二步:程序编写 第三步:运行结果 Labview一共7个字节,长度为7,一个字母一个字节 汉字为2个字节,图一为4,图二为8 所以结果分别为11和15 视频教学: 字…

javaWebssh题库管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh题库管理系统是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Mye…

U410866 统计分数

本题为本人原创,请勿抄袭。 难度:普及- 题目背景 为了统计学生们的分数和排名,老师们翻来覆去睡不着觉。请你为老师编写一个这样的程序。 题目描述 这是一题将结构体和排序结合在一起的题。 输入格式 输入: 第一行&…

javascript操作BOM的方法

目录 1.window.alert() 2.window.confirm() 3.window.prompt() 4.window.location() 5.window.navigator() 6.window.screen() 7.window.history() 8.window.setTimeout() 和 window.clearTimeout() 9.window.setInterval() 和 window.clearInterval() BOM&#xff08…

Unity 轮转图, 惯性, 自动回正, 点击选择

简单的实现 2D 以及 3D 的轮转图, 类似于 Web 中无限循环的轮播图那样. 文中所有代码均已同步至 github.com/SlimeNull/UnityTests 3D 轮转图: Assets/Scripts/Scenes/CarouselTestScene/Carousel.cs2D 轮转图: Assets/Scripts/Scenes/CarouselTestScene/UICarousel.cs 主要逻…

【学习记录】C++面向对象高级编程【更新中】

C面向对象高级编程 1 inline-内联函数1.1 什么是内联函数?1.2 为什么需要内联函数? 2 构造函数2.1 构造函数是什么?2.2 为什么需要构造函数?2.3 ctor(构造函数)可以有很多个-overloading重载2.4 ctors放在private区-Singleton 3 参…

Anthropic发布最强大模型Claude 3,实力碾压GPT-4和Gemini!

前言 2024年3月4日,Anthropic 发布了Claude 3新版系列模型,含Haiku、Sonnet 和 Opus三个版本。其中最强大的模型在各种基准测试中均优于OpenAI的GPT-4和Google的 Gemini 1.0 Ultra,已成为大模型领域的新巨头。 大家如果对AI感兴趣&#xff0c…

TensorRT入门:trtexec开发辅助工具的使用

文章目录 一、trtexec简介二、trtexec使用1.trtexec常用参数1. 构建阶段2. 运行阶段 2.基本使用方法1. trtexec最基本的使用方法,读取onnx模型并通过trtexec测试推理性能。2. trtexec解析ONNX文件,使用优化选择构建TensorRT引擎并保存至.plan文件补充&am…

力扣--动态规划64.最小路径和

思路分析: 基本思路: 本算法采用动态规划的思想,通过构建一个额外的二维矢量 dp 来存储每个位置的最小路径和。最终目标是求得右下角位置的最小路径和,即整个网格的最小路径和。 初始化: 初始化矢量的行数和列数&…

使用awk和正则表达式过滤文本或字符串 - 详细指南和示例

当我们在 Linux 中运行某些命令来读取或编辑字符串或文件中的文本时,我们经常尝试将输出过滤到感兴趣的特定部分。这就是使用正则表达式派上用场的地方。 什么是正则表达式? 正则表达式可以定义为表示多个字符序列的字符串。关于正则表达式最重要的事情之…

考研数学|数一125学长备考经验+资料

考研数学复习规划的关键,是不要执着于进度,不要执着于每天每个时间段准确的划分去做什么做什么,就好像完成任务的权重大于复习质量的权重一样,本末倒置了。 正确的做法,是聚焦于学习质量,持之以恒。所需要掌…