基于静态博弈的穿越沙漠游戏最优策略
全国大学生数学建模大赛B题简析
- 基于静态博弈的穿越沙漠游戏最优策略
- 摘要
- 一、问题重述
- 二、问题分析
- 第一问的分析
- 第二问的分析
- 第三问的分析
- 部分代码
基于静态博弈的穿越沙漠游戏最优策略
摘要
穿越沙漠是一款生存和盈利相结合的游戏,即玩家要在规则的限定下按时到
达终点,并尽可能使自己的收益最大化。收益最大化就意味着尽量避免因为天气、
时间、负重上限、路线规划等因素(以下统称“因素”)消耗不必要的资源。为
解决在因素的影响下如何能够保证每名玩家每轮游戏结束都获益最大的问题,本
文首先用 matlab 软件根据 Floyd 算法得出不考虑任何因素下的最短路径矩阵,为
后续分析问题奠定基础。
[^1]: mermaid语法说明
一、问题重述
有一如下的小游戏:玩家凭借一张地图,利用初始资金购买一定数量的水和
食物,玩家凭借一张地图,利用初始资金购买一定数量的水和食物(包括食品和
其他日常用品),从起点出发,在沙漠中行走。途中会遇到不同的天气,也可在
矿山、村庄补充资金或资源,目标是在规定时间内到达终点,并保留尽可能多的
资金。
需要满足以下基本要求:
1、游戏开始时间为第 0 天,此时玩家位于起点。玩家要在截止日期前到达
终点,否则游戏结束。
2、玩家穿越沙漠所拥有的水和食物质量纸盒不能超过负重上限。若未到终
点水或食物耗尽,游戏结束。
3、每天的天气情况在所有区域内相同,为“晴朗”“高温”“沙暴”中的一
种。
4、玩家每天可从一个区域到达与之相邻的另一个区域,或选择原地停留。
沙暴日必须停留。
5、玩家停留一天的消耗量为基础消耗量,行走一天的消耗量为基础消耗量
的 2 倍。
6、玩家在起点以基准价格购买物资,可在起点停留或回到起点,但不可在
起点多次购买物资。玩家到终点后可按半价退回剩余物资。
7、玩家在矿山停留时,可挖矿获得资金,获得的资金称为基础收益。如果
挖矿,消耗量为基础消耗量的 3 倍;如果不挖矿,消耗量为基础消耗量。到达矿
山当日不能挖矿。沙暴日也可挖矿。
8、玩家在村庄购买物资时,价格为基准价格的 2 倍。
问题 1:只有一名玩家,游戏中每天的天气情况已知,分析最优策略。求解
附件中的“第一关”和“第二关”,并将相应结果分别填入 Result.xlsx。
问题 2:只有一名玩家,玩家仅知道当天的天气状况,并以此决定当天行走
方案,给出一般玩家的最佳策略。
问题 3:现有 n 名玩家,他们有相同的初始资金,且同时从起点出发。若某
天其中的任意 k(2≤ k ≤ n)名玩家均从区域 A 行走到区域 B(B≠ A),则他们
中的任一位消耗的资源数量均为基础消耗量的 2k 倍;若某天其中的任意 k
(2≤ k ≤ n)名玩家在同一矿山挖矿,则他们中的任一位消耗的资源数量均为基
础消耗量的 3 倍,且每名玩家一天可通过挖矿获得的资金是基础收益的 1/k;若
某天其中的任意 k(2≤ k ≤ n)名玩家在同一村庄购买资源,每箱价格均为基准
价格的 4 倍。其他情况下消耗资源数量与资源价格与单人游戏相同。
(1)假设在整个游戏时段内每天天气状况事先全部已知,每名玩家的行动
方案需在第 0 天确定且此后不能更改。试给出一般情况下玩家应采取的策略,并
对附件中的“第五关”进行具体讨论。
(2)假设所有玩家仅知道当天的天气状况,从第 1 天起,每名玩家在当天
行动结束后均知道其余玩家当天的行动方案和剩余的资源数量,随后确定各自第
二天的行动方案。试给出一般情况下玩家应采取的策略,并对附件中的“第六关”
进行具体讨论。
二、问题分析
第一问的分析
对于问题 1,只有一名玩家,且天气状况全部已知,要求给出一般情况下玩
家的最优策略,其实质就是考虑在不同路线下,玩家如何能寻找到最短路线且尽
可能赚到更多的资金。只有一名玩家便不用考虑其他玩家的干扰,天气状况已知
便能够针对天气状况对路线做出调整,避免不必要的资源消耗。针对这个问题,
在最优策略的思想中,选用 Floyd 最短路径模型[1],该模型在本题中的体现就是
先确定出在不考虑任何因素时的最短路径,在最短路径确定之后,进行因素的逐
个叠加,直到达到题目要求。
强调文本 强调文本
第二问的分析
问题 2 中与问题 1 类似,均只有一名玩家,但问题 2 中的天气情况未知。若
进行与问题 1 中相同的分情况讨论,则会因为天气因素造成结果的严重不准确。
因此对模型做改进,将天气作为首要变量。利用问题 1 中的天气情况用 Excel 中
的 rand 函数生成随机天气[2]进行分情况讨论。首先将情况分为从起点到终点和从
起点经过矿山再到终点两种,针对两种情况的最大消耗、平均情况和最小消耗分
别讨论,计算出其资金收益从而得出一般玩家的最优策略。
第三问的分析
对于问题 3,玩家数量从一名增加到了 n 名,用相同的初始资金同一时间从
起点出发,且路线不能冲突,否则就会消耗更多的资源或获得更低的收益。此时
应该将侧重点放在路线规划上。玩家在规划自己路线的同时,也要兼顾其他人的
路线以免发生冲突,其本质上是玩家之间的一种博弈。路线规划作为一种博弈,
从时间序列来看,由于玩家之间并不知道彼此对于路线的规划,所以是一种静态
博弈;从博弈主体的关系来看,由于玩家之间相互不知情即不存在合作关系,目
标是寻求自己的利益最大化,所以是一种非合作博弈。因此,n 名玩家的游戏从
本质上来看是一种静态非合作博弈,基于静态非合作博弈的基本思想构建模型求
最优策略[3]。
第六关中信息缺失较多,所以为不完全信息静态博弈[4]。将纳什均衡[5]改进成贝叶斯均衡[6]
以求在信息不完全的情况下仍可以快速准确找到最优路径。
部分代码
function [F,path,MIN1,path1]=floyd(a,start,last)%定义权矩阵F,比较矩阵path、
path1
F=a;n=size(F,1);path=zeros(n,n); %问题矩阵
a,定义起点 start 终点 last
for i=1:nfor j=1:n %遍历问题矩阵if F(i,j)~=inf %不可达 inf 表示path(i,j)=j;end,end,
end
for k=1:n``for i=1:nfor j=1:nif F(i,k)+F(k,j)<F(i,j)F(i,j)=F(i,k)+F(k,j);path(i,j)=path(i,k); %比较路径并储存end,end,end,
end
if nargin==3MIN1=F(start,last);m(1)=start;i=1;path1=[ ];while path(m(i),last)~=lastk=i+1;m(k)=path(m(i),last);i=i+1;endm(i+1)=last;path1=m;
19
end
end
第一次写博客,这次数学建模是和我们队友一起完成的,拿了个省一,虽然有点水,但对建模还是有了很大的理解。
思路就写这么多吧,大佬勿喷
基于静态博弈的穿越沙漠游戏最优策略相关推荐
- matlab穿越荒漠课程设计,基于数学规划模型的“穿越沙漠”路线最优策略的研究...
基于数学规划模型的"穿越沙漠"路线最优策略 的研究 刘子凯 曾秋云 樊雨童 张瀚 陈晔 湖南文理学院 常德 415000 [摘要]本文主要针对"穿越沙漠"游戏在 ...
- 2020数学建模国赛B题穿越沙漠个人解析
前言 博主发这篇文章的时候国赛早就结束了,仅仅是出于给自己留个纪念以及交流讨论的目的写的博客.所以如果你对我不在比赛那几天发的行为感到不满,请直接退出就好,我也没觉得自己的想法多么优秀,能够断言自己是 ...
- 2020年数学建模国赛B题穿越沙漠
问题重述 问题一:在整个游戏时段内每天的天气状况都已知的情况下,给出一名玩家一般情况下的完成"第一关"和"第二关"的最优策略,并将相应结果分别填入Result. ...
- 2020数学建模国赛(B)穿越沙漠
2020年高教社杯全国大学生数学建模竞赛题目 (请先阅读"全国大学生数学建模竞赛论文格式规范") B题 穿越沙漠 考虑如下的小游戏:玩家凭借一张地图,利用初始资金购买一定数量的水和 ...
- 博弈论学习(二)——完全信息静态博弈
这一篇主要介绍非合作博弈中,完全信息静态博弈的相关知识. 切记非合作博弈的条件:参与人具有足够智力且极端个人主义,即以自己的效用作为唯一的衡量标准. 要理解完全信息静态博弈,首先要了解以下2个概念: ...
- 2020年高教社建模国赛真题B题--穿越沙漠
2020年高教社杯全国大学生数学建模竞赛题目 (请先阅读"全国大学生数学建模竞赛论文格式规范") B题 穿越沙漠 考虑如下的小游戏:玩家凭借一张地图,利用初始资金购买一定数量的 ...
- 2020年数学建模国赛B题“穿越沙漠”思路
目录 原题 关键词 目标 问题一分析 问题二分析 问题三分析 比赛后的一些些感想 原题 考虑如下的小游戏:玩家凭借一张地图,利用初始资金购买一定数量的水和食物(包括食品和其他日常用品),从起点出发,在 ...
- 2020年数学建模国赛B题:穿越沙漠
B题 穿越沙漠 考虑如下的小游戏:玩家凭借一张地图,利用初始资金购买一定数量的水和食物(包括食品和其他日常用品),从起点出发,在沙漠中行走.途中会遇到不同的天气,也可在矿山.村庄补充资金或资源,目标是 ...
- 2020全国大学生数学建模竞赛穿越沙漠第二问求解方法
第二问的模型相比第一问的区别就是天气未知,在天气未知的情况下,决定行动策略.因为天气未知,所以最优的决策不一定能得到最好的结果,因此就需要在第二问未知的条件下设计决策说明自己方法的优越性,一次穿越的结 ...
最新文章
- JavaScript中 for、for in、for of、forEach等使用总结
- 深刻理解:反向代理服务器
- 51单片机C语言led流水灯及数码管实现秒表
- java工程引入scala_引入ReactiveInflux:用于Scala和Java的无阻塞InfluxDB驱动程序,支持Apache Spark...
- Android ImageView的scaleType(图片比例类型)属性与adjustViewBounds(调整视图边界)属性
- 官宣:OpenMMLab 重磅升级—百花齐放春满园
- Kotlin学习笔记 第一章开始 第二章 基础
- sangfor设备升级系统_H3C IPS入侵防御系统配置
- 制作加密狗程序_【火腿DIY】用于SDR应用程序的自定义热键键盘 | 视障人士的选择...
- 蓝桥杯B组省赛预赛第一题2013(高斯日记)
- 【蓝桥杯真题】蓝桥杯真题之旋转
- 远控免杀从入门到实践
- 面对面快传文件在服务器有痕迹,QQ面对面快传的文件存储在哪
- 使用gtest做单元测试
- 2022年熔化焊接与热切割试题及答案
- 腾讯移动互联网事业群(MIG)综合分析
- java是什么?带你了解
- 报错:Misplaced alignment tab character 的解决办法以及参考文献的书写方式、There were undefined citations.解决办法
- 详细解读【虚拟内存】
- linux版_百度输入法Linux版发布 | 欧侃在线“统一源”提供直接安装