【文献研究】车辆路径问题静态合作博弈的数学模型及算法实现

news2024/11/28 22:36:05

前言:以2015年发表在期刊《MATHEMATICAL GAME THEORY AND APPLICATIONS》上的文章《Strong Coalitional Equilibrium in a Transportation Game》为学习资料,学习关于车辆路径模型的合作博弈。以下是本人对文献内容的一些粗浅理解,由于本人英文阅读水平有限,可能对文献理解的不到位,对VRP合作博弈问题感兴趣的人员可以下载文献进一步学习。

1. 文献研究回顾

在这里插入图片描述

文献研究的背景:合作博弈理论研究协作行为的能力,为了减少不同承运人之间的运输成本。车辆路径模式方面的合作还只有少数文献研究。文献[3-5]运用合作博弈的理论研究合作问题。在合作博弈理论中最重要的目标是博弈的特征函数,博弈的特征函数可以用来评估参与者构建联盟能获得的总成本。实际合作的数学模型的主要作用是选择一个构造方法去建立上面提及的博弈的特征函数。由于该问题的高纬度,去评估合作路径博弈特征函数的计算复杂度增加了。由于这个原因,本文不能用精确解算法去求解少量客户的路径问题,如文献[2-4]。同时,一般的启发式方法也不能保证求出问题的结果后得到的特征函数满足次可加性。至今,特征函数的次可加性对于合作后产生的成本节约是重要的。当考虑动态合作模型时,运用Petrosjan倡导的归罪分配方法(imputation distribution procedures),以及Petrosjan和Zenkevich出版的书[1]中提到的稳定合作理论。

文献主要研究问题如下:承运人在大规模的运输网络进行合作的条件下,本文研究车辆路径问题的运输成本最小化。本文所建模型是带有可转让效用函数的动态合作博弈模型。提出一个启发式的迭代算法用于构建静态博弈中的带有次可加性的函数。调整算法去构造动态路径博弈问题中的特征函数。运用Shapley值和核心法去形成最优的解。最后,动态博弈中我们描述一个成本分配的过程,保证核心的时间一致性和合作协议的动态稳定性。

文献研究的主要成果:在承运人合作条件下特征函数的确定方法,特征函数要满足次可加性。为了求解该问题,我们提出被称之为联盟归纳算法。该算法结合了好几种求解高维问题的启发式算法。
计算特征函数评价值的算法产生了有效的货物运输路线。因此,我们得到了每个合作者的直接成本、联盟的总成本和运用Shapley值求出的成本分配。这些信息决定了承运人在博弈中的合作行为。通过借助联盟归纳算法分析承运人在动态模型中的合作,我们引进了迭代联盟归纳算法。迭代联盟归纳算法的应用保证了每个子博弈中特征函数的次可加性。核心最优化理论和提出的成本分配方法保证了分配过程有较强的动态稳定性。而且,个体参与者的偏差和他们形成的联盟在任何阶段都不是合理的,直到联盟成本没有减少为止。

以下仅就车辆路径问题的静态博弈模型发表下本人对文献的理解,不涉及动态运输博弈模型。

2. 问题描述

假设运输服务市场上有好几家运输公司或者叫做承运人。每个承运人有自己的顾客集合和资源(仓库和车辆)。这些承运人考虑组建不同的联盟去减少他们各自的运输成本。不同的联盟都满足可以利用共享的资源去进行运输服务的条件。因此,在合作的框架下,每个联盟中的成员重新分配各自服务的顾客。很明显这种重新分配顾客的方式调整了每个联盟中成员的车辆运输路径。在共享车辆的联合路径合作模式下,决策者面临在时间不充分的情况下需要尽快分配路线以使联盟总运输成本最小的问题,这个问题是一个NP难问题。

在联盟的最优路线确定下来之后,然后在计算联盟的总运输成本,这是可能去计算合作路径博弈的特征函数的。只要博弈的特征函数满足次可加性,参与者就愿意组建联盟。一般而言,用启发式算法去求联盟总运输成本最小化不能保证满足这一性质。因此,车辆路径问题要求提出特别的元启发式算法求解路线设计问题得到最优解或近似最优解,确保特征函数满足次可加性。

