对经典打飞机游戏策略问题的研究 |
您所在的位置:网站首页 › 自己制作飞机的游戏 › 对经典打飞机游戏策略问题的研究 |
本文以2008年第一届认证杯的D题为例,研究打飞机游戏的最佳策略。话不多说,先上题目。 题目有一种在学生中间比较流行的双方对战游戏。在游戏前双方各准备一张坐标纸,在上面分别制作7×7的方格,如图1所示。在自己的方格中画一架飞机,飞机呈“士”字形,其中上面的一长横占5个格子,下面的短横占3个格子,一竖占4个格子,最上面突出的一个格子代表机头。所画飞机的位置以及机头的指向由游戏者自己决定,游戏结束前双方不能互看对方的坐标纸。游戏时双方交替用“炮弹”打击对方,攻击的一方报告“炮弹”打击的位置,被攻击的一方报告是否命中飞机。例如:被攻击方的飞机画法如图1所示,攻击者报告“炮弹”的打击位置是(4,3),从图中可知,“炮弹”恰好落在飞机所在的红色格子上面,被攻击方报告飞机被击中,接下来刚才的被攻击方变成攻击方进行上面的攻击步骤,双方交替攻击对方,如果某一方被命中机头,游戏结束,被命中机头的一方失败。游戏双方都在通过打击后对方的反馈信息来猜测对方飞机的位置。 游戏比赛采用19局10胜制。 文针对飞机对战游戏最佳策略问题进行研究,通过Mersenne Twister算法,博弈论,建立蒙特卡罗模型,博弈模型,旨在得出对战时取胜的理论最佳策略。 针对问题一,本文利用穷举法和坐标旋转,确立最佳策略为:以中心点(4,4)为初始落点,划定下一步的落点范围,优先攻击可能性高的位置,若是落空则更新可能方向和排列,重新划定区域以取胜。经分析得出中心点(4,4)被占用的概率为2/3,若初始落点并未落中机身且空了一次,则机身必定经过其余三个高概率点。若是在初始落点命中机身后连续3次落空,则机头位置也可以确定。最终推广至一般情况,得出流程图。 针对问题二,本文以机身出现在每个格子的概率为原假设矩阵,以机头在变化范围内每一格出现的概率为备择假设矩阵,建立蒙特卡罗模型: 问题一要求在计算机先手的情况下,制定人机对战计算机取胜的最佳策略。本文以使用尽可能短的回合数找到对方飞机,并击中机头为目标,确立划定区域—优先攻击可能性高的区域—更新可能的方向和排列—击毙敌方的策略。以中间位置为初始攻击点,向周围可能性较高的点不断尝试,缩小敌方飞机的可能范围,不断更新飞机方向和排列方式。当确立的点可以推断出飞机时,算出机头坐标取得胜利。 对于问题二的分析问题二要求给出9×9的坐标纸上将对方的两架飞机均击落的最佳策略。本文在问题一的基础上做一个延伸,根据图形的对称性将所有情况转化为向上的飞机情况。利用穷举法分析第一架飞机机头可能出现的情况,通过计算各位置出现机头的概率,给出确立第一个机头的最佳策略。在确立第一个机头的基础上,继续对第二架飞机机头位置概率进行测算,通过蒙特卡罗法计算概率最大的范围,确立第二架飞机的机头。结合两架飞机的确立过程得出平均步数。 对于问题三的分析问题三要求在问题二的游戏基础上,转化为三个真人对战,在自己为先手的情况下让自己赢得概率最大。采用分散布置飞机,尽量多得分,推算对手位置的策略。根据所有得分情况给出最合理的打击策略,结合问题二中的计算所得的高概率机头点,按照概率高低进行打击。期间若是有其中一方玩家的飞机被击中,则结合问题一的飞机形态比对数据库,快速定位机头位置,优先处理。 模型假设结合本题的实际,为确保模型求解的准确性和合理性,本文排除一些因素的干扰,提出以下几点假设: 1.假设不存在运气成分; 2.假设多名玩家时玩家间相互独立; 3.假设每回合玩家必须选择一个落点。 模型的建立与求解经过以上的分析和准备,本文将逐步建立以下数学模型,进一步阐述模型的实际建立过程。 问题一的建立与求解该游戏取胜的核心目标为确定对手飞机的机头坐标。在计算机先出手的前提下,本文按照以下策略流程对敌方机头位置进行猜测。 在7×7的网格中,要确立49个格子中一架占据10格的飞机,先确立可以框住整架飞机的最小网格,为一个4行5列的矩形。 以(4,4)为初始落点后,若击中对方机头则取胜,对于该种获胜情况,共有4种情况,机身朝向为上下左右四个方向,此次取胜用了1步。 若未击中机头但打到机身,即当 时,进行下一步的预测,同时删去4种情况。在击中机身的前提下,剩余28种情况。本文对所有可能出现的位置进行分析。即把击中点看作为一个3×3网格的中心点,对于该击中点,可视为飞机除去机头外的任意一个位置。因此本文对除机头外的所有格子进行分析,采用穷举法,对9个机身位置依次判断,计算3×3网格中其他8个落点出现飞机机身的概率图。 在确立前两步的落点后,对于之后的落点可以看作对飞机可能形态的不断剔除,直到可以确立具体情况。以下按照上文分类情况,初始点命中和未命中两类情况继续做延伸研究。 在初始落点命中机身后,飞机剩余28种情况。依据第二个落点,若满足 若初始落点并未落中机身,以一种情况作为代表。当第二个点落在(4,5)时,击中机头的概率为0.125。若是没有击中,则在(4,3),(3,4),(5,4)中随机选择作为下一步的落点。通过对数据库分析,本文得出在初始落点落空的前提下,若飞机头不在初始落点周围,则所有画法均会经过周围4格(上下左右)中的3格。在此,以(4,5)点落空其余3点均打中的情况为例,此时的机头位置有且仅有2种情况,坐标分别为(6,3)和(2,3)。故接下来对这两个点随机选择作为落点。对于该种情况,最快用2步,最多用7步。 推广至一般情况综合上述分析过程,推广至整体求解具体过程应该按照如下方式: 本文将问题二看作为在问题一的延伸,但情况更为复杂。在问题一的最佳策略求解中,共有48种情况,样本较小,故可以考虑不分方向。在问题二中,本文将所有方向上的情况均转化为飞机头向上的情况。随后划定机头可能变化的范围,依据x值和y值,划定变化范围,观察数据分布的特点,建立蒙特卡罗模型,估算第一架飞机头的可能位置。 在求出第一架飞机机头的基础上,接着对第二架飞机的机头划定范围,测算每个格子出现机头的范围,依据出现的最大范围,再次建立蒙特卡罗模型,对第二个飞机头的出现位置进行预测,实现最佳策略。 蒙特卡罗法(Monte Carlo method)是一种基于统计学原理的数值计算法,它的基本思想是通过生成大量的随机样本,并利用这些样本对问题进行模拟和判断。由于其灵活性和适用性广泛被应用于众多领域,尤其适用于无法通过解析方法或传统数值方法求解的复杂问题,不需要对问题进行特定的假设或近似,具有良好的可拓展性。 确立第一架飞机头的范围首先考虑只有一架飞机的情况。通过对9×9网格进行分析,得出对于不同的飞机朝向,均可以依据正方形的对称性转化为一个方向。在此,本文对飞机朝上的情况进行讨论,得出在只有一架飞机的情况下,有30种摆放方式。其中机头的最大可能范围为x=3,x=7,y=4,y=9所围成的范围。将这些点按照坐标,将计算出的每个方格出现飞机的概率作为z值,观察他们在分布上的特点。 在确立第一架飞机的机头位置后,本文选择x=3和x=7的情况作为研究对象。根据对称性,故仅需对第一架飞机在x=3情况下6种位置中,第二架飞机可能的摆放方式和机头位置。将总摆放数作为分母,每个格子可以出现的个数作为分子,得出一个9×9的概率矩阵。将机身概率矩阵作为原假设矩阵,得出: 结合两架飞机的分析结果,本文给出以下策略:以左下角第一个为坐标原点,建立平面直角坐标系,选择x=3和x=7这两条线上的格子确立第一个机头。在确立后,依据分析结果,按照1,2,3,9,4,5,8,7,6的列顺序,同时根据每一列中的概率大小从高到低依次选择落点。若是存在一列中两个概率相等的状况,采用随机抽取的方法选择落点。 对于该种游戏方式,相比于只画一架飞机的游戏方式,在预测上更为繁琐,若想取得胜利需根据第一架飞机的位置来确定第二架飞机的机头位置。在对机头位置进行预测时,需同时考虑出现概率和排版方式,整体上更为繁琐。 问题三的建立与求解由于每局都是由自己开局,理论上存在更高的操作空间。根据题干中提到改为三个真人对战,三个人轮流作为攻击方,故本文建立博弈模型。通过建立支付矩阵,求解对于自己的最佳策略打击方式。在确立打击方式后,结合问题一确立飞机机头的方法和问题二两架飞机机头的概率模型,做出合理的打击行动。同时,结合游戏中另外两名玩家 的表现,根据第二方对第三方飞机的打击结果,结合贪心原则,做出实时最佳决策。这样整体上可以提高自己的获取分数,从而在比赛中取胜。 博弈模型最早由美国学者尤金·巴达奇提出,它是一种将博弈论运用到政策执行的研究中对决策执行进行系统阐述的模型,旨在研究玩家间可能的策略选择和结果,并分析每个玩家的最佳决策。 对于改题确立模型为三人博弈模型,求解时将其视作为一个静态博弈。仅需确立支付矩阵和变量界限即可进行求解。 博弈模型的确立与求解在确立博弈模型前,首先对策略方式进行分析。击中机头记为1分,击中第二架飞机且淘汰飞机记为3分,故本文认为应该将注意点放在机头位置上。通过优先击打机头来获取更多的分数,若是其他玩家先击落一架飞机,可以选择捡漏的方式来获取分数。通过排列组合,得出一局中的得分数可以为0,1,2,3,4,5,6,7,8这9种方式。依据这得分可能结果,建立三人博弈的收益矩阵。 考虑到实际游戏时,存在着很多不确定因素,如机头出现在概率矩阵中的小概率点,此时若是在格点上飞机仍然未被命中,则认为可以继续按照概率分析结果继续选择落点。若此时已经有一架飞机被击落或已有较多落点在一个玩家上时,应更新策略去攻击该玩家,该种情况下可以更大概率的获得积分。 根据问题二中的蒙特卡洛法中的矩阵算出原假设为真的概率为p,经分析比对,本文以原假设为真概率p为研究对象,通过将矩阵中的1/30变为1/29来观察p值的变化,并根据改变matlab中相关数值得出下图: 1 利用穷举法对问题一所有情况进行分析,分析结果更为准确。 2.通过蒙特卡罗模型对机头位置进行预测,模拟后的实验结果数据具有说服力。 3.在利用蒙特卡罗模型时,采用Mersenne Twister算法,提高了随机数的均匀性和独立性,运算结果更为准确和稳定。 4.为得出三人比赛时的最佳策略,结合博弈论建立博弈模型来寻找最优策略,计算得出的策略结果更为合理,具有说服力。 模型的缺点1.问题二在对第一架飞机机头位置确定时,仅选择了p值最大的两列作为研究对象,从整体上来看不具有很大的代表性。、 2.问题三对于三人博弈情况,将动态问题化简为单个静止状态,建立静态博弈模型,可能较为片面。 模型的改进针对缺点一,可以在原p值的基础上,选择p值大于0.05的列均作为研究对象,完善原假设矩阵和被择矩阵,从而提高预测机头位置的准确性。 针对缺点二,可以在收益矩阵不变的情况下,引入决策序列,构建三人动态博弈模型,从而提高策略的准确性。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |