电动汽车(EVs)作为减少温室气体排放和对化石燃料依赖的可持续解决方案,近年来获得了极大的关注。电动汽车的有效利用不仅涉及开发先进的电池技术,而且还涉及优化其路线,以最大限度地提高其范围和最小化能源消耗。电动汽车路由问题(EVRP)解决了为电动汽车车队确定最有效路线的挑战,以便在考虑其充电要求的同时为一组客户地点服务。
本报告介绍了使用遗传算法(GA)来优化EVRP。遗传算法是一类启发自自然选择和遗传学过程的启发式搜索算法。它们为解决优化问题提供了一种有效和灵活的方法,使它们特别适合于解决复杂和动态的路由问题,如EVRP。本研究的主要目的是描述EVRP,建立基准标准,并评估遗传算法与其他最先进方法的性能比较。通过将GAs应用于EVRP,我们的目标是实现最佳的路由解决方案,同时考虑到客户的需求和电动汽车的有限范围。
本研究的主要目的是描述EVRP,建立基准标准,并评估遗传算法与其他最先进方法的性能比较。通过将GAs应用于EVRP,我们的目标是实现最佳的路由解决方案,同时考虑到客户的需求和电动汽车的有限范围。
我在这个项目中使用的主要信息来源是 "电动汽车路由问题及其变体。一篇文献综述,由Ilker Kucukoglu, Reginald Dewil和Dirk Cattrysse发表在 "计算机和工业工程 "上[1]。这个来源汇编了136篇考虑电池电动车路由的已发表论文。我们还将使用与所讨论的数据集相同的数据集。我们将重点讨论EVRP的最基本版本。常用的数据集可以在这里找到.
概述
车辆路由问题(VRP)是一个经典的优化问题,涉及确定车队为一组客户地点服务的最佳路线。VRP的目标是最小化总行驶距离或总成本,同时满足各种约束条件,如车辆容量限制和客户访问的时间窗口。作为VRP的扩展,有容乃大的车辆路由问题(CVRP)包含了车辆容量有限的额外约束。每个客户地点都有一个与之相关的需求,车辆在送货时不能超过其能力。已被广泛研究,并有各种实际应用,如货物分配和废物收集。
随着电动汽车的兴起和可持续交通解决方案的需求,电动汽车路由问题(EVRP)已经成为VRP的一个具体变体。EVRP解决了与电动汽车相关的独特挑战,如有限的驾驶范围和对充电基础设施的要求。EVRP的目标是优化电动汽车的路线,以最小化能源消耗或最大化覆盖范围,同时考虑充电站位置和客户需求。
关键挑战
EVRP继承了其母体问题VRP和CVRP的挑战,同时引入了额外的复杂性。
1.有限范围。与传统车辆不同,由于电动汽车对电池电量的依赖,其驾驶范围有限。EVRP需要仔细的路线规划,以确保电动汽车能够完成其路线而不耗尽能源。这种限制需要有效地利用可用的充电站和战略性地放置路线,以减少范围焦虑。
2.充电基础设施。充电站的可用性和位置在EVRP中起着关键作用。电动汽车需要进入充电站,为其电池充电并延长其行驶里程。优化充电站的使用,包括充电时间和充电站容量等因素,成为EVRP的一个组成部分。
3.客户需求。与VRP和CVRP类似,EVRP必须考虑不同地点的客户的不同需求。高效的路由策略应该以最小化总的旅行距离为目标,并确保在考虑客户偏好和要求的同时及时交付。
4.时间窗口。对VRP、CVRP和EVRP的大多数常见解释是客户有一套可服务的时间窗口。为了成功满足每个客户的需求,车辆必须在一个时间窗口内到达,模型必须模拟旅行时间以建立一个准确的时间表。
5.动态因素。现实世界的场景引入了动态因素,如交通拥堵、不断变化的客户需求和不可预测的充电站可用性。这些因素进一步加剧了EVRP的复杂性,需要能够处理动态环境的自适应算法。
在本报告中,我们将重点讨论EVRP的最基本版本,只考虑有限的车辆范围、充电基础设施和客户需求。
EVRP的优化目标
优化EVRP的主要目的是开发高效的路由策略,使电动汽车的利用率最大化,同时使能源消耗和总旅行距离最小。优化过程应考虑电动汽车的有限范围、充电站基础设施和不同的客户需求所带来的限制。
本报告中使用的EVRP变化可以通过以下数学模式来定义
这个数学模型的目标函数旨在最小化电动汽车的总距离。约束条件(1)处理客户节点的连接性,约束条件(2)保证每个充电站最多可以被访问一次。约束条件(3)迫使每辆车只使用一次,即同一辆车不走两条路线。约束条件(4)允许路线的连续性,也就是说,出站的路线等于每个客户和充电站的进站路线。在其路线上,任何车辆都不应该立即从充电站1传送到客户4。约束条件(5)、(6)和(7)跟踪车辆的电池水平以及充电后的电池状态,假设一个完整的充电政策而不是部分充电政策。除了这7个约束条件外,还有15个可以用来进一步复杂化模型,通过考虑车辆的重量、部分充电政策、可服务的时间窗口以及同质与异质车队等指标。由于我们考虑的是EVRP的最简单版本,我们将只使用上面提到的约束。
遗传算法(GA)的使用为解决EVRP提供了一个很有前途的方法。GAs利用自然进化的概念,如选择、交叉和变异,来迭代改进解决方案,并向最优或接近最优的解决方案收j。通过将GAs应用于EVRP,我们旨在利用其处理复杂和动态优化问题的能力,解决上述挑战。我们将使用的基因组序列将是一个完整的旅游中访问的客户节点的有序列表。在评估每个基因组序列的适配性时,我们将用仓库的起始位置、仓库的结束位置、访问仓库的补货以及必要时访问附近的充电站来填充该序列。这些信息不应该被编码到基因组序列中,因为它们是唯一的,只由所需的客户路线决定。例如,把到仓库的行程放在顺序中是没有意义的,因为到仓库的行程是必要的,除非客户路线认为它们是必要的,它们也不是我们试图最小化的东西。
解决EVRP的常见方法包括自适应可变邻域搜索(VNS/AVNS)、自适应大邻域搜索(LNS/ALNS)、自适应或Greedy Tabu搜索(TS/ATS/GTS)或遗传算法(GA)。由于我对GA的熟悉,我选择用这种方法而不是其他更常用的方法来实现。如上所述,我实施了选择、交叉和变异,以努力实现最佳或接近最佳的解决方案。基因组序列由路线中的客户节点的有序列表组成。这是用C++完成的,只有标准库。我选择用C++编写这段代码,以获得比其他代码更多的速度优势。像Python这样的编程语言,以及C++要求我充分了解如何实现上一节中描述的目标函数和数学,以及一个GA。
对于选择,我选择使用锦标赛选择,即在n个父母中选出排名靠前的父母。交叉需要以这样的方式实现,即保持基因组序列中数值的唯一性,所以我使用了单点交叉。从第一亲本中随机选择一些元素,然后用第二亲本中的独特元素填充其余元素。这使得基因组序列能够在没有获得多个相同客户的情况下进化。对于突变,基因组序列中的两个随机元素交换了位置。我使用的种群大小为100,最大世代为1000,锦标赛大小为10,突变率为0.15。我玩了这些变量,我发现所使用的数据集的搜索空间足够小,1000代是执行时间和寻找最佳结果的一个很好的平衡。如果使用更大的数据集,我建议在增加最大生成率之前增加种群规模和锦标赛规模。
数据和基准测试
在EVRP领域发表的136篇评论文章中,最广泛使用的数据集包括5、10或100个客户的小型和大型实例。客户和充电站可以通过随机分布、聚类分布或随机和聚类分布的混合来分布。
每个数据集都遵循相同的约束条件:一个充电站必须位于仓库,其余的充电站是随机分布的,假设每个客户最多只能通过访问两个充电站从仓库到达。文献回顾报告了两个求解器,CPLEX和GUROBI,以及它们各自的基准数据,以获得每个数据集上的最优解。我使用少数几个数据集对我的代码进行了基准测。
每个解决方案都被限制在2小时的运行时间内,所以两个7200s的运行时间表明,求解器没有趋同,没有找到解决方案。在这两种情况下,我的解决方案都接近于最佳,但不是完全最佳。我相信这是由于没有更大的种群规模或足够的世代。例如,RC204 15数据集的最佳整体旅游距离为384.86,我的代码找到了一条距离为395.528的路线。我也没有实现时间窗口的限制,尽管数据集会支持这一点。不包括时间窗口的限制也可能增加我的解决方案和文献回顾中发现的解决方案之间的差异。
结果
通过将一些运行时间与文献回顾中发现的时间进行比较,很明显,我的GA解决方案通常比其他方法慢得多。然而,如果我们看一下每个求解器在所有小规模实例(5、10和15个客户)上的平均求解时间,我们可以看到,我的代码总体上比使用的两个数字求解器表现得更好。与TS和VNS算法相比,我的GA解决方案要慢得多。
总的来说,我的代码生成的旅游路线与文献综述中发现的最佳路线相似,尽管没有时间窗口的限制。这是一个很有希望的结果,因为这个问题非常复杂。相对于其他解决方案,我很高兴能够实现一些计算智能系统来解决EVRP,并取得适度的成功。
讨论
在未来,我将改变一些关于我如何解决这个问题的事情。首先,我的遗传算法代码中会有一个提前退出的条件。据我所知,最优解可以在较早的一代上找到,但我的代码继续执行n代,不管解的适用性如何。其次,我试图实现VNS来解决这个问题,因为这是解决这个问题最常见和最快的方法。然而,我很难实现这个解决方案,因为我对这个问题和实施都不熟悉。我之所以坚持使用GA,是因为我对GA的编程过程很熟悉,这样我就可以完全专注于解决这个问题。在未来,我希望更多地关注其他可能更好的实现方式,而不是只局限于我已经知道的东西。第三,这个数据集还有许多可能的限制,主要是时间窗口部分。在我的结果和文献综述中提出的结果之间很难做直接的比较,因为他们所有的代码都是在时间窗口的限制下解决EVRP的,这使得它在技术上成为EVRPTW。我采用了最简单的版本,因为仅仅用尽可能少的约束条件来实现EVRP的基本版本是很复杂的。在未来,我希望将其扩展到至少包括时间窗口。