车辆路径问题的难点是构建车辆的运行路径以满足顾客的运输需求。根据实际情况,每条路线的起点和终点都是同一个仓库。对于每一条路线,要求车辆在仓库的状态是不进行任何装卸活动的。换句话说,车辆只能在路线上使用,仓库只是作为存放车辆的一个场所。每个顾客点只被服务一次。而且,每条路线上总的顾客需求不能超过该车辆的最大容量。每辆车移动到顾客点的时间加上在顾客点服务的时间不能超过一个给定的数值。带有时间窗的路径问题中,顾客被服务的时间必须要在给定的时间范围内。通常这类问题旨在优化使总的路线长度最短。但是在很多情况下使用的车辆数量不是固定的,为了使总运输成本最低,很明显也要求去减少车辆的使用数量。这么说的一个潜在原因是向第三方进行车辆维修的成本或是租赁车辆的成本明显超出了从最短路径上取得的收益,这种情况只是与承运人使用自己的车辆进行运输的情况相比而言的。

3. 静态合作路径博弈的数学模型

在这里插入图片描述是在相同运输网络上的承运人集合。在这里插入图片描述是参与人可以加入的联盟,我们研究的是可转移支付的静态博弈。联盟的成本是由两部分组成的,车辆的维护成本和运输成本。假设车辆的运输成本与该车辆运行的总路线长度是线性关系。联盟中车辆的维护成本是固定的并且每辆车的维护成本都是相同的。因此,问题的成本函数如下:

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

假定每个承运人只有一个仓库,并且合作的承运人之间能够借助一个特定的支付过程重新分配运输成本。

考虑合作路径博弈特征函数的结构,要求必须满足次可加性。在联盟的可行路线集合条件下,研究下面的成本最小化问题。

在这里插入图片描述
(要求在条件下联盟总运输成本最小)

在这里插入图片描述是公式(3.1)求得的最小值。我们强调在顾客数量较多时,问题的求解用到启发式算法。因此,启发式算法求得的在这里插入图片描述值要至少大于等于精确值在这里插入图片描述,即在这里插入图片描述

在这里插入图片描述

首先找到所有单个联盟的特征函数值在这里插入图片描述,然后找到所有由两个成员构成的联盟的特征函数值,逐步增加联盟的规模直到评估总联盟在这里插入图片描述的特征函数值。由公式(3.5),不等式(3.2)和(3.4)可知,所构建的特征函数具有次可加性:

在这里插入图片描述

计算可转移支付的路径博弈特征函数的算法叫做直接联盟归纳算法(the direct coalition induction algorithm)。因此,进行如下定义。

定理:可转移支付合作静态路径博弈的特征函数在这里插入图片描述由直接联盟归纳算法在满足公式(3.6)的条件下产生。

考虑 D0、D1、D2 和 D3 这四个承运人之间的合作,他们分别拥有54、49、44、53个顾客。每个顾客在运输网络中只有一个订单需要在给定的节点之间进行运输。假设运输节点距离矩阵是给定的,距离矩阵中的数值是非负数。因此,在四个承运人达成合作的情况下,承运人需要服务的顾客数是200个。假定每个承运人在该地区服务的顾客数是均匀分配的,而且,承运人为顾客服务的时间窗是宽松的,这就保证了可以配置少量的车辆,但是这增加了问题的计算复杂度。车辆高的载重量与顾客的需求相比较也促进了更少车辆的使用。车辆的维护成本是5000元,单位路线的成本是5元。为了求解该问题,我们运用Ropke算法[6]。作为一个原始的设置,Ropke算法考虑更为一般性的问题,我们研究的问题是它的特例。为了使用该算法去有效的找到运输路径,使用模拟退火算法去联合好几种基本的启发式算法,这样可以更快的构造新的解。这些启发式算法中的某几种算法能从解中消除顾客,其他的算法能再一次把消除的顾客添加到解里面。每次迭代选择哪两种具体的基本启发式算法取决于求解过程中得到的解的质量。为了使搜索变化的更快,目标函数的精确值用目标函数的干扰值取代。对于每一个联盟,表1展示了由直接联盟归纳算法求出的成本最小化问题的最优解和博弈的特征函数值。

在这里插入图片描述

由表1可知,所有承运人在没有合作之前总的最小运输成本一共是90776.70元。在合作之后,总的运输成本是47878.11元。由这个算例可得在合作之后所有承运人的成本节约了大概47%。

在这里插入图片描述

运用Shapley值计算合作博弈的成本分配,得出与没有合作时的最小成本相比较每个承运人都可以得到一个相当可观的成本减少,见表2.

在这里插入图片描述

对于一个承运人来说,运用Shapley值进行成本分配所得到的成本减少的变化范围是43%-54%。

参考文献

