[精]A hybrid priority-based genetic algorithm for simultaneous pickup and delivery problems in revers

A hybrid priority-based genetic algorithm for simultaneous pickup and delivery problems in reverse logistics with time windows and multiple decision-makers

一种基于优先级的混合遗传算法,用于解决具有时间窗口和多个决策者的逆向物流中同时提货和交付问题

在这里插入图片描述

摘要

该文提出了一种基于混合优先级的嵌套遗传算法,该算法具有模糊逻辑控制器和模糊随机仿真(hybrid priority-based nested genetic algorithm with fuzzy logic controller and fuzzy random simulation [hpn-GA with FLC-FRS])来解决车辆路径问题的变体。为了满足实际逆向物流中包含的所有复杂限制,开发了一种新的数学模型,用于时间窗口多个决策者 ( pickup and delivery problems with time windows and multiple decision-makers [SPDTW-MDM]) 的同时取货和交付问题。然后,提出了一种基于FLC-FRS的hpn-GA,其中基于优先级的初始化方法使初始化更加适用,嵌套过程结构处理多个决策者,模糊逻辑控制器帮助调整突变率,并采用模糊随机仿真处理不确定性。最后,在算例中,采用田口方法对GA参数进行调优,并对结果进行了分析,以突出SPDTW-MDM优化方法的性能,同时通过不同规模的实例应用算法比较,表明了其高效性和有效性。

在这里插入图片描述

1 引言

