2020年高教社杯全国大学生数学建模竞赛B题代码和思路

穿越沙漠”游戏下玩家的最优策略模型

摘要

穿越沙漠”游戏要求玩家在规定时间内,利用手中的地图和初始资金,在起点和村庄购买物资,同时可以在矿山获得收益,每天需要根据不同的行为和天气消耗物资的规则下,合理安排行走路线、物质购买和挖矿安排以便能在终点获得最大的收益。本文根据每个问题不同的条件,建立对应的最优策略模型,并针对了具体的关卡进行了具体的分析。

针对问题一:经过分析,影响玩家决策的几个因素有持有资金、剩余水和食物、离目标地的距离和天气。本文将玩家游戏的天数、当前位置、剩余水、剩余食物设为玩家的状态,根据 Floyd算法化简地图后,得出几条可能的最优路线,再利用动态规划算法,求解在不同状态下玩家在终点时持有的最大资金。最终求得第一关的最优解为10470元,第二关为12730元。

针对问题二:本文利用马尔可夫链,建立马尔可夫链天气预测模型,根据第一关的天气转换情况预测其余关卡的天气情况。再根据问题一的模型得出在不同天气状况下玩家的最佳策略,利用对应的天气情况概率和最佳策略下的最大资金,可以得出最终收益的数学期望,选择数学期望最大的一条策略即可。最后模拟了关卡三和关卡四的天气情况进行求解,经过验证,该模型是合理的。

针对问题三:对于问题三的第一小问,我们根据不同策略的收益,确定玩家选择策略的倾向。我们以玩家到达每一个点的平均收益来代替问题1中的实际收益S,定义点与点间转移的最大收益为势函数,通过势函数得到点与点之间的转移概率,接着通过排列组合求解点与点间的数学期望,最后可以再次利用问题1的方法求解到终点时数学期望最大的策略即为最佳策略。

对于问题三的第二小问,本文根据完全信息的静态博弈论建立了占优策略模型。本文定义了玩家的收益函数A,该函数与玩家的决策,剩余时间,剩余资源,以及所处的位置距离终点、村庄的距离有关。当于资源、时间充足的情况下,玩家无论选择何种策略,都不能保证是占优的,这种情况的解决根据问题三(1),利用期望收益求解。而当资源或时间不足的情况下,在参与人数超过两人时,则先考虑可以占优的一方或多方,再利用期望收益求解无法占优的参与者们。

综上所述,本文依据各题所给的条件较全面地分析了相关因素对玩家决策的影响,并给出了不同条件下玩家的最佳策略,实现了在终点的最大收益。经过分析验证,本文的模型具有合理性和一定的现实意义。

关键词:动态规划 马尔可夫链 人工势能场 博弈论

1

一、  问题重述

1. 问题背景

穿越沙漠的游戏规则是玩家凭借一张地图,利用初始资金购买一定数量的水和食物(包括食品和其他日常用品),从起点出发,在沙漠中行走。途中会遇到不同的天气,也可在矿山、村庄补充资金或资源, 目标是在规定时间内到达终点,并保留尽可能多的资金。

我们要在不同的游戏设定下给出玩家的最佳决策。

2. 需要解决的问题

问题一:假设只有一名玩家,在整个游戏时段内每天天气状况事先全部已知,试给出一般情况下玩家的最优策略。求解附件中的“第一关”和“第二关”, 并将相应结果分别填入 Result. xlsx。

问题二:假设只有一名玩家,玩家仅知道当天的天气状况,可据此决定当天的行动方案,试给出一般情况下玩家的最佳策略,并对附件中的“第三关”和“第四关”进行具体讨论。

问题三:现有n名玩家,他们有相同的初始资金,且同时从起点出发。若某天其中的任意k(2≤k≤n)名玩家均从区域A行走到区域B(B ≠A),则他们中的任一位消耗的资源数量均为基础消耗量的2k倍; 若某天其中的任意名玩家在同一矿山挖矿,则他们中的任一位消耗的资源数量均为基础消耗量的3倍,且每名玩家一天可通过挖矿获得的资金是基础收益 18₈;若某天其的任意k(2≤k≤n)名玩家在同一村庄购买资源,每箱价格均为基准价格的4倍。其他情况下消耗资源数量与资源价格与单人游戏相同。

(1)假设在整个游戏时段内每天天气状况事先全部已知,每名玩家的行动方案需在第0天确定且此后不能更改。试给出一般情况下玩家应采取的策略,并对附件中的“第五关”进行具体讨论。

(2)假设所有玩家仅知道当天的天气状况,从第1天起,每名玩家在当天行动结束后均知道其余玩家当天的行动方案和剩余的资源数量,随后确定各自第二天的行动方案。试给出一般情况下玩家应采取的策略,并对附件中的“第六关”进行具体讨论。

二、问题分析

1. 问题1

为了研究一般情况下单人玩家的最佳策略,我们需要分析影响玩家决策的因素。如图所示:

问题一中玩家的已知条件是规定时间内的天气和地图。关于距离的因素,玩家可以先化简地图,通过 Floyd算法得出起点、村庄、矿山和终点之间的最短路径从而减少多余的区域。接着可以利用动态规划算法,根据所在点、天数、水和食物的四个因素的影响递推得出在符合规则下到终点时的最大的持有资金。

2. 问题 2

第二题相比于第一题,玩家仅知道当天的天气状况,需要根据当天天气状况来决定当天的行动方案。因此我们需要首先判断能否将天气因素用其他影响玩家决策的因素来代替或者去除,即化简、整合合并决策因素。但经过初步分析,天气因素在影响玩家决策的因素中是不可或缺的。玩家需要根据未来天气情况,来做一个全局规划。

因此,我们需要考虑其他方法来解决这个问题。对于现有的相关因素一一当天天气,我们可以假设当天天气可影响明天天气,我们可以使用马尔可夫链来对未来天气进行预测。且根据马尔可夫链的概率收敛特性,在给定各天气跳转的概率下,我们可以最终得到一个收敛的天气概率,并基于此实现对未来天气的预测。

获得未来天气可能情况以及其对应概率后,我们根据第一问得到对应的最佳策略情况下的收益,并得到该情况下收益的数学期望。最终收益的数学

四、符号说明及名词定义

符号

定义

 Lt'→t

第t'天到第t天且到达点i的消耗的水和食物的价值

 Mt'→t

第t'天到第t天且在点i的挖矿的收益

 St'→t

第t'天到第t天且到达点i的净收益

 Gw.,t,i

第t天在第i个点, 有w箱水和f箱食物的最优解

 Pij

天气i转移到天气j的概率

 Wm

表示标志为m的一个有序天气集合

 Hwraxi

第t天在点i且携带w箱水和f箱食物时的势函数

 Pt,j

第t天, 玩家从点i到其邻点j的转移概率

E{,j

第t天, 玩家从点i到其邻点j的净收益的数学期望

 Ai(s)

玩家i下一步行动的总收益函数

五、模型的建立与求解

1 问题一

1.1  问题一模型的建立

1.1.1  最简地图模型的建立

为了简化问题和减少后面利用动态规划求解问题的复杂度,我们可以先将地图转换为点和线的关系,即一个点代表一个区域,而相邻的区域用线连接表示可以到达。

之后我们可以继续简化地图,找出起点、村庄、矿山和终点两两之间的最短路径。求最短路径的问题我们可以先用 Floyd算法求解。

假设从节点i到节点j的最短距离为d;,j,而d₁,j不外乎两种可能:

1) 从节点i直接到节点j;

2) 从节点i经过若干个节点k到节点j。

则我们需要判断:

 di,k+dk,j<di,j

其中k为图内所有节点。若上式中成立,则证明是上述的第二种可能,那么d;j重置为( di,k+dk,j,遍历完所有节点k后,d;,j即为所求最短距离。

求出最短距离后,只将起点、村庄、矿山和终点等目标地留下,线的权重的意义为从地点i到地点j需要t天。

最后将多余的线可以删去,例如若矿山->村庄->终点的距离和矿山->终点的距离相等,则我们可以将矿山->终点的这条线去掉,简化图。

1.1.2  基于动态规划的最佳策略模型的建立

在本题中,我们的最终目标是在物资充足的前提下在规定时间内到达终点且资金最大。而这个目标的复杂度太高,可以采用分治的思想,将大问题化解为小问题进求解,即用动态规划求解。

1) 水和食物的消耗

依据题意我们可以得到在第t天玩家水的基础损耗D1为:

                       D1t=5810      第t天为高温                    (1)

第t天为晴天

同理在第t天玩家食物的基础损耗D12为:

第t天为沙尘暴

第t天为晴天

                                     第t天为高温                    (2)

第t天为沙尘暴

而考虑到玩家的行为因素,除了需要考虑在矿山的停留时间外,在前往目标地点途中无需停留,因此玩家其实只有三种行为对应三个基础消耗的倍数:在沙尘暴时停留、行走、挖矿。 即:

                  σk=123                  k = 行走                 (3)

k= 在沙尘暴时停留

接着我们可以推出经过t天在第i个点,有w箱水和f箱食物时水的损耗为

k = 挖矿

                                     (4)

其中 Δw'→t为从第t'天到第t天水的损耗,满足

                          Δwt'→t=∑k=t'tD1t×σk                       (5)

同理,可以推出第t天在第i个点,有w箱水和f箱食物时食物的损耗为

                     fcostw,f,t,i=fcostw',f',t',ift'→t                  (6)

其中 Δf'→t为从第t'天到第t天食物的损耗,满足

                          Δft'→t=∑k=t'tD2t×σk                       (7)

2) 水和食物的损耗价值.

根据题目所给的信息,在村庄所购的水和食物的价格为在起点的两倍,则我们可以列出在第t'天到第t天且到达点i的消耗的水的价值为:

同理可得第t'天到第t天且到达点i的消耗的食物的价值:

则总消耗价值为:

                           Lit'→t=Wit'→t+Fit'→t                      (10)

3) 挖矿收益 Mit'→t

根据题目所得,每天的挖矿收益为m=3×m  basic,则第t'天到第t天且在点i的挖矿收益为:

不挖矿时

(11)

挖矿时

4) 净收益 Sit'→t

根据题意和上述式子可得, Sit'→t由两部分构成,一是水和食物消耗的价值,二是由挖矿所得的资金

终于到了的日子,不过凑巧的是当时本人学院上学期疫情的考试安排在的本学期开始,这意味着我要开始边备考边建,顶着挂科的压力放肆复习。 选的话,之前说过了果断选的新颖B(穿越沙漠)。 简单说下我们的思路: 我们对的理解是这情景非常具体,数据需要少,感觉三问都是优化型,而且需要很强的编程。 首先我们分析目,对游戏规则摸清楚,没有急着建。 涉及到路线、事件的选择,使用 0-1 变量等定义型。 最短路径用Floyd算法或者基本可以数出来,考察的是最优路径以及路径前对资源的购买(收益最大)。 第一问: 在第一关第二关的探险过程中,运用初始的资金对于资源进行合理的分配,可以通过线性规划,确定好在未来一段时间的消耗与收益,制定好合理的规划,通过 MATLAB 计算出需要使用的资源。经过多次训练对比,最终计算出最优策略,对比资金数量。因为不确定答案是否正确,后来我们又用excel表格进行了推导,最后得到是12730,与优秀论文中的12760相比小了30块,估计大概因为这个答案的问,没有一。 第二问: 第二问与第一问相比提升了难度,如果玩家在进行策略安排的时候, 不知道天气的状况那么小伙伴们可以自己商讨给出何种方案,比如多买水,多买食物等等方法,再这之后通过选择最优路径进行合理的方法选择并讨论,具体的解决方法是通过编程启发式算法的excel解决的。 第三问: (1) 对于n 名相同的初始资金,且同时从起点出发的玩家来说,游戏规则需要进一步注意规范,为了保证多方共赢,在天气状况已知的情况下, 可以通过先前 MATLAB 中的神经网络算法算出的最优旅行路线,计算多次的结果进行对比,保证不会出现重复的状况, 剔除掉重复出现的次数。因为天气状况已知,所以相对比较好安排合理的路线,对于安排好的路线分别进行编号,再依次进行合理的计算,最终确定结果,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宁安我

谢谢鼓励,您为支持开源做出贡献

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值