[1] Petrosjan, L.A. and Zenkevich, N.A., Principles of Stable Cooperation, Mat. Teor. Igr Pril., 2009, vol. 1,no. 1, pp. 106–123.
[2] Baldacci, R., Mingozzi, A., and Roberti, R., Recent Exact Algorithms for Solving the Vehicle Routing Problem under Capacity and Time Window Constraints, Eur. J. Operat. Res., 2012, vol. 218, pp. 1–6.
[3] Ergun, O., Kuyzu, G., and Savelsbergh, M.W.P., Shipper Collaboration, ¨ Comput. Operat. Res., 2007,vol. 34, pp. 1551–1560.
[4] Kallehauge, B., Formulations and Exact Algorithms for the Vehicle Routing Problem with Time Windows, Comput. Operat. Res., 2008, vol. 35, pp. 2307–2330.
[5] Krajewska, M.A., Kopfer, H., Laporte, G., Ropke, S., and Zaccour, G., Horizontal Cooperation
among Freight Carriers: Request Allocation and Profit Sharing, J. Operat. Res. Soc., 2008, vol. 59,pp. 1483–1491.
[6] Ropke, S. and Pisinger, D., An Adaptive Large Neighborhood Search Heuristic for the Pickup and Delivery Problem with Time Windows, Transport. Sci., 2006, vol. 40, pp. 455–472.
[7] Zakharov, V. and Dementieva, M., Multistage Cooperative Games and Problem of Time-Consistency,Int. Game Theory Rev., 2004, vol. 6, no. 1, pp. 1–14.
[8] Zakharov, V. and Kwon, O-Hun, Selectors of the Core and Consistency Properties, Game Theory Appl.,1999, vol. 4, pp. 237–250.

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

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

相关文章

linux批量操作文件命令总结

总结下常用的linux命令,linux下的命令组合着实强大。有时候即便是使用的windows系统也可以在Dos窗口下使用linux下的一些命令工具,完成一些文本日常处理。 查找所有文件 find ./ -name "*.log" 查找某一后缀的文件并删除 find ./ -name &qu…

shell篇---运行python,单个或多个

shell运行python1、方法1在shell中利用export指定python解释器路径2、方法2利用conda激活虚拟环境,进入文件执行目录执行3、多个python(具体例子)4、具体例子code启动查看1、方法1 在shell中利用export指定python解释器路径 编写如下run.sh…

H5页面转微信小程序(web-view)