如今,在世界范围内,环境问题变得越来越严重。逆向物流,如再制造、回收和再循环,有助于保护环境免受破坏(Wang et al. 2015),成为提高客户满意度的重要策略(Liao 2018),并对运输成本节约具有潜在影响(Soleimani et al. 2018)。逆向物流是一个基本必要的过程,通过处理,货物流被收集并运送到配送中心[distribution centre](DC)或回收中心[recycling centre](RC进行回收和/或最终处置(recycling and/or final disposition)(Avci和Topaloglu 2015)。DC/RC 与客户之间的运输与交付和取货过程的双向运输有关。在文献中,此类问题可称为取货和送货的车辆路线问题 [vehicle routing problem with pickup and delivery](VRPPD。本文特别考虑了在逆向物流中特别出现的同时取货和送货问题。对于公司来说,以可以提高效率和节约成本的方式逆转成品或原材料成为管理逆向流的任务。

逆向物流(reverse logistics)指商家客户委托第三方物流公司将交寄物品从用户指定所在地送达商家客户所在地的过程。 它包括从客户手中回收用过的、过时的或者损坏的产品和包装开始,直至最终处理环节的过程。
主要特点:

  • 由商家推动:逆向物流过程由商家客户来推动,个人无法实现逆向物流。
  • 费用结算方式:采取商家客户与第三方物流公司统一集中结算的方式。
  • 需要ERP系统支持:逆向物流需要商家客户与第三方物流公司之间强大的ERP系统支持。

活动范围: 逆向物流包含从客户手中回收的产品及其包装品、零部件、物料等物资的流动。 活动的具体内容包括回收、检测、分类、再制造和报废处理等活动。
目的: 重新获得废弃产品或有缺陷产品的使用价值。对最终的废弃物进行正确的处理。
历史与发展:

  1. 逆向物流最早在1992年被提出,并逐渐成为物流领域的重要概念。
  2. 自上世纪90年代末以来,逆向物流逐渐受到国外物流学者和企业管理者的重视。
  3. 逆向物流的有效管理不仅保护环境,还能为企业带来明显的经济效益,强化企业的竞争优势。

实际应用: 随着电子商务的发展,逆向物流在全球得到了快速发展。许多企业,如IBM、HP、Dell等,都建立了自己的逆向物流系统。
数字与案例: 以CellStar为例,其提供的Omnigistics服务主张为客户修好出现问题的移动设备,而不是换部新的,这样可以降低30%到40%的成本。
环境与社会影响: 逆向物流在环境保护和资源再利用方面发挥着重要作用,有助于减少废弃物,提高资源利用效率。

取货和送货问题 [Pickup and delivery problem](PDP作为
车辆路线问题 [vehicle routing problems](VRP 的最普遍延伸,越来越受欢迎(Wang 等人,2018 年;Chami 等人,2018 年;Letchford 和 Salazar-González,2018 年)。任务是找到成本最低的车辆路线集合,每条路线的起点和终点都在仓库,这样每个客户正好由一辆车访问,并且没有车辆访问总需求超过其容量的一组客户。本文重点研究了具有时间窗口和多个决策者的逆向物流中同时 PDPs(SPDTW-MDM,该 PDP在考虑多个决策者之间的相互影响的情况下,在提货点和交货点之间提供物流服务

激烈的全球竞争、更高的客户期望和不断扩大的供应链促使供应公司和制造商为了竞争力而将其物流活动外包给第三方物流[ third-party logistics ] (3PL 供应商(Zhu 等人,2017 年)。运输外包是许多公司(供应公司或制造商)提供货物并雇用物流供应商(运输公司)来交付货物以优化其运营(Gong et al. 2018)。因此,在 VRP 中涉及不止一个决策者,例如提供货物和雇用 3PL供应公司[supply companies] (SC,以及受雇向客户交付货物的外包运输公司[outsourced transport companies ] (OTC。本文采用双层次规划[bi-level programming ](BP研究了SCs与OTCs之间的关系。SCOTC 属于不同的利益相关者群体,有不同的目标,并根据他们的利益和目标做出决定。它们相互影响,其行动可能会对 PDP 产生重大影响。如果忽视这些相互影响因素,可能会对分销的顺利进行产生不利影响。在拟议的SPDTW-MDM中,SC 作为领导者试图最小化总成本,而追随者有自己的目标,即仅最小化其成本。具体来说,领导者的目标,即 SC,是双层次问题的主要目标。

1.1 相关文献

VRPPD 大致可分为三种类型:
带回程的 VRP(Reil 等人,2018 年)、
混合取件和送货的 VRP(Wassan 等人,2008 年)
和同时取件和送货的 VRP(VRPSPD)(Belgin 等人,2017 年)。

在 VRPSPD 中,车辆不仅需要将货物从配送中心交付给客户,还需要同时将货物提货回配送中心。VRPSPD 的应用经常发生在现实生活中(Osaba 等人,2017 年;Belgin 等人,2017 年)。具有时间窗口的 VRP (VRPTW) 和具有不确定性的 VRP 是流行的 VRP 变体。软时间窗被认为更合理,本文采用了Tang et al. ( 2009)提出的方法。VRP 中充满了不确定性,例如天气状况、旅行时间和客户需求。然而,有时不同的研究人员使用不同的不确定理论来处理一个不确定的事件,例如模糊需求(Liu et al. 2016;Fazayeli 等人,2018 年)和随机需求(Bertazzi 和 Secomandi,2018 年;Wang 等人,2017b)。

此外,大多数关于VRP的研究都有一个隐含的假设,即通过使用多个目标规划来共享共同目标的决策者或利益相关者群体不超过一个。然而,在现实世界中,显然有许多参与者通常参与 3PL 的快速发展,例如供应商工厂、制造商、物流公司或运输公司、零售商等(Zhu 等人,2017 年;Gong 等人,2018 年)。由于参与的参与者属于不同的利益相关者,他们根据自己的利益决定合作的实施,他们不可避免地会产生多种冲突,这可能会对运输成本产生很大影响(马和徐,2015)。然而,很少有数学模型研究具有多个决策者的 PDP

综上所述,首先,本研究强调了模糊因子和随机因子可以同时存在的事实,模糊随机理论(Kwakernaak 1978, 1979)有助于解决模糊随机环境下的PDP。其次,BP,专注于处理分层(或双层)组织中多个决策者的分散最优规划问题(Abo-Sinna and Baky 2007;Mishra 2007),已被用于与多个决策者处理 PDP。因此,该文针对具有多个决策者和模糊随机客户需求的SPDTW,提出了一种基于BP的混合整数线性规划模型。

由于PDP是众所周知的NP难题,因此具有BP结构的模糊随机SPDTW-MDM更难。由于其分层结构,BP 问题是非凸的、NP -hard的,并且是一项非常困难的任务(Wang 等人,2017a)。先前的研究表明,混合算法在解决PDP和BP方面通常比简单的算法更有效和高效。 Ai和Kachitvichyanukul使用具有多种社会学习结构的粒子群优化(称为GLNPSO)解决了电容VRP(Ai和Kachitvichyanukul 2009)。然后,Goksal 等人提出了一种基于粒子群优化 (PSO) 的启发式解决方案,其中通过可变邻域下降算法 (VND) 执行局部搜索来处理 SPDP(Goksal 等人,2013 年)。Gschwind 等人改进了用于求解 PDPTW 的分支价格和切入算法,平均将计算时间缩短了 40%(Gschwind 等人,2018 年)。Belgin et al. ( 2017) 开发了一种基于可变邻域下降和局部搜索的混合启发式算法来求解 SPDP。Pereira 和 Urrutia 为提出的 PDP 实施了分支和切割算法,并为几个基准实例获得了新的经过验证的最佳解决方案(Pereira 和 Urrutia 2018)。Chami 等人(2018 年)为多周期 PDP 引入了先进的 GRASP-HGA 组合遗传算法 (GA) 已被证明在解决大空间的困难和复杂问题方面是有效的,并已用于解决不同类型的 VRPBP(Mohammed 等人,2017 年;Wang 等人,2017b)。Gen 和 Cheng ( 2000) 对 GA 领域中模糊逻辑控制器 [fuzzy logic controller](FLC 的各种方案进行了调查,指出 FLC 可以减少 CPU 时间,提高优化质量和稳定性。

在本文中,使用了 FLC,并开发了一种改进的 GA。权重映射交叉、插入突变和轮盘选择是应用于开发的 GA 的算子。 特别是,权重映射交叉是为基于优先级的染色体设计的,插入突变已被证明对处理物流问题有效,参见 Gen et al. ( 2006) 中的表 4。最后,提出了一种基于混合优先级的嵌套遗传算法,该算法具有模糊逻辑控制器和模糊随机仿真(hpn-GA with FLC-FRS)来处理SPDTW-MDM。

权重映射交叉(Partial-Mapped Crossover,简称PMX)是一种特殊的交叉算子,用于生成新的个体(或称为后代)。这种交叉方式特别适用于具有顺序或排列特性的问题,如旅行商问题(TSP)等.

  1. 随机选择交叉点:
    随机选择两个父代个体(或染色体)中的几个基因(或位置)的起止点。注意,两个父代被选择的位置应该相同。
  2. 交换选中的基因:
    将两个父代中选定位置的基因进行交换,形成两个初步的子代。
  3. 冲突检测与映射:
    由于交换可能导致子代中存在重复的基因(即冲突),因此需要建立一个映射关系来解决这些冲突。
    映射关系的建立通常基于父代中未被选中的基因。以这些基因为基础,可以创建一个从父代到子代的映射,确保子代中没有重复的基因。
  4. 根据映射调整子代:
    使用建立的映射关系,将子代中重复的基因替换为相应的非重复基因,确保子代的有效性。
  5. 生成最终子代:
    经过上述步骤,可以得到两个没有冲突且继承了父代特性的新个体(子代)。

插入突变(Insertion Mutation)主要目的是在解空间中引入多样性。 它特别适用于具有序列性质的问题,例如旅行商问题(TSP)、排序问题等。在这些问题中,基因序列的顺序往往对解的质量有很大影响。通过插入突变,算法可以探索不同的基因序列顺序,从而找到更好的解。

  1. 选择个体:从当前种群中随机选择一个个体作为突变的对象。
  2. 选择插入位置:在选定的个体中随机选择一个插入位置。这个位置可以是基因序列中的任何位置,包括序列的开始和结束。
  3. 选择被插入的基因:从该个体的基因序列中随机选择一个或多个基因作为被插入的基因。这些基因可以是紧邻插入位置的基因,也可以是序列中的任意基因。
  4. 执行插入操作:将被选中的基因插入到之前选定的插入位置。这可能会导致原始位置上的基因被覆盖或移动。
  5. 检查并修复:执行插入操作后,可能需要检查新的个体是否满足问题的约束条件。如果不满足,可能需要进行一些修复操作,例如重新选择插入位置或基因,以确保新个体的有效性。
  6. 形成新个体:完成上述步骤后,就生成了一个新的个体,该个体与原始个体在基因序列上有所不同,从而引入了一定的多样性。

1.2 贡献和概述

综上所述,本文对文献的贡献如下:
1️⃣首先,针对SPDTW-MDM设计了一种新的数学模型,其中应用BP处理多个决策者,并采用模糊随机理论来描述需求和拾取量,这有助于决策者做出更有效和更精确的决策;
2️⃣其次,提供一种带有FLC-FRS的hpn-GA来处理SPDTW-MDM,其中基于优先级的初始化方法使初始化更加适用,嵌套过程结构处理双层决策结构,模糊逻辑控制器帮助调整突变率,并利用模糊随机仿真处理不确定性;
3️⃣然后,通过算例分析SPDPTW-MDM的数据特征,通过田口分析得到GA的参数,并分别从领导者和追随者的角度分析最优结果。
4️⃣然后,通过不同尺度的实例应用算法比较,验证了所提出的hpn-GA与FLC-FRS的有效性。

模糊随机理论:例如,在一个投资组合管理的决策中,不同投资标的之间的关联关系常常是随机且模糊的。通过模糊随机理论,可以利用历史数据,结合模糊变量和随机变量的特点,对投资组合的风险和收益进行更全面的评估,为决策者提供更准确的依据。
田口分析法:在田口分析法中,正交试验被用于数据处理,通过正交性在全面试验结果中挑选出一些具有均匀分散、齐整可比特点的方案进行试验或者计算,以达到减少工作量、提高设计效率的目的。同时,通过对实验数据的计算和分析,田口方法可以获得最优的参数组合。

在GA算法中求参数时,使用田口分析法的目的就是通过正交试验和分析,找到影响算法性能的关键因素,并优化这些参数,从而提高GA算法的性能和稳定性。这种方法能够有效地降低噪音干扰,获得更优化的参数组合,提升算法的整体效果。

本文的组织结构如下。问题陈述在第 2 节中给出。第 3 节显示了符号、假设和模型公式。在第 4 节中,提出了一种带有 FLC-FRShpn-GA,以提高基本 GA 的性能。 在第 5 节中,给出了一个案例研究,包括数据收集、参数测试和结果分析,以及基于不同实例的算法比较的计算结果。最后,第6节概述了一些结论性意见。

2 问题陈述

在本节中,给出了多个决策者和模糊随机变量的描述。

2.1 多个决策者 Multiple decision-makers

对于多个决策者来说,BP是一个有用的工具,它在以下方面具有一些共同特征(Abo-Sinna和Baky 2007;Bialas 和 Karwan 1984;米什拉 2007;Zheng 等人,2018 年;Alves 和 Antunes 2018):
(1)在组织的等级或双层结构中存在交互式决策单元;
(2)追随者在上级或领导的决定之后执行他们的决定,并考虑上级或领导的决定;
(3)领导者和追随者各自独立地最大化或最小化自身利益,但可能通过外部性受到对方行为的影响;
(4)决策时领导者和追随者之间的相互影响既可以体现在目标函数上,也可以体现在约束上

在本文中,供应公司 (SC) 被认为是领导者,“流通”外包运输公司 (OTC) 可以根据 SC 决定的客户群自由地为每辆车选择路线。很明显,SC可以影响,但不能控制OTC的路线选择。然而,与此同时,场外交易公司根据SC的最佳方式做出决定。这种互动博弈被表示为BP问题。与传统的单级规划模型相比,BP模型具有更多的优势。主要优点是
(1)BP可用于在决策过程中同时分析两个不同甚至冲突的目标;
(2)BP多准则决策方法能较好地反映实际问题;
(3)BP方法可以明确地表示SC和OTC之间的相互性。
这种双层关系如图 1 所示。

在这里插入图片描述

2.2 模糊随机描述

在实践中,为了收集数据,从不同的人那里进行了调查和调查(即 j = 1 , 2 , ⋯   , n j=1,2,\cdots,n j=1,2,,n ,其中 j j j是客户的索引)。个人通常无法给出所需参数的准确表达。相反,根据他们的经验,他们可以用语言术语将每个项目的参数描述为具有最可能值(即 d j d_j dj )的区间(即 [ l j , r j ] [l_j,r_j] [lj,rj]例如“每月需求量在 1.20 到 1.67 吨之间,最可能的值是 1.45 吨”所有 l j l_j lj(for )的最小值和所有 r j r_j rj (for j = 1 , 2 , ⋯   , n j=1,2,\cdots,n j=1,2,,n)的最大值分别被选为模糊随机数的左边框(即a)和右边框(即b) a=min(l_j),b=max(r_j)最可能值(即 d j d_j dj )的波动可以用随机分布来表征。例如,月需求的最可能值(即 d j d_j dj)可以被视为随机变量(即 ρ ( ω ) \rho(\omega) ρ(ω)。通过比较从不同个体获得的最可能值(即 d j d_j dj for j = 1 , 2 , ⋯   , n j=1,2,\cdots,n j=1,2,,n), 发现 ρ ( ω ) \rho(\omega) ρ(ω)近似服从正态分布(即 N ( μ , σ 2 ) N(\mu,\sigma^2) N(μ,σ2),可以使用最大似然法进行估计,并使用卡方拟合优度检验进行合理化。因此,月需求的三角形模糊随机数可以推导为 ( a , ρ ( ω ) , b ) (a,\rho(\omega),b) (a,ρ(ω),b) ,其中 b ∼ N ( μ , σ 2 ) b \sim N(\mu, \sigma^2) bN(μ,σ2)

假设我们收集了某公司过去12个月的销售数据,并认为这些数据可能服从正态分布。

  • 数据收集:我们得到12个月的销售数据,例如:[100, 120, 95, 115, 105, 130, 90, 125, 110, 100, 135, 115](单位:万元)。
  • 最大似然估计:
    使用这些数据,我们可以计算样本均值和样本方差,作为μ和σ^2的初始估计。
    然后,通过最大化似然函数,得到更精确的最大似然估计值μ_ML和σ^2_ML。
  • 卡方拟合优度检验:
    假设我们将数据分为5个组:[90-100), [100-110), [110-120), [120-130), [130-140)。
    根据最大似然估计得到的正态分布参数,计算每个组的期望频数。
    比较每个组的实际频数与期望频数,计算卡方统计量。
    根据卡方分布和自由度,确定是否拒绝原假设。如果卡方统计量小于临界值,则接受原假设,认为数据符合正态分布。

此外,拾取量也可能不准确,这已被用于涉及模糊信息和随机值的应用。一般来说,很多关于客户提货量的陈述都是不确定的,比如“大概多0.3吨左右”或“大概1吨左右,但将来可能会多一点”,他们的陈述中出现了模糊性和随机性。因此,根据它们不同的表达方式,它们的描述可以转化为模糊随机变量[fuzzy random variables ](FRV。Shapiro给出了一些示例,以帮助概念化如何以更简单的方式应用 FRV(Shapiro 2009),该示例已用于描述本文中的模糊随机拾取量。分别取 a j a_j aj左边框、 b j b_j bj右边框和最 μ j \mu_j μj可能值,其概率为 p j p_j pj。一个简单的应用程序可以用以下三角隶属函数及其相关概率来表示:

在这里插入图片描述
这种建模技术被认为是模糊随机优化,与简单地使用模糊方法相比,它可以通过个人经验使决策者受益更多。简而言之,模糊随机描述方法可以通过利用不同个体在一个客户节点上的宝贵个人经验来处理复杂的不确定性。

3 建模

在本节中,我们给出了 SPDTW-MDM 的数学描述,包括符号、假设和数学公式。

3.1 符号和假设 Notations and assumptions

这个问题有一些一般的 假设
🐸所有交付的货物都应来自DC/RC,所有提货货物必须带回DC/RC;
🐸通常,客户被分配到单个路由,直到路由达到容量或时间限制。
🐸然后,选择一个新客户作为另一个新路线的种子客户(seed customer),该过程继续。种子客户定义为尚未分配给路由并用于初始化新路由的客户(马和徐 2015);
🐸送货和取货必须在客户所在地同时进行;
🐸每个客户只被一辆车拜访一次;
🐸每个客户都可以为其送货服务、取件服务或两者申请特定的时间窗口;
🐸在客户装货前进行卸货;本文假设客户需求和取货量为 FRV
为模型公式引入了以下符号。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

3.2 上层模型

上层决策者被视为 SC,他试图找到最优的客户集群,以最小化总成本,包括初始化成本、服务成本和运输成本,同时满足一些必要的约束。上层模型公式如下:
在这里插入图片描述
目标函数(1)将三种不同成本的总和最小化,其中
第一部分表示种子客户的成本之和,包括上传成本(人工费)和运输成本(油耗和司机成本);
第二部分是指服务客户j的车辆k的服务成本之和,其中大部分是卸货成本(人工费);
第三部分客户 i i i 和客户 j j j 之间的路线成本之和,这与运输成本(油耗和司机成本)密切相关。

约束 ( 2) 确保每辆车不能提供超出其自身能力的任何货物。由于 d j ˉ ~ \tilde{\bar{d_j}} djˉ~ 假设它是从随机事件中抽象出来的 FRV,具有客户的主观意见,因此通常很难确保绝对存在不平等。因此,决策者通常将这种不平等视为平均水平。如何处理 FRV 在第 4 节中给出。

约束(3)是指种子客户是新路线的起点,种子客户的数量必须等于车辆的数量。

约束 ( 4) 保证每个客户都由一辆车提供服务。

约束 ( 5) 和约束 ( 6) 表示 和 是二元变量。

3.3 低级模型 The lower-level model

第二组约束对应于所有客户的路由约束。假设作为 OTC 的较低级别的决策者的主要兴趣是为这些客户分配找到最佳路线,同时考虑时间窗口约束、客户满意度约束和提货后的车辆负载约束。因此,较低层次的数学模型可以实现如下:

min ⁡ y f = ∑ i = 1 n ∑ j = 1 n C i j r o u y i j , (7) \begin{aligned}&\min _{y} f=\sum \limits _{i=1}^{n} \sum \limits _{j=1}^{n}C^\mathrm{rou}_{ij}y_{ij}, \end{aligned}\tag{7} yminf=i=1nj=1nCijrouyij,(7)
目标 ( 7) 表明下级决策者只关心客户节点之间的运输成本

t j ≥ max ⁡ { E E T j , ( t i + s i + t i j ) y i j } , ∀ i / j ∈ C , (8) \begin{aligned}&t_j\ge \max \{\mathrm{EET}_{j}, (t_i+s_i+t_{ij})y_{ij}\},\quad \forall i/j \in C, \end{aligned} \tag{8} tjmax{EETj,(ti+si+tij)yij},i/jC,(8)

t j ≤ E L T j , ∀ j ∈ C , (9) \begin{aligned}&t_j\le \mathrm{ELT}_{j}, \quad \forall j \in C, \end{aligned}\tag{9} tjELTj,jC,(9)
约束 ( 8) 和 ( 9) 确保在服务开始时考虑每个客户的时间窗口。
如果车辆早于 E E T \mathrm{EET} EET 到达,则必须等到 E E T \mathrm{EET} EET.
如果它晚于 E E T \mathrm{EET} EET 且早于 E L T \mathrm{ELT} ELT,它可以立即开始服务,即在 ( t i + s i + t i j ) y i j ) (t_i+s_i+t_{ij})y_{ij}) (ti+si+tijyij) 开始服务。
1 n ∑ i = 1 n L i ( t i ) ≥ S a , ∀ i ∈ C , (10) \begin{aligned}&\frac{1}{n}\sum \limits _{i=1}^nL_i(t_i)\ge \mathrm{Sa}, \quad \forall i \in C, \end{aligned}\tag{10} n1i=1nLi(ti)Sa,iC,(10)
约束 ( 10) 确保平均客户满意度高于 S a \mathrm{Sa} Sa
l j k = x k j y i j ( l i k + q ‾ ~ j − d j ) , ∀ k ∈ H , ∀ i / j ∈ C , (11) \begin{aligned}&l_{j}^{k}=x_{kj}y_{ij}(l_{i}^{k}+\widetilde{\overline{q}}_{j}-d_{j}), \quad \forall k \in H, \quad \forall i/j \in C, \end{aligned}\tag{11} ljk=xkjyij(lik+q jdj),kH,i/jC,(11)
约束 ( 11) 对客户 j 的负载施加了限制,其中取货量 q ‾ ~ j \widetilde{\overline{q}}_{j} q j 通常是未知的,因为客户只能给出一个近似值。
l j k ≤ Q k , ∀ k ∈ H , ∀ j ∈ C , (12) \begin{aligned}&l_{j}^{k}\le Q_k, \quad \forall k \in H, \quad \forall j \in C, \end{aligned}\tag{12} ljkQk,kH,jC,(12)
约束 ( 12) 确保每辆车 k 在离开客户 j 时不会违反车辆容量。
y i j ≤ x k j , ∀ k ∈ H , ∀ i / j ∈ C , (13) \begin{aligned}&y_{ij}\le x_{kj},\quad \forall k \in H, \quad \forall i/j \in C, \end{aligned}\tag{13} yijxkj,kH,i/jC,(13)
约束 ( 13) 表明 TSP 应仅针对已分配给特定车辆的客户组求解。
∑ i = 1 n y i j = 1 , ∀ j ∈ C , (14) \begin{aligned}&\sum \limits _{i=1}^{n} y_{ij}=1, \quad \forall j \in C, \end{aligned}\tag{14} i=1nyij=1,jC,(14)

∑ j = 1 n y i j = 1 , ∀ i ∈ C , (15) \begin{aligned}&\sum \limits _{j=1}^{n} y_{ij}=1, \quad \forall i \in C, \end{aligned}\tag{15} j=1nyij=1,iC,(15)
约束 ( 14) 和 ( 15) 要求每个节点只输入一次,只留下一次。

∑ i ∈ V ∑ j ∈ V y i j ≤ ∣ S ∣ − 1 , ∀ S ⊂ V , S ≠ ∅ , (16) \begin{aligned}&\sum \limits _{i \in V} \sum \limits _{j\in V}y_{ij}\le |S|-1, \quad \forall S\subset V, S\ne \emptyset , \end{aligned}\tag{16} iVjVyijS1,SV,S=,(16)
约束 ( 16) 表示需要子消除约束。
y i j = { 0 , 1 } , ∀ i / j ∈ V . (17) \begin{aligned}&y_{ij}=\{0,1\},\quad \forall i/j \in V. \end{aligned}\tag{17} yij={0,1},i/jV.(17)

约束 ( 17) 表明 y i j y_{ij} yij 是一个二元变量。

3.4 全局模型 The global model

SPDTW-MDM 模型有两层,其中上层决策者(即领导者)是处理广义分配问题以实现总成本最小化的 SC ,而追随者是更关心路由成本的 OTC 。全局模型的推导方式如下:
min ⁡ x , z F = ∑ k = 1 K ∑ i = 1 n C k i i n i z k i + ∑ k = 1 K ∑ j = 1 n C k j s e r x k j + ∑ i = 1 n ∑ j = 1 n C i j r o u y i j , 上层成本最小化:仓库成本、服务成本、路由成本 s . t . { ∑ j = 1 n d ‾ ~ j x k j ≤ Q k , ∀ k ∈ H , 原公式(2) ∑ i = 1 n z k i = K , ∀ k ∈ H , 原公式(3) ∑ k = 1 K x k j = 1 , ∀ j ∈ C , 原公式(4) z k i = { 0 , 1 } , ∀ k ∈ H , ∀ i ∈ C , 原公式(5) x k j = { 0 , 1 } , ∀ k ∈ H , ∀ j ∈ C , 原公式(6) min ⁡ y f = ∑ i = 1 n ∑ j = 1 n C i j r o u y i j , 下层成本最小化:路由成本 s . t . { t j ≥ max ⁡ { E E T j , ( t i + s i + t i j ) y i j } , ∀ i / j ∈ C , 原公式(8) t j ≤ E L T j , ∀ j ∈ C , 原公式(9) 1 n ∑ i = 1 n L i ( t i ) ≥ S a , ∀ i ∈ C , 原公式(10) l j k = x k j y i j ( l i k + q ‾ ~ j − d j ) , ∀ k ∈ H , ∀ i / j ∈ C , 原公式(11) l j k ≤ Q k , ∀ k ∈ H , ∀ j ∈ C , 原公式(12) y i j ≤ x k j , ∀ k ∈ H , ∀ i / j ∈ C , 原公式(13) ∑ i = 1 n y i j = 1 , ∀ j ∈ C , 原公式(14) ∑ j = 1 n y i j = 1 , ∀ i ∈ C , 原公式(15) ∑ i ∈ V ∑ j ∈ V y i j ≤ ∣ S ∣ − 1 , ∀ S ⊂ V , S ≠ ∅ , 原公式(16) y i j = { 0 , 1 } , ∀ i / j ∈ V . 原公式(17) (18) \begin{aligned} \begin{array}{l} \min _{x,z} F= \sum \limits _{k=1}^{K}\sum \limits _{i=1}^{n}C^\mathrm{ini}_{ki}z_{ki}+ \sum \limits _{k=1}^{K} \sum \limits _{j=1}^{n}C^\mathrm{ser}_{kj}x_{kj} +\sum \limits _{i=1}^{n} \sum \limits _{j=1}^{n}C^\mathrm{rou}_{ij}y_{ij}, \\ \text{上层成本最小化:仓库成本、服务成本、路由成本}\\ s.t.\left\{ \begin{array}{l} \sum \limits _{j=1}^{n}\widetilde{\overline{d}}_{j}x_{kj} \le Q_k,\quad \forall k \in H, \text{原公式(2)}\\ \sum \limits _{i=1}^{n}z_{ki}=K, \quad \forall k \in H,\text{原公式(3)}\\ \sum \limits _{k=1}^{K}x_{kj}=1 ,\quad \forall j \in C,\text{原公式(4)}\\ z_{ki}=\{0,1\},\quad \forall k \in H,\quad \forall i \in C,\text{原公式(5)}\\ x_{kj}=\{0,1\},\quad \forall k \in H, \quad \forall j \in C,\text{原公式(6)}\\ \min _{y} f=\sum \limits _{i=1}^{n} \sum \limits_{j=1}^{n}C^\mathrm{rou}_{ij}y_{ij},\text{下层成本最小化:路由成本}\\ s.t.\left\{ \begin{array}{l} t_j\ge \max \{\mathrm{EET}_{j}, (t_i+s_i+t_{ij})y_{ij}\},\quad \forall i/j \in C,\text{原公式(8)}\\ t_j\le \mathrm{ELT}_{j}, \quad \forall j \in C,\text{原公式(9)}\\ \frac{1}{n}\sum \limits _{i=1}^nL_i(t_i)\ge \mathrm{Sa}, \quad \forall i \in C,\text{原公式(10)}\\ l_{j}^{k}=x_{kj}y_{ij}(l_{i}^{k}+\widetilde{\overline{q}}_{j}-d_{j}), \quad \forall k \in H, \quad \forall i/j \in C,\text{原公式(11)}\\ l_{j}^{k}\le Q_k, \quad \forall k \in H, \quad \forall j \in C,\text{原公式(12)}\\ y_{ij}\le x_{kj},\quad \forall k \in H, \quad \forall i/j \in C,\text{原公式(13)}\\ \sum \limits _{i=1}^{n} y_{ij}=1, \quad \forall j \in C,\text{原公式(14)}\\ \sum \limits _{j=1}^{n} y_{ij}=1, \quad \forall i \in C,\text{原公式(15)}\\ \sum \limits _{i \in V} \sum \limits _{j\in V}y_{ij}\le |S|-1, \quad \forall S\subset V, S\ne \emptyset ,\text{原公式(16)}\\ y_{ij}=\{0,1\},\quad \forall i/j \in V. \text{原公式(17)}\end{array}\right. \end{array}\right. \end{array} \end{aligned} \tag{18} minx,zF=k=1Ki=1nCkiinizki+k=1Kj=1nCkjserxkj+i=1nj=1nCijrouyij,上层成本最小化:仓库成本、服务成本、路由成本s.t. j=1nd jxkjQk,kH,原公式(2)i=1nzki=K,kH,原公式(3)k=1Kxkj=1,jC,原公式(4)zki={0,1},kH,iC,原公式(5)xkj={0,1},kH,jC,原公式(6)minyf=i=1nj=1nCijrouyij,下层成本最小化:路由成本s.t. tjmax{EETj,(ti+si+tij)yij},i/jC,原公式(8)tjELTj,jC,原公式(9)n1i=1nLi(ti)Sa,iC,原公式(10)ljk=xkjyij(lik+q jdj),kH,i/jC,原公式(11)ljkQk,kH,jC,原公式(12)yijxkj,kH,i/jC,原公式(13)i=1nyij=1,jC,原公式(14)j=1nyij=1,iC,原公式(15)iVjVyijS1,SV,S=,原公式(16)yij={0,1},i/jV.原公式(17)(18)

4 具有 FLC– FRS 的基于优先级的混合嵌套 GA

在本节中,开发了基于 FLC-FRShpn-GA 来求解 SPDTW-MDM ,包括模糊逻辑控制器、模糊随机仿真、基于优先级的初始化方法和基于GA的混合算子。最后,给出了它的整体程序。

4.1 基于GA的突变FLC [GA-based mutation FLC]

该文在 hpn-GA (混合优先级的嵌套遗传算法)中采用了突变 FLC (模糊逻辑控制)。设 △ f ( τ ) \bigtriangleup f(\tau) fτ) 是第 τ \tau τ 代和 ( τ − 1 ) (\tau -1) (τ1) 代之间平均适应度值的差值 ε \varepsilon ε 是一个接近于零的小正数(在本文中, ε = 0.1 ) \varepsilon =0.1) ε=0.1,则使用以下 If-Then 概念完成同一下一代的相同突变率:

平均适应度:是所有个体适应度值的平均值,它反映了整个种群的平均适应程度。
计算方法:

  1. 对种群中的每个个体,根据其基因编码和特定的适应度函数,计算其适应度值。
  2. 将所有个体的适应度值相加,得到适应度值总和。
  3. 将适应度值总和除以种群中个体的数量,即得到平均适应度值
  1. 如果 ∣ △ f ( τ ) − △ f ( τ − 1 ) ∣ < ε |\bigtriangleup f(\tau )-\bigtriangleup f(\tau -1)|<\varepsilon fτfτ1<ε ,则迅速增加下一代的突变率 m p mp mp; 即上一代与下一代的适应度变化不大,则快速增大突变率

  2. 如果 △ f ( τ ) − △ f ( τ − 1 ) < ε \bigtriangleup f(\tau )-\bigtriangleup f(\tau -1)<\varepsilon fτfτ1<ε,则降低下一代的突变率 m p mp mp;适应度值提高了但不多,则降低突变率

  3. 如果 △ f ( τ ) − △ f ( τ − 1 ) > ε \bigtriangleup f(\tau )-\bigtriangleup f(\tau -1)>\varepsilon fτfτ1>ε,则为下一代选择突变率 m p mp mp

这个突变率应该是控制基因遗传算法中代与代之间变化的程度大小。

FLC 的输入为 △ f ( τ ) \bigtriangleup f(\tau ) fτ) △ f ( τ − 1 ) \bigtriangleup f(\tau -1) fτ1),输出为突变率的变化 △ m ( τ ) \bigtriangleup m(\tau) mτ)。所有输入和输出模糊语言变量的隶属函数如图2所示,其中NR表示大负数,NL表示较小负数,NM表示中负数,NS表示小负数,ZE表示零,PS表示小正数,PM表示中正数,PL表示大正数,PR表示较大的正数, 分别。根据一些实验数据和领域专家意见(Wang 1997), − 4.0 -4.0 4.0分是输入值的最小值, 而4.0是其最大值。对于设施,使用模糊决策表,如表1所示。设 λ ∈ [ − 1.0 , 1.0 ] \lambda \in [-1.0,1.0] λ[1.0,1.0] 为调节突变率的增加和减少范围,分配输入值后可以确定缩放值 Z(i, j)。然后确定突变率的变化如下:
△ m ( τ ) = λ Z ( i , j ) . \bigtriangleup m(\tau )=\lambda Z(i,j). mτ=λZij.
下一代的突变率值计算如下:
m p ( τ + 1 ) = m p ( τ ) + △ m ( τ ) , mp(\tau +1)=mp(\tau )+\bigtriangleup m(\tau ), mpτ+1=mpτ+mτ),
其中 m p ( τ ) mp(\tau) mpτ) 是生成 τ \tau τ 时的突变率.

在这里插入图片描述图2.The membership function for input–output FLC variable
输入-输出 FLC 变量的隶属函数

一个栗子(猜测)
假设 Δ f ( 5 ) = − 4 , Δ f ( 4 ) = − 3. m p ( 5 ) = 0.1 , λ = 0.01 \Delta f(5)=-4,\Delta f(4)=-3. mp(5)=0.1, \lambda=0.01 Δf(5)=4,Δf(4)=3.mp(5)=0.1,λ=0.01
则突变率变化值为: Δ m ( 5 ) = λ ⋅ Z ( − 4 , − 3 ) = 0.01 ⋅ ( − 3 (见表1) ) = − 0.03 \Delta m(5) =\lambda \cdot Z(-4,-3) =0.01 \cdot (-3\text{(见表1)})=-0.03 Δm(5)=λZ(4,3)=0.01(3(见表1))=0.03
下一代的突变率为: m p ( 6 ) = m p ( 5 ) + Δ m ( 5 ) = 0.1 − 0.03 = 0.07 mp(6)=mp(5)+\Delta m(5)=0.1-0.03=0.07 mp(6)=mp(5)+Δm(5)=0.10.03=0.07

表1 突变率控制作用去模糊化表

在这里插入图片描述

4.2 基于GA的模糊随机仿真[GA-based fuzzy random simulation]

机会约束算子 用于处理存在不确定性和模糊性的优化问题, 允许在优化过程中考虑满足一定概率约束的解,而不是传统优化中严格的确定性约束。
操作步骤如下:

  1. 定义约束条件:首先,需要明确问题中的约束条件,这些条件可能涉及决策变量的取值范围、系统性能要求等。在模糊随机环境中,这些约束条件可能包含模糊参数或随机变量。
  2. 设置概率阈值:机会约束算子要求约束条件以一定的概率被满足。因此,需要设定一个概率阈值,例如95%或99%,表示约束条件至少以这个概率被满足。
  3. 构建机会约束表达式:根据约束条件和概率阈值,构建机会约束表达式。这个表达式描述了约束条件在不确定性环境下被满足的概率。这通常涉及到模糊集合运算、概率计算等。
  4. 集成到遗传算法中:将机会约束算子集成到基因遗传算法中,作为评估个体适应度的一部分。在遗传算法的每一代中,对于每个个体,都需要计算其满足机会约束的程度,并将其纳入适应度函数中。
  5. 选择、交叉和变异:根据个体的适应度值,进行选择、交叉和变异操作,以产生新的个体。在选择过程中,适应度更高的个体(即更可能满足机会约束的个体)将有更大的概率被选中进行繁殖。
  6. 迭代优化:通过不断迭代上述步骤,逐步优化种群中的个体,直至满足终止条件(如达到最大迭代次数或找到满足要求的解)。

众所周知,很难处理不确定的变量,尤其是 FRV。因此,有必要首先处理模糊随机元素。采用机会约束算子 chance-constrained operator,在预定的置信水平 ( α , β ) (\alpha ,\beta ) (αβ)下将模糊随机约束转换为清晰约束。回想一下,随机事件 f j ( ξ ) ≤ 0 , j = 1 , 2 , … , m f_{j}(\xi ) \leq 0, j=1,2,\ldots ,m fj(ξ)0j=1,2m 的概率,其中 ξ = ( ξ 1 , ξ 2 , … , ξ n ) \xi =(\xi_1,\xi _2,\ldots ,\xi _n) ξ=ξ1ξ2ξn)是随机向量,由下式定义
其中 n n n应该与节点的数量有关。

Pr ⁡ { ω i ∈ Ω i    ∣ f j ( ξ 1 ( ω 1 ) , ξ 2 ( ω 2 ) , … , ξ n ( ω n ) ) ≤ 0 1 ≤ i ≤ n   ∣ j = 1 , 2 , … , m } \begin{aligned} \Pr \left\{ \begin{array}{l} \omega _i \in \varOmega _i \,\,\Big | f_j(\xi _1(\omega _1),\xi _2(\omega _2),\ldots ,\xi _n(\omega _n))\le 0\\ 1\le i \le n ~\Big | j=1,2,\ldots ,m \end{array}\right\} \end{aligned} Pr ωiΩi fj(ξ1(ω1),ξ2(ω2),,ξn(ωn))01in  j=1,2,,m

模糊事件 f j ( α ~ 1 , α ~ 2 , … , α ~ n ) ≤ 0 , j = 1 , 2 , … , m f_j(\widetilde{\alpha }_1,\widetilde{\alpha }_2,\ldots ,\widetilde{\alpha }_n)\le 0, j=1,2,\ldots ,m fjα 1α 2α n0j=1,2m 定义如下:

sup ⁡ x 1 , x 2 , … , x n ∈ R { min ⁡ 1 ≤ i ≤ n μ α ~ i ( x i ) ∣ f j ( x 1 , x 2 , … , x n ) ≤ 0 } . \begin{aligned} \sup \limits _{x_1,x_2,\ldots ,x_n \in R} \left\{ \min \limits _{1\le i \le n}\mu _{\widetilde{\alpha }_i}(x_i)\big |f_j(x_1,x_2,\ldots ,x_n)\le 0 \right\} . \end{aligned} x1,x2,,xnRsup{1inminμα i(xi) fj(x1,x2,,xn)0}.

两者都可能是实数。但是,对于模糊随机事件,机会是一个函数而不是一个数字。通常,文献 Liu ( 2001) 中的定义被用于模糊随机事件的概率。针对机会约束规划,该文提出一种模糊随机仿真方法。取约束方程(2),

∑ j = 1 n d ‾ ~ j x k j ≤ Q k \begin{aligned} \sum \limits _{j=1}^{n}\widetilde{\overline{d}}_{j}x_{kj} \le Q_k \end{aligned} j=1nd jxkjQk

例如,可以按如下方式进行转换:
C h { ∑ j = 1 n d ‾ ~ j x k j ≤ Q k , ∀ k ∈ H } ( α ) ≥ β . \begin{aligned} Ch\left\{ \sum \limits _{j=1}^{n}\widetilde{\overline{d}}_{j}x_{kj} \le Q_k,\quad \forall k \in H\right\} (\alpha )\ge \beta . \end{aligned} Ch{j=1nd jxkjQk,kH}(α)β.

算法 1 显示了详细的机会约束chance-constrained operation操作程序。

在这里插入图片描述

这段文字描述了一个基于模糊向量和随机采样的算法流程,用于确定一个向量 d j d_j dj是否可行。流程:

  1. 步骤1:设置初始值, p = 1 p = 1 p=1 q = 1 q = 1 q=1。其中,p用于追踪已经尝试的样本数量,q用于追踪在当前样本下未满足条件的尝试次数。
  2. 步骤2:根据概率度量Pr集合Ω中生成一个随机向量ω,其由 ω 1 , ω 2 , . . . , ω P ω_1, ω_2, ..., ω_P ω1,ω2,...,ωP组成。
  3. 步骤3:从 模糊向量 d ~ j ( ω ) \tilde{d}_j(ω) d~j(ω) θ i θ_i θi-切集均匀地生成一个 确定的向量 d j d_j dj。这里i从1到P遍历,意味着对每个分量都执行此操作
  4. 步骤4:检查生成的 d j d_j dj是否满足条件 ∑ j = 1 n d ~ j x k j ≤ Q k ∑_{j=1}^n \tilde{d}_j x_{kj} ≤ Q_k j=1nd~jxkjQk如果满足,则输出 d j d_j dj是可行的,并且更新 p = p + 1 p = p + 1 p=p+1;如果不满足,则转到步骤5,并更新 q = q + 1 q = q + 1 q=q+1
  5. 步骤5:检查当前未满足条件的尝试次数q是否小于或等于Q。如果是,则返回步骤3继续尝试;否则,转到步骤7。
  6. 步骤6:检查已经尝试的样本数量p是否小于或等于P。如果是,则返回步骤2继续生成新的样本;否则,转到步骤7。
  7. 步骤7:统计在尝试过程中d_j被认为是可行的次数 P ′ P' P,并与总尝试次数P进行比较。同时,N是一个足够大的数(可能用于某些统计计算或比较,但在这段文字中没有具体说明其用途)。如果 P ′ / P P'/P P/P 大于等于 η j η_j ηj,则判定 d j d_j dj是可行的;否则,判定 d j d_j dj不可行。这个过程对j从1到p的每一个都执行

整体来说,这个算法流程是通过随机采样和模糊向量的 θ i θ_i θi-切集来尝试生成满足特定条件的向量 d j d_j dj。它通过重复尝试和统计来判断d_j是否最终被认为是可行的。如果 d j d_j dj在足够多的尝试中满足条件的比例高于某个阈值 η j η_j ηj,则它被认为是可行的

  • 模糊向量 d ~ j ( w ) \tilde{d}_j(w) d~j(w) d ~ j ( w ) \tilde{d}_j(w) d~j(w)是一个模糊向量,意味着它的每个分量都是一个模糊集合,而不是具体的数值。模糊集合允许元素以一定的隶属度属于该集合,这个隶属度是一个介于0和1之间的数值。
  • θ i \theta_i θi-切集: 对于模糊集合或模糊向量, θ i \theta_i θi-切集是指该模糊集合中所有隶属度不小于 θ i \theta_i θi的元素构成的集合。这是一个“硬化”的过程,即将模糊集合转化为一个具有确定边界的集合。
  • 确定的向量 d j d_j dj :通过上述过程生成的向量d_j是一个确定的向量,因为它的每个分量都是一个具体的数值,而不是模糊集合。
### 举例
import numpy as np  
  
# Step 1: Define the fuzzy vector d_j(w) and its membership functions  
# Let's assume a simple triangular membership function for each component  
def membership_function(x, a, b, c):  
    if x < a or x > c:  
        return 0  
    elif a <= x < b:  
        return (x - a) / (b - a)  
    else:  
        return (c - x) / (c - b)  
  
# Define the parameters for the membership functions of d_j(w)  
a_values = [1, 2]  # Left endpoints  
b_values = [3, 4]  # Peaks  
c_values = [5, 6]  # Right endpoints  
  
# Step 2: Calculate the \theta_i-cut  
theta_i = 0.5  # The cut-off membership grade  
cuts = []  
for a, b, c in zip(a_values, b_values, c_values):  
    # Find the range of the \theta_i-cut  
    if theta_i == 0:  
        cut_range = (float('-inf'), float('inf'))  
    elif theta_i == 1:  
        cut_range = (b, b)  # Only the peak if theta_i is 1  
    else:  
        x1 = a + (b - a) * theta_i  
        x2 = c - (c - b) * theta_i  
        cut_range = (x1, x2)  
    cuts.append(cut_range)  
  
# Step 3: Generate a uniform sample from each component's cut  
d_j = []  
for cut in cuts:  
    # Generate a uniform random value within the cut range  
    if cut[0] == float('-inf') and cut[1] == float('inf'):  
        # If the range is unbounded, we need to define bounds or handle it separately  
        raise ValueError("Unbounded range in the cut. Define bounds or handle separately.")  
    sample = np.random.uniform(cut[0], cut[1])  
    d_j.append(sample)  
  
# Step 4: Construct the determined vector d_j  
d_j = np.array(d_j)  
print("Determined vector d_j:", d_j)

4.3 GA基于优先级的初始化方法 [GA priority-based initializing method]

开发的 GA 的初始化方法包括两个操作步骤第一步是上层的初始化,第二步是下层的初始化上层染色体中的基因是基本基因,包括两个因素:基因座[the locus ](节点),即基因在染色体结构中的位置,以及等位基因[the allele](决定),即基因所取的值。对于上层,领导者处理广义分配问题,以最小化总成本。因此,它的基因也由两个部分组成:前面的片段代表种子客户决策,其中节点是载体编号,等位基因是相应载体的选定种子客户;后半部分显示了客户集群决策,其中节点是客户节点,相应的等位基因是服务载体,参见图 3 中的步骤 1

要初始化较低级别的染色体,首先需要清楚地描述基于优先级的编码规则基因的位置用于表示节点(客户),而值用于表示节点的优先级整数越大,节点的优先级越高OTC 的主要兴趣是为领导者的客户分配找到最佳路线。具体而言,种子客户被定义为路由中的第一个客户,由领导者决定。因此,应从下层的初始化中删除种子客户。初始化下层的步骤如下:
对于客户 1 … n 1\ldots n 1n,从图 3 的步骤1中删除种子客户,并为剩余客户设置优先级,参见图 3 中的步骤2;
种子客户数量等于车辆数量;因此,有 n − K n-K nK个客户需要被分配,并设置 m = n − K m=n-K m=nK m m m为最大优先级;
按客户的服务载体对客户进行分类(在步骤 1 的后半部分进行客户集群决策),节点的优先级越高,客户被分配到其服务载体的速度就越快,参见图 3 中的步骤 3

在这里插入图片描述

图 4 显示了一个包含 2 辆车和 7 个客户的简单示例。根据步骤 1 中的染色体,领导者决定客户 4 和 6 为种子客户,客户 2、4 和 5 为车辆 1 服务的集群,客户 1、3、6 和 7 由车辆 2 提供服务。然后说到跟随者,根据步骤2中的染色体和修改后的基于优先级的低级编码,跟随者的路由决策是车辆1的( 4 → 2 → 5 4\rightarrow 2\rightarrow 5 425)和车辆2的( 6 → 1 → 7 → 3 6\rightarrow 1\rightarrow 7\rightarrow 3 6173

在这里插入图片描述

4.4 GA适应度函数与惩罚系数[GA fitness function with penalty factor]

目标函数,最小化总成本,在具有 FLC-FRShpn-GA 中被视为适应度函数当染色体不能满足约束条件时,会给其适应度函数分配一个惩罚因子使用惩罚因子可以帮助算法避免陷入无限循环。但是,当惩罚因子的值不够大,或者算法很难找到有效的染色体时,可能会提交一些不合格的解决方案
🐸如果染色体符合所有约束条件,则适应度函数如下:

F i t n e s s = ∑ k = 1 K ∑ i = 1 n C k i i n i z k i + ∑ k = 1 K ∑ j = 1 n C k j s e r x k j + ∑ i = 1 n ∑ j = 1 n C i j r o u y i j . (19) \begin{aligned} \mathrm{Fitness}= & {} \sum \limits _{k=1}^{K}\sum \limits _{i=1}^{n}C^\mathrm{ini}_{ki}z_{ki}+ \sum \limits _{k=1}^{K} \sum \limits _{j=1}^{n}C^\mathrm{ser}_{kj}x_{kj}\nonumber \\&+\sum \limits _{i=1}^{n} \sum \limits _{j=1}^{n}C^\mathrm{rou}_{ij}y_{ij}. \end{aligned} \tag{19} Fitness=k=1Ki=1nCkiinizki+k=1Kj=1nCkjserxkj+i=1nj=1nCijrouyij.(19)

同公式(1),上层问题成本最小化

🐸否则,如果不满足约束条件,则将适应度函数与惩罚因子相结合,即:

F i t n e s s = ∑ k = 1 K ∑ i = 1 n C k i i n i z k i + ∑ k = 1 K ∑ j = 1 n C k j s e r x k j + ∑ i = 1 n ∑ j = 1 n C i j r o u y i j + M , (20) \begin{aligned} \mathrm{Fitness}= & {} \sum \limits _{k=1}^{K}\sum \limits _{i=1}^{n}C^\mathrm{ini}_{ki}z_{ki}+ \sum \limits _{k=1}^{K} \sum \limits _{j=1}^{n}C^\mathrm{ser}_{kj}x_{kj}\nonumber \\&+\sum \limits _{i=1}^{n} \sum \limits _{j=1}^{n}C^\mathrm{rou}_{ij}y_{ij}+M, \end{aligned} \tag{20} Fitness=k=1Ki=1nCkiinizki+k=1Kj=1nCkjserxkj+i=1nj=1nCijrouyij+M,(20)

其中 M 是惩罚因子,并且足够大。

在具有多层优先级约束的复杂问题中,每层的适应度值可能涉及到多个目标函数和约束条件。这些函数和条件可能包括问题的特定要求、资源限制、性能指标等。
假设我们有一个优化问题,其中下层的目标是最小化某个函数g(y),同时满足一些约束条件。我们可以定义下层适应度函数f_y如下:

import numpy as np  
  
# 假设 g(y) 是我们要最小化的函数  
def g(y):  
    # 这里是函数g的具体实现,y是输入变量  
    # 例如,g(y) = y^2(简单示例,实际中会更复杂)  
    return y ** 2  
  
# 适应度函数 f_y,它基于 g(y) 和可能的约束条件来计算  
def calculate_lower_level_fitness(y, constraints):  
    # 计算 g(y) 的值  
    g_value = g(y)  
      
    # 检查约束条件是否满足  
    is_valid = all(constraint(y) for constraint in constraints)  
      
    # 如果满足约束条件,适应度值为 g(y) 的负值(因为我们是最小化问题)  
    # 如果不满足约束条件,可以赋予一个很大的负值作为惩罚  
    fitness_value = -g_value if is_valid else -np.inf  
      
    return fitness_value  
  
# 约束条件的示例函数(这里只是示例,实际中会有具体的约束条件)  
def constraint1(y):  
    return y >= 0  # 约束条件1:y必须大于等于0  
  
def constraint2(y):  
    return y <= 10  # 约束条件2:y必须小于等于10  
  
# 约束条件的列表  
constraints = [constraint1, constraint2]  
  
# 示例:计算某个y值的下层适应度  
y_example = 5.0  
f_y_example = calculate_lower_level_fitness(y_example, constraints)  
print(f"The lower-level fitness value (f_y) for y = {y_example} is: {f_y_example}")

4.5 基于GA的混合算子 [GA-based hybrid operators]

4.5.1 权重映射交叉[Weight mapping crossover]

进行交叉以探索新的解决方案空间,交叉算子对应于所选父项之间部分字符串的交换。在这项研究中,在具有 FLC-FRShpn-GA 中使用了权重映射交叉,如图5所示。权重定位交叉随机生成一个截止点cut-off point在亲本之间的截止点之后切换尾部,然后在截止点之后将尾部映射为右弦的权重,从而从这些权重中产生新的基因序列。在图5中,截止点被选为节点8,截止点之后的右尾的权重为1 → \rightarrow 2, 3 → \rightarrow 4, 5 → 6 , 6 → 7 5 \rightarrow 6, 6 \rightarrow 7 5667. 通过将数字映射到第二个父项来使用权重,从第一个后代获得新的右字符串为 4、2、6 和 7。使用相同的程序获得第二个后代。 这是在扯什么啊?作者精神状态还好么?我看不懂的东西,不是我的错,肯定是你写的不够明白,understand?

在这里插入图片描述

4.5.2 插入突变 Insert mutation

突变类似于交叉,也是为了防止停滞到局部最佳状态,并能够探索新的解空间。交叉和突变之间的区别在于,突变的变化通常是通过修改染色体内的基因来实现的。本文使用了插入突变。在插入突变中,从亲本染色体中随机选择一个基因,然后在后代染色体中随机生成其位置,如图6所示。

在这里插入图片描述

4.5.3 轮盘选择

选择是对 GA 的利用,以指导进化过程以在可行区域找到最优解。本文采用精英策略的轮盘选择作为本文的选择机制 Zheng et al. ( 2015). 精英部分是染色体中适应度值在世代中比例最高的部分,该比例定义为精英率轮盘选择决定了每条染色体的选择概率与其适应度值成正比。 然后,轮盘可以显示这些概率,其中最健康的染色体的份额最大,最弱的染色体的份额最小,见图7

在这里插入图片描述

4.6 整体程序 Overall procedure

GA 从基于优先级的初始解决方案开始,并在运行代数达到代数时结束。每条染色体在每一代中都根据适应度函数进行评估。新一代染色体是通过选择一些父母和后代来创造的,根据适应度值的选择和精英策略,同时保持恒定的种群规模。每一代的突变率将由模糊逻辑控制器更新。此外,为了适应 BP 模型,GA 中还解决了嵌套结构问题,图 8 更清楚地显示了带有 FLC-FRShpn-GA 的整体过程。

在这里插入图片描述

为了产生新的后代,所有染色体都从父母复制到后代。然后,交叉算子将在每一代中通过权重映射交叉来产生(种群大小) × \times ×(交叉率)后代(见图5)。亲本 1 是从精英部分随机选择的,精英部分由顶部(种群规模) × \times ×(精英率)染色体组成。父母 2 是从其他染色体中选出的。交叉算子获得的所有新后代都将从精英部分获得基因。突变算子将通过插入突变产生(群体大小) × \times ×(突变率)染色体。交叉算子和突变算子可以有效地防止陷入局部最佳值,并能够探索解空间的新区域。

轮子旋转的次数等于种群大小,每次为新种群选择一条染色体。轮盘选择是一种随机抽样程序,适应度值越高的染色体存活率越高。此外,精英主义策略也适用于选择。顶部(种群大小) × \times ×((精英率)染色体直接从第t个亲本中选择到 ( t + 1 ) (t+1) (t+1)个后代。它比传统的概率繁殖要好,在传统的概率繁殖中,最佳解决方案从一代到下一代单调改进。此外,为了防止每一代因体重过重而产生过多重复的染色体,在选择过程之前删除具有完全相同基因的重复染色体(Zheng 等人,2015 年)。

5 案例研究

在本节中,通过一个实例来展示数据特征,其中通过田口方法调整参数并给出结果分析。然后,通过不同实例应用的算法对比,检验所提方法的效率和有效性。所有启发式方法均由 MATLAB R2012a 在戴尔 XPS 13 台式计算机上执行,该台式计算机配备 2.70 GHz Intel Core i5-7200U 处理器,运行 Windows 10 64 位。
在这里插入图片描述在这里插入图片描述

5.1 案例描述及参数设置

共有 29 个客户节点,其信息如下图所示,其中大部分是通过调查获得的。每个客户的模糊随机取货量及其对时间窗口的要求如表2所示。表 3 给出了客户的需求 d ‾ ~ j \widetilde{\overline{d}}_{j} d j 及其路由初始化成本 C k i i n i C^\mathrm{ini}_{ki} Ckiini,其中 d ‾ ~ j \widetilde{\overline{d}}_{j} d j 假设为 FRV,显示为 ( a , ρ ( ω ), b ) (a, \rho (\omega ), b) (aρω),b),其中 ρ ∼ N ( μ , σ 2 ) \rho \sim N(\mu ,\sigma ^2) ρNμσ2)。关于 d ‾ ~ j \widetilde{\overline{d}}_{j} d j q ‾ ~ j \widetilde{\overline{q}}_{j} q j的描述在第2.2节中给出。表 4 表示为客户 j 提供服务的车辆 k 的成本。由于页面限制,此处仅显示部分数据。

在这里插入图片描述

成本 C k i i n i C^\mathrm{ini}_{ki} Ckiini 由上传成本(人工费用)和运输成本(油耗和司机成本)组成。成本 C i j r o u C^\mathrm{rou}_{ij} Cijrou 与运输成本(油耗和司机成本)密切相关。成本 C k j s e r C^\mathrm{ser}_{kj} Ckjser 包括卸货成本(人工费)。根据实际情况,决策者决定本项目使用载重量10吨、行驶速度60公里/小时的6辆卡车。一般来说,在中国,人工费为200至300元/8h(CNY为人民币)一人,这辆卡车的油耗约为300至500元/小时,司机费用约为200元/小时。不同的卡车被分配了不同的劳动力水平,例如,卡车 1 可能有两名工人用于上传或卸载作业,而卡车 2 可能有六名工人。因此,为同一客户提供服务的不同卡车的成本是不同的。

5.1.1 田口法参数分析

众所周知,GA 作为一种元启发式算法,对其值可能影响算法有效性的参数很敏感。在计算之前,需要对带有 FLC–FRS 的 hpn-GA 中的某些参数进行合理的设置。GA 包括几个参数,例如迭代、种群规模、交叉率,这可能导致不同的结果(Soleimani 等人,2017 年)。田口方法作为一种参数校准程序,是许多研究人员使用的非常流行的方法(Amanna 等人,2012 年;Mousavi 和 Niaki 2013;Ding 等人,2018 年)。采用田口设计实验方法对算法参数进行调优。田口开发了一种变换作为变异的度量,称为信噪比signal-to-noise (S/N),这解释了为什么这种类型的参数设计被称为鲁棒性 robust(Ding 等人,2018 年)。此外,田口程序的目标函数分为“越小越好”、“越大越好”和“名义上最好”三组。由于领导者的目标函数是成本最小化,“越小越好”类型是合适的,因此 Mousavi 和 Niaki ( 2013) 和 Ding et al. ( 2018) 给出了相应的信噪比:

S / N = − 10 × log ⁡ 10 ( ∑ t = 1 n F t 2 / n ) (21) \begin{aligned} \textit{S}/\textit{N}=-10\times \log _{10}\left( \sum ^{n}_{t=1}F^{2}_{t}/n\right) \end{aligned}\tag{21} S/N=10×log10(t=1nFt2/n)(21)

在式(21)中,n是带有FLC-FRS的hpn-GA在每个参数水平上执行的次数,F是响应函数值,即目标值, F t F_{t} Ft表示第t个实验的目标值。

在这里插入图片描述

在本文中,交叉率和突变率(Gen et al. 2006)设置为0.5,然后由FLC进行微调。需要使用 Taguchi 方法调整种群大小和迭代的值。本研究应用了 5 个水平,即 20、30、40、50 和 60 作为种群规模,200、300、400、500 和 600 用于迭代;因此,需要对响应进行 25 次观察SPDTW-MDM 的目标,F)。三个(所提方法的运行时间,n)重复用于田口分析。带有FLC-FRS的hpn-GA在每个参数水平上运行3次,并将目标值作为田口分析响应的观测值。为了调整参数,使用了 MINITAB Footnote 1 软件包中的 L25(5**2) 设计。执行田口方法后,使用FLC–FRS的hpn-GA的校准过程如表5所示,相应的信噪比和均值图如图9所示。

在这里插入图片描述
图9 中的信噪比图中可以看出,对于迭代,种群规模(pop-size)的最大信噪比值为 50,迭代值为 500。此外,在均值图中,最小均值出现在 pop-size = 50 和 iteration = 500 中,这也是最大信噪比的参数值。根据实验结果,算法参数可以调整为 pop-size = 50 和 iteration = 500

5.1.2 Case analysis 案例分析

在这里插入图片描述

运行程序30次后,得到最满意的解决方案。图10中的红色虚线显示了HPN-GA在FLC-FRS下不同世代的客观值的详细分布。领导者(SC)的目标价值为26658.722元人民币;解决方案如下所示

Vehicle  1 : 13 → 10 → 8 → 19 → 20 Vehicle  2 : 21 → 4 → 17 → 28 → 9 Vehicle  3 : 25 → 16 → 18 → 24 → 1 Vehicle  4 : 27 → 7 → 5 → 15 → 23 Vehicle  5 : 14 → 29 → 3 → 26 → 6 Vehicle  6 : 11 → 22 → 2 → 12 \begin{aligned} \begin{aligned} \hbox {Vehicle }1:&13\rightarrow 10\rightarrow 8\rightarrow 19\rightarrow 20\\ \hbox {Vehicle }2:&21\rightarrow 4\rightarrow 17\rightarrow 28\rightarrow 9\\ \hbox {Vehicle }3:&25\rightarrow 16\rightarrow 18\rightarrow 24\rightarrow 1\\ \hbox {Vehicle }4:&27\rightarrow 7\rightarrow 5\rightarrow 15\rightarrow 23\\ \hbox {Vehicle }5:&14\rightarrow 29\rightarrow 3\rightarrow 26\rightarrow 6\\ \hbox {Vehicle }6:&11\rightarrow 22\rightarrow 2\rightarrow 12\\ \end{aligned} \end{aligned} Vehicle 1:Vehicle 2:Vehicle 3:Vehicle 4:Vehicle 5:Vehicle 6:1310819202141728925161824127751523142932661122212

SC的目标是将包括三个部分在内的总成本降至最低,而他只能控制两个部分。由于所提出的双层次模型是交互式的,SC可以通过自己的决策过程来影响追随者的决策行为。SC 分别选择客户节点 13、21、25、27、14 和 11 作为每辆车的种子客户,这将使初始化新路线的成本总和为 ∑ k = 1 K ∑ i = 1 n C k i i n i z k i \sum \nolimits _{k=1}^{K}\sum \nolimits _{i=1}^{n}C^\mathrm{ini}_{ki}z_{ki} k=1Ki=1nCkiinizki,包括上传成本(人工费)和运输成本(油耗和司机成本), 合计为7769.69元人民币。客户集也由领导者决定如下:客户节点 8、10、13、19 和 20 由车辆 1 提供服务,节点 4、9、17、21 和 28 由车辆 2 提供服务,节点 1、16、18、24 和 25 由车辆 3 提供服务,节点 5、7、15、23 和 27 由车辆 4 提供服务, 节点 3、6、14、26 和 29 由车辆 5 提供服务,节点 2、11、12 和 22 由车辆 6 提供服务。然后总成本的第二部分,服务成本 ∑ k = 1 K ∑ j = 1 n C k j s e r x k j \sum \nolimits _{k=1}^{K} \sum \nolimits _{j=1}^{n}C^\mathrm{ser}_{kj}x_{kj} k=1Kj=1nCkjserxkj,是14863.31元人民币,其中大部分是卸货成本(人工费labour charges)。

然后是追随者,OTC。他的目标是将总运输成本降至最低。场外交易委员会的决定遵循领导者的决定。当 SC 决定每辆车的种子客户和客户集时,OTC 只能在种子客户和客户集中做出决定。当SC在上一段中做出决定时,OTC将选择最佳路线,以最大限度地降低总路由成本。场外交易的判定可以看作:
车辆1的路线为 13 → 10 → 8 → 19 → 20 13\rightarrow 10\rightarrow 8\rightarrow 19\rightarrow 20 131081920
车辆2为 21 → 4 → 17 → 28 → 9 21\rightarrow 4\rightarrow 17\rightarrow 28\rightarrow 9 21417289
车辆3为 25 → 16 → 18 → 24 → 1 25\rightarrow 16\rightarrow 18\rightarrow 24\rightarrow 1 251618241,车辆4为 27 → 7 → 5 → 15 → 23 27\rightarrow 7\rightarrow 5\rightarrow 15\rightarrow 23 27751523
车辆 5 是 14 → 29 → 3 → 26 → 6 14\rightarrow 29\rightarrow 3\rightarrow 26\rightarrow 6 14293266
车辆 6 是 11 → 22 → 2 → 12 11\rightarrow 22\rightarrow 2\rightarrow 12 1122212
因此,与运输成本(油耗和司机成本)密切相关的总运输成本 ∑ j = 1 n C i j r o u y i j \sum \limits _{j=1}^{n}C^\mathrm{rou}_{ij}y_{ij} j=1nCijrouyij为4025.032元人民币

5.2 计算结果

5.2.1 不同实例的数据

在这里插入图片描述

为了证明所提出的方法在SPDPTW-MDM中的性能,通过随机生成的不同尺度(从小到大)的实例进行了广泛的实验。所提算法中的参数值在第 5.2.2 节中设置为相同。我们决定生成新的实例集,因为据我们所知,文献中没有其他实例专门针对我们的问题。基于文献Soleimani等人(2018)和相关数据的调查,通过数据模拟算法随机生成实例,以检查HPN-GA与FLC-FRS的效率和有效性。至于实例规模,文献Goksal et al. ( 2013) 涉及 50 到 199 个客户节点,文献 Marinakis 和 Marinaki ( 2010) 中涉及 51 到 200 个节点,文献 Ai 和 Kachitvichyanukul ( 2009) 中的客户总数从 29 到 134 个客户不等。本文将不同规模的实例的客户节点数设置为20、30、40、50、60、100、120和150。表 6 显示了应用实例中的参数范围。

在多次运行该方法后,发现时间窗口是非常严格的约束,尽管在所提出的模型中考虑了软时间窗口。当客户数量超过60时,结果太难获得。因此,对于超过 60 个客户的案例,将释放时间窗口限制。在实践中,提出了时间窗口,以提高对时间要求较高的客户的服务水平。可以得出这样的结论:优质的服务适用于不同规模的实例,而如果一个实例中客户太多,则很难令人满意。

5.2.2 算法比较

我们已经使用PSO在CVRP领域进行了一些研究(马和Xu 2015),并且GLNSO被证明与其他求解CVRP的方法具有竞争力(Ai and Kachitvichyanukul 2009)。基于之前的研究,我们发现 GA 可能具有比 PSO 更好的解决方案的能力。为了证明所提方法的有效性,本文对GLNPSO、hpn-GA与FLC-FRS以及hpn-GA与FRS进行了简要比较。在实验中,两种GA算法使用相同的编码方法(即基于优先级的编码)。并且还调整了相同的混合运算符,例如重量映射交叉、插入突变和轮盘选择。参数值设置如下:种群大小为 50;所有三种方法的迭代次数均为 500;GAs的交叉值和突变率值设置为0.5,区别在于hpn-GA与FLC使用突变FLC;惯性权重为0.9,随着迭代次数的增加,从0.9线性下降到0.4,GLNPSO的加速度常数为1.5(马和Xu 2015)。

案例研究的实验运行了 30 多次。图 10 显示了 GLNPSO 历史上最好的 hpn-GA、带 FLChpn-GAhpn-GA 的收敛历史。从图10可以看出,早期阶段的结果很差,因为染色体上可能有一个惩罚因素,而染色体已经超出了可行区域。随着程序的运行,三种算法的适应度值在一开始会迅速下降,并且在迭代结束时结果会变得更好。对于 hpn-GA 来说,一代又一代寻求最优解决方案的多样性没有太大差异。相比之下,对于带有FLC的hpn-GA,在迭代前期的寻道范围很大,然后随着迭代的增加而变得越来越小,最终找到了更好的最优解。GLNPSO寻找最优适应度值的速度比GA快,但其适应度值弱于GA。三种方法的统计结果如表7所示。结果表明,虽然具有FLC的hpn-GA比hpn-GA和GLNPSO需要更多的时间,但与其他两种方法相比,它具有更稳定的趋势和更好的适应度值。因此,所提算法对于求解所提出的SPDTW–MDM具有实用性和有效性。
在这里插入图片描述

每个实例运行30次后,该实例及其对应的结果如表7所示。表7 中实例的常用名称;ID:实例 ID,已使用实例 8 个;CN:实例中的客户数量;VN:实例中的车辆数量;MOV:客观值的平均值;SD:实例客观值的标准差;CP:实例的计算时间。

表7可以看出,具有FLC–FRS的hpn-GA的MOV低于GLNPSO和具有FRS的hpn-GA以及SD。使用 FRS 的 GLNPSO 或 hpn-GA 的结果不是那么好的原因是,当某些约束不满足时,会执行惩罚因子。可以得出结论,与GLNPSO和具有FRS的hpn-GA相比,具有FLC-FRS的hpn-GA更稳定,可以达到更好的目标。对于 CT,所有三种算法都需要更多的 CPU 时间和更大的实例,而对于相同规模的实例,具有 FLC-FRShpn-GA 比其他两种算法需要更多的时间。随着实例的增加,时间间隔变得越来越大。总之,尽管需要更多时间,但表7的结果证明了所提出的hpn-GA与FLC-FRS在处理不同尺度的SPDTW-MDM方面的绝对效率。

6 结论

本文研究了一种特殊类型的VRP,即SPDTW-MDM,这是一种分别使用模糊随机理论和BP来描述FRV和多个决策者的新模型。在此模型中,客户需求和提货量被视为 FRV。供应公司是领导者,试图通过决定客户群来最小化总成本,而外包运输公司作为追随者,旨在通过为每辆车分配路线来最小化路线成本。然后改进了带有FLC-FRS的hpn-GA求解了SPDTW-MDM,其中基于优先级的初始化方法使初始化更适用,嵌套过程结构处理多个决策者,模糊逻辑控制器帮助调整突变率,使用模糊随机模拟处理不确定性。

给出了一个案例来显示SPDPTW-MDM的数据特性。由于参数值对所提出的具有FLC-FRS的hpn-GA结果有很大影响,因此该方法已经用不同的种群大小和最大生成值进行了多次测试,以通过田口分析获得最合适的值。然后,通过所有适当的参数实现最佳结果,并分别从领导者和追随者的角度进行分析。第三,为了更好地证明所提算法的有效性,通过随机生成的不同尺度的实例进行了大量的实验。如果客户太多,则很难满足时间窗口。对GLNPSO、带有FLC-FRS的hpn-GA和带有FRS的hpn-GA进行了简要比较,证明了所提出的带有FLC-FRS的hpn-GA在处理不同尺度的问题时是有效的

  • 25
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值