2020年高教社杯全国大学生数学建模竞赛题目 - 穿越沙漠:最优策略探索
{"title":"2020年高教社杯全国大学生数学建模竞赛题目\n(请先阅读"全国大学生数学建模竞赛论文格式规范"\n)\n\nB题\t穿越沙漠\n\n考虑如下的小游戏:玩家凭借一张地图,利用初始资金购买一定数量的水和食物(包括食品和其他日常用品),从起点出发,在沙漠中行走。途中会遇到不同的天气,也可在矿山、村庄补充资金或资源,目标是在规定时间内到达终点,并保留尽可能多的资金。\n游戏的基本规则如下:\n(1)以天为基本时间单位,游戏的开始时间为第0天,玩家位于起点。玩家必须在截止日期或之前到达终点,到达终点后该玩家的游戏结束。\n(2)穿越沙漠需水和食物两种资源,它们的最小计量单位均为箱。每天玩家拥有的水和食物质量之和不能超过负重上限。若未到达终点而水或食物已耗尽,视为游戏失败。\n(3)每天的天气为"晴朗"、"高温"、"沙暴"三种状况之一,沙漠中所有区域的天气相同。\n(4)每天玩家可从地图中的某个区域到达与之相邻的另一个区域,也可在原地停留。沙暴日必须在原地停留。\n(5)玩家在原地停留一天消耗的资源数量称为基础消耗量,行走一天消耗的资源数量为基础消耗量的 倍。\n(6)玩家第0天可在起点处用初始资金以基准价格购买水和食物。玩家可在起点停留或回到起点,但不能多次在起点购买资源。玩家到达终点后可退回剩余的水和食物,每箱退回价格为基准价格的一半。\n(7)玩家在矿山停留时,可通过挖矿获得资金,挖矿一天获得的资金量称为基础收益。如果挖矿,消耗的资源数量为基础消耗量的 倍;如果不挖矿,消耗的资源数量为基础消耗量。到达矿山当天不能挖矿。沙暴日也可挖矿。\n(8)玩家经过或在村庄停留时可用剩余的初始资金或挖矿获得的资金随时购买水和食物,每箱价格为基准价格的2倍。\n请根据游戏的不同设定,建立数学模型,解决以下问题。\n1. 假设只有一名玩家,在整个游戏时段内每天天气状况事先全部已知,试给出一般情况下玩家的最优策略。求解附件中的"第一关"和"第二关",并将相应结果分别填入Result.xlsx。\n2. 假设只有一名玩家,玩家仅知道当天的天气状况,可据此决定当天的行动方案,试给出一般情况下玩家的最佳策略,并对附件中的"第三关"和"第四关"进行具体讨论。\n3. 现有 名玩家,他们有相同的初始资金,且同时从起点出发。若某天其中的任意 名玩家均从区域A行走到区域B( ),则他们中的任一位消耗的资源数量均为基础消耗量的 倍;若某天其中的任意 名玩家在同一矿山挖矿,则他们中的任一位消耗的资源数量均为基础消耗量的 倍,且每名玩家一天可通过挖矿获得的资金是基础收益的 ;若某天其中的任意 名玩家在同一村庄购买资源,每箱价格均为基准价格的 倍。其他情况下消耗资源数量与资源价格与单人游戏相同。\n(1)假设在整个游戏时段内每天天气状况事先全部已知,每名玩家的行动方案需在第 天确定且此后不能更改。试给出一般情况下玩家应采取的策略,并对附件中的"第五关"进行具体讨论。\n(2)假设所有玩家仅知道当天的天气状况,从第 天起,每名玩家在当天行动结束后均知道其余玩家当天的行动方案和剩余的资源数量,随后确定各自第二天的行动方案。试给出一般情况下玩家应采取的策略,并对附件中的"第六关"进行具体讨论。\n\n注1:附件所给地图中,有公共边界的两个区域称为相邻,仅有公共顶点而没有公共边界的两个区域不视作相邻。\n注2:Result.xlsx中剩余资金数(剩余水量、剩余食物量)指当日所需资源全部消耗完毕后的资金数(水量、食物量)。若当日还有购买行为,则指完成购买后的资金数(水量、食物量)。\n\n针对问题一: 我们先将游戏机制转化为 python 程序,模拟后发现了对游戏状态及其转移规律的数学表示后论证了动态规划模型的合理性。在对这一模型算法的具体实现、复杂度进行充分分析后进行 C++ 实现,计算得到第一关最优策略得分 10470,用时 24天,第二关最优策略得分 12730,用时 30 天。\n从建模过程和最优方案中提炼出"走最短路"这一确定性策略和"能走则走"在目\n前游戏设定下成立的规律。我们对动态规划模型进行了比较彻底的时间、空间复杂度优化(第一问例子中秒级求解) 使其与游戏机制模拟一起成为后续问题使用大量数据分析和随机模拟验证的基础。\n尽可能详细的写清楚针对问题1的切入点、难点、解决思路、方法,文章的结构、逻辑内容:针对问题1,我们的切入点是通过建立数学模型来解决玩家在穿越沙漠游戏中的最优策略问题。难点在于确定游戏中的关键因素和规则,并将其转化为数学表达式。解决思路是通过动态规划算法来求解最优策略。具体方法包括模拟游戏机制,分析游戏状态和转移规律,建立状态转移方程,实现动态规划算法,并进行优化。\n\n首先,我们将游戏机制转化为python程序进行模拟。根据游戏规则,我们需要考虑玩家的初始资金、起点和终点、每天的天气状况、购买和消耗资源的规则等因素。通过模拟游戏,我们可以观察到玩家在不同情况下的行动和资源消耗情况。\n\n接下来,我们分析游戏状态和转移规律。根据游戏规则,玩家的状态可以用当前所在位置、剩余资金、剩余水量和食物量来表示。每天玩家可以选择在当前位置停留或者移动到相邻区域,也可以购买水和食物。根据不同的天气状况,资源的消耗和购买价格也会有所不同。\n\n然后,我们建立状态转移方程。根据游戏规则,玩家的状态转移可以根据当前状态和选择的行动来确定。我们可以将状态转移方程表示为递推关系式,通过动态规划算法来求解最优策略。具体来说,我们可以定义一个二维数组dp[i][j]来表示在第i天,处于第j个区域时的最优策略值。通过递推公式,我们可以计算出dp数组中的所有值。\n\n最后,我们实现动态规划算法,并进行优化。根据状态转移方程,我们可以使用动态规划算法来计算最优策略值。为了提高计算效率,我们可以采用一些优化技巧,如记忆化搜索、状态压缩等。通过对算法的复杂度进行分析,我们可以评估算法的效率,并进行必要的优化。\n\n在完成算法实现后,我们可以用C++编程语言来计算第一关和第二关的最优策略。通过运行程序,我们可以得到相应的最优策略得分和所需的用时。\n\n综上所述,我们通过建立数学模型和实现动态规划算法,解决了问题1中玩家的最优策略问题。文章的结构和逻辑应该按照问题的切入点、难点、解决思路和方法来组织,清晰地描述每一步的分析和实现过程。还可以对算法的复杂度和优化进行详细的讨论和分析。
原文地址: https://www.cveoy.top/t/topic/pDeq 著作权归作者所有。请勿转载和采集!