效果 先放效果让大家看一下吧,过程很简单。 H5页面图 小程序预览图 准备工作 注册一个小程序(一定得是企业认证账号,个人账号无法使用web-view),具体注册就不演示了。 国内的备案域名(你H5页面和后台…

SpringMVC学习:二、SSM整合

3. SSM 整合 3.1 需求 使用SpringMVC和MyBatis完成用户管理系统. 3.2 整合思路 springspringmvcmybaits的系统架构: 步骤: 第一步:整合dao层 ​ mybatis和spring整合,通过spring管理mapper接口。 ​ 使用mapper的扫描器自动扫描mapper接口在…

C++ Win32程序编写入门

翻译:原文地址 一、关于Win32 ​ 本文档描述了Win329.1版的功能。若要下载Win32的程序清单,可以点击这里。 Win32是一个用于构建windows应用程序的C库。Win32是MFC的免费替代品。它还有一个额外的优势,即能够在各种免费编译器上运行…

第五章. 可视化数据分析图表—常用图表的绘制5—多个子图表

第五章. 可视化数据分析图 5.3 常用图表的绘制5—多个子图表 Matplotlib可以实现在一张图上绘制多个子图表,Matplotlib提供了三种方法:一是使用subplot函数,二是使用subplots,三是使用add_subplot函数 subplot方法和add_subplot,定制效果比较…

难受啊,139天备战字节跳动,一个疏忽让我前功尽弃...

面试是走的内推途径,因为内推的简历通过率远高于其他方式;我的内推的途径有:联系我在字节跳动工作的一个大学学长。 在线面试,有个线上文本编辑器,类似leetcode那种,可以在线编程。然而有点紧张,视频面试网…

Excel·VBA文件重命名

目录获取文件夹下所有文件名获取文件夹下所有文件名并重命名简体/繁体文件名重命名获取文件夹下所有文件名 Sub 测试代码()Dim i&, j&file_path "E:\测试\重命名"With CreateObject("Scripting.FileSystemObject")For Each f In .GetFolder(file…

字节面试官:Rocketmq如何测试?看看我的回答能拿几分?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、…

磨金石教育兴趣技能分享||分享摄影中的“留白”艺术

老子讲:“虚实相生,有无相形”,有与无相对相衬。一幅画的留白可以看出画家胸中的沟壑,也可以看出作品境界的高下。 从某种层面上来讲,摄影也是作画的艺术,一张艺术感高的照片,也需要懂得留白。…

非零基础自学Golang 第2章 安装和运行Go 2.3 在Linux 下安装Go 2.4 在Mac OS 下安装Go

非零基础自学Golang 文章目录非零基础自学Golang第2章 安装和运行Go2.3 在Linux 下安装Go2.4 在Mac OS 下安装Go第2章 安装和运行Go 2.3 在Linux 下安装Go 由于Linux有众多发行版本,笔者这里以 CentOS 7作为示例进行安装介绍,其他发行版本请参考相关发…

C++ Reference: Standard C++ Library reference: Containers: map: cbegin

C官网参考链接&#xff1a;https://cplusplus.com/reference/map/map/cbegin/ 公有成员函数 <map> std::map::cbegin const_iterator cbegin() const noexcept;返回指向开始的const_iterator 返回指向容器第一个元素的const_iterator。 const_iterator是指向const内容的…

带你领略python魔法~免费复制文档数据

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~ 我们百度搜索一些东西得时候&#xff0c;经常找到文档里面 然后就会发现需要充值才能复制&#xff01;怎么可以不花钱也保存呢&#xff1f; 今天就分享给大家一个python获取文档数据得方法 环境使用: python 3.8 pycharm…

DolphinScheduler 发布 3.0.3 版本,重点修复 6 个 Bug

点亮 ⭐️ Star 照亮开源之路https://github.com/apache/dolphinscheduler近日&#xff0c;Apache DolphinScheduler 发布了 3.0.3 版本。此版本主要基于 3.0.2 版本进行了 Bug 修复&#xff0c;共计修复 6 个 Bug&#xff0c;以及 3 处文档修改。其中的较为重要的 Bug fix 为…

外汇天眼:WTI原油自低位累计反弹9%!欧佩克呼吁“警惕和谨慎”

美国CPI增速创近一年来新低&#xff0c;美元指数失守104.0 周三&#xff08;12月13日&#xff09;公布的美国11月CPI同比增长7.1%&#xff0c;不及预期增长7.3%&#xff0c;前值7.7%&#xff1b;美国11月CPI环比增长0.1%&#xff0c;不及预期增长0.3%&#xff0c;前值0.4%。 从…

专访AliceBob的CEO兼联合创始人:深入探知猫态量子比特

&#xff08;图片来源&#xff1a;网络&#xff09; Alice&Bob公司是一家使用cat量子比特制造容错量子计算机的公司。近日&#xff0c;Alice&Bob的CEO兼联合创始人Thau Peronnin&#xff08;以下简称T&#xff09;接受了记者Yuval Boger&#xff08;以下简称Y&#xff…

Java#37(反射)

目录 一.反射的作用和关键 二. 反射获取对象 1.反射获取类对象 2.反射获取构造器对象 3.反射获取成员变量对象 4. 反射获取方法对象 5.用反射绕过编译阶段为集合添加数据 反射做通用框架 一.反射的作用和关键 作用: 反射是在运行时获取类的字节码文件对象: 然后可以解…

未能加载文件或程序集XXX.dll,程序启动失败的解决方案

之前在VS2019上下载一个项目&#xff0c;运行后就报错&#xff0c;弹出 出错&#xff1a;未能加载文件或程序集XXX.dll 我们选中该dll&#xff0c;右键&#xff0c;属性&#xff0c;发现 该dll被锁定 点击“解决锁定”即可解决。 为了一劳永逸解决此问题&#xff0c;后到微软…

【头歌C语言程序与设计】结构体共用体枚举类型

目录 写在前面 正文 第1关&#xff1a;结构体 第2关&#xff1a;共用体 第3关&#xff1a;枚举类型 写在最后 写在前面 本文代码是我自己所作&#xff0c;本人水平有限&#xff0c;可能部分代码看着不够简练&#xff0c;运行效率不高,但都能运行成功。另外&#xff0c;如…

C++ 智能指针

目录 为什么需要智能指针&#xff1f; RAII 智能指针的原理 C智能指针的历史 智能指针 auto_ptr unique_ptr shared_ptr shared_ptr 引用计数解决智能指针拷贝问题 shared_ptr 循环引用问题 智能指针删除器 weak_ptr 为什么需要智能指针&#xff1f; 1. 我们在很多…