基于Floyd算法的最优化策略分析
摘要
本文针对玩家根据沙漠环境与资金消耗补充进行路径规划的评估与预测问题,寻求最优策略为目标。以题目中的沙漠环境与地点区域位置的基础上进行数据分析,利用Python实现Floyd算法,纳什均衡博弈原理等基础理论进行数学建模工作,建立数学模型,分别给出了相应情况的最优策略。
针对问题一:为寻求最优过关策略,我们先将地图转化为计算机可处理的数据,利用Python实现Dijkstra 算法得出任何两地区的最短路径,结合图论模型和在食物和水在满足生存的情况下,过关最优策略是第一关最大收益是10460元,第二关的最大收益12680元。并记录于Result.xlsx表中。
针对问题二:结合新的题目要求,第三关考虑到晴天和阴天出现的概率都是1/2,我们分别考虑由起点、终点和由起点、矿山、终点两条线路,加入天气条件。利用数理分析得到起点、终点比由起点、矿山、终点剩余的资金多的概率更高。所以一般情况下,玩家的最佳策略是由起点直接到终点。第四关,由于题中并未给出具体天气情况,因此我们先假设一部分数据集,用来训练我们的决策树模型,然后通过判断当天资源及天气状况来决策我们当天的走或者停留。
针对问题三:第五关我们有两名玩家,他们之间利益影响进行相互约束,根据游戏规则,首先利用图论中的Dijkstra算法求解各点之间的最短路径进行五种分析。最佳策略为一个人先走起点、终点的最短路径,另一人在起点等一天后经起点、终点的最短路径。第六关的三名玩家,分别假定为A,B,C三人,由问题可知A,B,C三人是完美信息博弈,非合作博弈,然后在第四关的决策树模型的基础上进行竞争博弈分析,寻求纳什均衡,得出三人博弈最优解。
关键词: 纳什均衡博弈 无向图 Dijkstra算法 Floyd算法 决策树
一、问题重述
在本次小游戏中,玩家凭借一张地图,利用初始资金来购买一定数量的水和食物(包括食物和其他日常用品),从起点出发,在沙漠中行走。途中会遇到不同的天气,也可在矿山、村庄补充资金或者资源,目标是在规定时间内到达终点,并保留尽可能多的资金。在8条基本游戏规则的约束下,根据6种不同的游戏设定,来建立数学模型,解决问题。
问题一:假设只有一个玩家,在整个游戏时段内每天天气状况事先全部已知,试给出一般情况下玩家的最优策略求解附件中的“第一关”和“第二关”,并将相应结果分别填入Result.xlsx。
问题二: 假设只有一名玩家,玩家仅知道当天的天气状况,可据此决定当天的行动方案,试给出一般情况下玩家的最佳策略,并对附件中的“第三关”和“第四关”进行具体讨论。
问题三: 现有n名玩家,他们有相同的初始资金,且同时从起点出发。若在某天其中任意k名玩家均从区域A行走到区域B,则他们中的任一位消耗的资源数量均为基础消耗量的2*k倍;若在某天其中的任意k名玩家在同—矿山挖矿,则他们中的任一位消耗的资源数量均为基础消耗量的3倍,且每名玩家一天可通过挖矿获得的资金是基础收益的1/K;若某天其中的任意k名玩家在同一村庄购买资源,每箱价格均为基准价格的4倍。其他情况下消耗资源数量与资源价格与单人游戏设定相同。
(1)假设在整个游戏时段内每天天气状况事先全部已知,每名玩家的行动方案需在第0天确定且此后不能更改。试给出一般情况下玩家应采取的策略,并对附件中的“第五关”进行具体讨论。思路:第五关n=2,在问题三中,要求行动方案需提前设定好,增加了玩家“同行”时的消耗,降低了玩家“同挖”时的收益,提高了玩家“同买”时的价格。这就要求玩家们在设定行动方案时要尽量避免与其他玩家相遇。这里的关键是“猜”其他玩家的心理,这就是 博弈论。
(2)假设所有玩家仅知道当天的天气状况,从第1天起,每名玩家在当天行动结束后均知道其余玩家当天的行动方案和剩余的资源数量,随后确定各自第二天的行动方案。试给出一般情况下玩家应采取的策略,并1对附件中的“第六关”进行具体讨论。
二、问题分析
问题一:游戏的第一关,第二关游戏时段内每天天气状况事先全部已知,地区分布全部已知,可先解出到达终点的最优路径。再根据具体的游戏规则作出最佳行走策略。针对第一关,首先将地图抽象化为计算机可处理的数据,再利用Dijkstra 算法算出到达终点最短路径,然后根据游戏中的约束条件建立数学方程,解出相关参数。针对第二关,地图的变化使得第一关的最短算法不再适用,可以寻找相关的图论模型进行解决,第一关的行走策略第二关依然适用。
问题二:对于游戏的第三关的分析,10天之内不会出现沙暴天气,因此我们只考虑晴朗和高温天气即可。我们首先找出起点至终点的最短距离,考虑在天气不同的情况下,从起点到终点消耗的物资,从而得到最终到达终点时的资金。再找出起点到矿山和矿山到终点的最短路径,比较相差的天数,求出晴朗和高温挖矿时的净收益,比较在规定时间内到达终点资产情况。针对第四关,已知30天之内会出现较沙暴少报天气,玩家仅知道当天的天气状况,题中并未给出具体情况,因此需要根据已知限制条件和不同天气出现的概率情况假设出合理的决策模型,得出一般情况下的最佳策略。
问题三:对于游戏的第五关的分析,游戏给定游戏时间内每天的天气状况,而且玩家在第0天确定路线后不能进行更改,由于玩家是两个人,在同一时间到达相同区域,会增大他们的基础消耗,所以他们的路线可能相同,也可能不同。对不同的情况作出具体的分析。针对第六关,相较于第四关游戏由单人增加到了三人,玩家仅知道当天的天气状况,当天行动结束后均知道其余玩家当天的行动方案和剩余资源,随后确定各自第二天的行动方案。为保证个人收益最大,应尽量避免两名玩家在同一区域,避免两名玩家在同一村庄购买资源,其他情况与单人游戏相同。这是一个完全且完美信息动态博弈的过程,需要根据其他玩家的信息考虑接下来的行动方案,游戏规则的修改与增加,使得博弈的过程更加接近现实。
三、模型准备
Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法。(权:与图的边相关的数字叫做权,权常用来表示图中顶点间的距离或者耗费。带权的图通常称为网。)
对于赋权图,其中顶点集,邻接矩阵(邻接矩阵有向图是指通过邻接矩阵表示的有向图)。
=;
其中
对于无向图,是对称矩阵,。
Floyd算法是一个动态规划算法,其基本思想是递推产生一个矩阵序列,其中矩阵,其第行列元素表示从顶点到顶点的路径上所经过的顶点序号不大于的最短路径长度。
计算时用迭代公式,是迭代次数,。当。当时,即是各顶点之间的最短距离。若在求得两点间的最短距离时,还需要求得两点间的最短路径,需要在距离矩阵的迭代过程中,引入一个路由矩阵来记录两点间路径的前驱后继关系,其中表示从顶点到顶点的路径经过编号
为的顶点。路径矩阵的迭代过程如下
初始时:
迭代公式为:
其中,
蚁群算法数学模型:
蚂蚁k根据各个城市间链接路径上的信息素浓度决定其下一个访问城市,设 表示t时刻蚂蚁k从城市i转移到矩阵j的概率,其计算公式为:
计算完城市间的转移概率后,采用与遗传算法中一样的轮盘赌方法选择下一个待访问的城市。当所有的蚂蚁完成一次循环后,各个城市间链接路径上的信息素浓度需进行更新,计算公式为:
其中,表示第k只蚂蚁在城市i与城市j连接路径上释放的信息素浓度;表示所有蚂蚁在城市i与城市j连接路径上释放的信息素浓度之和。
蚂蚁释放信息素的模型
博弈论是在多人在平等对局中各自利用对方的策略变换自己的对抗策略,进而达到取胜的目的。博弈论需要考虑游戏中的个体预测行为和实际行为,并研究对于它们的优化策略
四、模型假设
1.第一关,第二关假设:两地之间最短路径有多条时考虑其中一条即可。
2.第三关,假设最短路线只考虑行走所用时间,不考虑经过的地区。
3.第四关,假设村庄不可停留,不会连续两天以上出现沙暴天气,也不会在同一区域连续停留三天以上。
4.第五关,假设两个玩家中的任意一个玩家由起点直接到达终点,两个玩家经不同路线在不同地点逗留或直接到达矿场后,在不同时间段进行挖矿后经由不同线路到达终点,两个玩家中的一个玩家直接到达终点,另外一个玩家进行挖矿后再到达终点。
5.第六关,假设每个玩家都是选择自己的利益最大化的决策,三个玩家在出发点在不协商的情况下进行选择路线,在起点处三个玩家无人在起点进行等待逗留,个体完全理性非合作博弈,不可在村庄超过两天。
五、符号说明
符号 | 含义 |
A | 权值矩阵 |
α | 晴朗时间 |
高温时间 | |
沙尘暴时间 | |
S | 行走天数 |
T | 挖矿天数 |
p | 剩余资金 |
六、模型建立及求解
6.1 问题一的模型建立及求解:
6.1.1模型建立:
根据已知知识我们可以列出
表1 不同天气情况物资的消耗
已知所有天气状况建立最优策模型运行图论相关知识建立最短路径求解模型已知第一关地图可看作为无向图,于是可利用Floyd算法求解。
6.1.2最优策略模型的求解
第一步将无向图处理为邻接矩阵a;根据Floyd算法的数学模型编写Python程序,处理结果为路径图由运行结果可知,由起点1到矿区12的最短路径为8,且路径不仅仅一条,矿区12到27的最短路径为5,且路径不仅仅一条。如下图:
图1 最优路径规划图
第二步基于沙漠游戏的实际情况,在线性规划组合优化的基础上,给出最优路径模型并建立了相应Floyd算法模型。求出消耗与收益的最优解。
设X为水,Y为食物,L为路径,T为日期。由负重的上限可得水与食物的函数关系式初始资金的限制也限制了食物和水的数量
可解出最大收益为10460元。
6.1.3模型建立:
第二关:
利用蚁群算法求解最优路径。第一步先将地图处理为计算机可识别的数据。第二步编写Python代码,将数据代入代码求解出,地图最短路径,得出最短路径后,再利用第一关的求解方程解得的最收益
6.1.4蚁群算法模型的求解
编写Python代码,运行结果化简为下图
图2 python下最优路径
第二步利用第一关的求解模型,可算出最大收益为12680元。
6.2问题二的模型建立与求解
第三关:根据参数限定我们得到以下信息
表2 不同天气下行走和挖矿消耗量
行走消耗量 | 挖矿消耗量 | ||||
晴朗 | 高温 | 晴朗 | 高温 | 沙暴 | |
水 | 6箱 | 18箱 | 9箱 | 27箱 | 30箱 |
食物 | 8箱 | 18箱 | 12箱 | 27箱 | 30箱 |
资金 | 90元 | 270元 | 165元 | 405元 | 450元 |
根据表格容易得出: 晴朗挖矿时的净收益为 200-165=35元
高温挖矿时的净收益为 200-405=-205元
假设两个天气出现概率相同,均出现1/2,由题目得本关不会出现沙暴天气,所以不用考虑沙暴天气。
得出最优路径:
图3 不同路线的轨迹
第一种极端情况:这十天不去挖矿,直接从起点直接到达终点,最短路径标号为①②③ 用了3天时间考虑最好情况三天都是晴朗,起点到终点需花费270元,终点剩余资产9730元。考虑最坏情况三天都是高温,起点到终点需花费810元,终点剩余资产9190元。
第二种极端情况:这十天去挖矿,首先考虑起点到矿山的最短距离路线④⑤⑥用了三天时间,再考虑矿山到终点的最短距离路线⑦⑧用了两天。从起点到矿山再到终点一共用了5天时间,考虑全是晴朗,行走5天所用费用为450元,在矿山工作五天净增加资产175元,所以资产购买资源花费275元,终点剩余资产9725元。考虑5天全是高温,行走所用费用为元,在矿山工作五天净增加资产175元,所以资产购买资源花费275元,终点剩余资产9725元。
第三种情况:在起点到终点之间出现两种天气情况,根据两种天气出现的概率计算出两种方式到达终点的资产状况。考虑各种天气出现的概率,连续三天出现晴朗或者高温的概率为1/27,连续五天出现晴朗或者高温的概率为1/243,通过模型可以分析计算得出到达终点的剩余资产。通过比较得出起点直接到终点剩余资产多的概率大。所以一般情况下玩家一般的最优策略直接从起点沿最短路线到达终点。
6.2.2第四关仅知道当天天气状况下设计最优行动方案模型
由于除当天天气外,未来天气未知,所以暂不考虑消耗问题,只考虑三种天气状况,食物,水这五个影响决策的因素,另外我们也知道在这30天内的天气的大概状况,是很少出现沙暴天气的,面对题目要求与规则旨在求出最佳的通关策略。根据已知的条件与规则,可分析成一种基本的分类与回归方法,即决策树。
模型的算法如下:决策树的路径具有一个重要的性质:互斥且完备,即每一个样本只能被一条路径所覆盖。决策树学习算法主要由三部分构成:特征选择、决策树的生成、以及决策树的剪枝。
对于本题特征选择,需要选择的一个特征进行分类与随机分类的结果有差异,在本题中,除去自身限制条件外,环境为最大的一个特征分类选项,考虑到30天的天气情况。因此在本题中选取晴朗、高温、沙暴三个个外界条件作为我们的特征分类项。如下:
为区别该特征分类项的分类能力,为此引入一个概念为信息增益(得知特征X的信息而使得类Y的信息的不确定性减少的程度) 结合本体的一部分限制条件,列出一下数学模型。
假设,晴朗天这一特征用A这一变量值进行代替。沙暴天这一特征用B这一变量进行代替,沙暴天这一特征用C这一变量值进行代替。在比较特征的影响时,采用控制变量方法进行考虑。特征A对训练数据集D的信息增益为定义为集合D的经验熵与特征A给定条件下D的经验条件熵之差,即:
(14)
计算数据集D的经验熵:
(15)
特征A给定条件下D的经验条件熵:
(16)
其计算后的信息增益为:
(17)
同理,对于特征特B对训练数据集D的信息增益为定义为集合D的经验熵与特征B给定条件下D的经验条件熵之差,即:
(18)
同理,对于特征特C对训练数据集D的信息增益为定义为集合D的经验熵与特征C给定条件下D的经验条件熵之差,即:
(19)
对于决策树算法的生成,采用经典的ID3算法。ID3算法的核心是在决策树的各个结点上应用信息增益准则进行特征选择。具体做法是:1、从根节点开始,对结点计算所有可能特征的信息增益,选择信息增益最大的特征作为结点的特征,并由该特征的不同取值构建子节点。2、对子节点递归地调用以上方法,构建决策树。3、直到所有特征的信息增益均很小或者没有特征可选时为止。其具体结果如下:
表3训练数据集表
晴朗 | 高温 | 沙暴 | 水 | 食物 | 走或留 |
0 | 0 | 1 | 1 | 1 | N |
1 | 0 | 0 | 1 | 1 | Y |
0 | 1 | 0 | 1 | 1 | Y |
0 | 1 | 0 | 0 | 1 | N |
0 | 1 | 0 | 1 | 0 | N |
1 | 0 | 0 | 0 | 0 | N |
1 | 0 | 0 | 1 | 0 | N |
1 | 0 | 0 | 0 | 1 | N |
0 | 0 | 1 | 0 | 0 | N |
0 | 0 | 1 | 1 | 0 | N |
0 | 0 | 1 | 0 | 1 | N |
6.3问题三:纳什均横博弈模型
第五关:已知全部天气状况下的纳什均衡博弈模型
先利用Python,利用图论中的Dijkstra算法求解各点之间的最短路径进行分类分析参考。初始化的矩阵如下图所示
表4 初始化地点邻域信息
将第五关图中的各个地点相关信息进行矩阵处理,再将矩阵进行关联图路径的表示,并求路径中的最短路径进行初始参考分析,以下表5.2是利用Dijkstra算法求得的各个地点间的最短路径。
(20)
(21)
表5 Dijkstra算法结果图
如图表5中的棕色表示由起点到达矿场的最短路径,而黄色表示各个地点间相邻,根据图的结果可在综合讨论时进行参考。
图4 不同路径分析示意图
讨论一:假设两人同时走1,4,15路线,他们每人消耗资源所耗费用980元
讨论二:假设一人走1,4,15路线,一人走2,16,15路线,他们每人消耗资源所耗费用为870元。
讨论三:一人走2,7,10,14路线,一人走1,4,15路线,他们消耗资源所耗费用分别为600元,490元。
讨论四:一人走1,4,15路线,一人走2,6,8,11,13路线且在矿山挖矿了两天,他们消耗资源所耗费用分别为490元,925元。
讨论五:一个人先走1,4,15路线,一个人在起点等一天走1,4,15路线,他们消耗资源所耗费用分别为490元,545元。
综合比较各种情况,最佳策略为一个人先走起点到终点的最短路径,一个人在起点先等一天然后再走起点到终点的最短路径。
第六关:
模型建立:
由于三人在到达矿山或村庄之前经历相同天气,所以在
假设分为A,B,C三人,他们的消耗与收益都遵循下面列表:
表6 消耗与收益
行走消耗 | 挖矿消耗 | 村庄价格 | 挖矿收益 | ||||
晴朗 | 高温 | 晴朗 | 高温 | 晴朗 | 高温 | 晴天/高温 | |
单人 | 110 | 270 | 165 | 405 | 55 | 135 | 1000 |
双人 | 440 | 1080 | 165 | 405 | 220 | 540 | 500 |
三人 | 660 | 1620 | 165 | 405 | 220 | 540 | 333 |
方案一:A,B,C三人同时出发,博弈结果如下图路径
图5 博弈结果
A的路径为蓝色,B的路径为黄色,C的路径为黑色
根据路径图可列出A,B,C三人的前五天花费表,如下图:
表7 前五天花费表
晴朗 | 高温 | |||||
A | B | C | A | B | C | |
一 | 440 | 440 | 110 | 1080 | 1080 | 270 |
二 | 110 | 110 | 110 | 270 | 270 | 270 |
三 | 110 | 110 | 110 | 270 | 270 | 270 |
四 | 110 | 110 | 110 | 270 | 270 | 270 |
五 | 110 | 110 | 110 | 270 | 270 | 270 |
接下来的时间里,A去矿山挖矿,无论B,C如何决策,A的收益一定分别大于B,C的收益。物资仅剩三天高温行走物资时,开始去终点区域,此时A在三个人中可以获得最大收益。
方案二:
第一天,B,C先出发,A在起点逗留一天,当A得知B,C的位置后,再做决策。B在区域2,C在区域6,那么由于A,B,C三人是完美信息博弈,可推出B去村庄补给,C去矿山挖矿。
第二天,A紧跟B的路线行走。
第五天,B到达村庄进行补给,A在村庄的相邻区域9,C到达矿山
第六天,A到达村庄进行补给,B到达区域13,C在矿山挖矿
第七天,B到达矿山,但不能挖矿。A在村庄停留一天。C到达区域19。
第八天,B在矿山挖矿,A到达区域13,C到达村庄进行补给
第九天,A到达矿山,B到达区域19,C到达区域13。接下来的时间里如下图方式循环:
表8 循环方式
A,B,C三人博弈形成上述循环,每人收益都不是最大,也不是最小,形成纳什博弈均衡。
六、模型的评价与改进
对于问题一:在第一关利用Floyd算法求解最短路径,其优点是可以全部算出每个区域对其他区域的最短距离。但也有一部分的缺点其邻接矩阵比较繁杂,输出结果可读性差,需要转化为可读性较好的路径图。
在第二关由于区域较多,可以利用蚁群算法求解最短路径优点:以概率搜索方式不容易陷入局部最优,易于寻找到全局最优解。当然蚁群算法的缺点就是迭代次数较多,比较耗费电脑资源
对于问题二:第四关在由于没有给出具体天气情况,因此我们可以利用决策树模型其优点根据训练数据可以用已知情况做出判断,对于缺点就是对连续性的字段比较难预测。对有时间顺序的数据,需要很多预处理的工作。当类别太多时,错误可能就会增加的比较快。在问题三中,也基于问题二中的决策树模型,优缺点也显然易见。
七、模型的推广与应用
本文根据一系列通关规则所建立的数学模型,对于大多数策略类问题的分析都能起到很好帮助,所建立的一些模型贴合实际应用。映射到生活中可联想到人们的出行问题,并提供响应的决策方案,且能应对大部分生活出行问题研究。
参考文献:
[1]刘志硕, 申金升, 柴跃廷. 基于自适应蚁群算法的车辆路径问题研究[J]. 控制与决策, 2005, 20(005):562-566.
[2]石为人, 王楷. 基于Floyd算法的移动机器人最短路径规划研究[J]. 仪器仪表学报, 2009(10):2088-2092.
[3]马莹, 陈志龙, 刘贺,等. 基于Floyd改进加速算法的最短路径选择[J]. 信息技术与网络安全, 2018, 37(06):76-79+111.
[4]陈淑敏. 三方博弈的纳什均衡求解[J]. 科教文汇(上旬刊), 2007.
[5]殷剑宏, 吴开亚. 图论及其算法[M]. 中国科学技术大学出版社, 2003.
[6]张福浩, 刘纪平, 李青元. 基于Dijkstra算法的一种最短路径优化算法[J]. 遥感信息, 2004, 000(002):38-41.
[7]张福浩, 刘纪平, 李青元. 基于Dijkstra算法的一种最短路径优化算法[J]. 遥感信息, 2004, 000(002):38-41.