数学模型教你如何成为星际争霸高手——确定性模型
来源:中科院物理所
编辑:Gemini
前些日子小编因科研项目临近截止,任务繁多。然而苦于办公室附近没有荷塘,没法像朱自清先生那般“心情颇不宁静”后于荷塘间散散步,便大笔一挥,写下构思细腻意境唯美的《荷塘月色》,继而同《出师表》、《岳阳楼记》、《背影》强强联手,并称中学语文最长的必背文章,在少男少女们懵懵懂懂的青春里烙下不可磨灭的回忆,而且这一烙还烙了两次。
小编自然没有朱自清那种“孤篇惊后辈,双文动百世”的魄力。然而新世纪有新世纪的散心方式,小编的散心方式是玩星际争霸。相信这也是很多读者的美好回忆。
可惜散心不成反被虐。尽管选择的是最容易快速扩张的虫族,疏于练习的小编还是被电脑杀得片甲不留。
俗话说,要想成为高手,必须要先战胜自己,而战胜自己之前要先学会如何打败电脑。这也是为什么武林高手要先和自己过招,然后不断地挑战风格各异的对手,以不变应万变
当然,还要熟悉各种战术,攻其不备出其不意
那么如何才能打败电脑呢?下面的数学模型可以告诉你答案。
一、背景介绍
星际争霸是暴雪公司的经典作品,它的故事发生于26世纪,主要讲述了银河系边缘三个种族:虫族(Zerg)、人族(Terran)和神族(Protoss)(还有一个极其神秘的种族叫Xel'Naga,虫族和神族都是由这个种族创造出来的,不过这属于星际争霸2的故事,本文不涉及)之间明争暗斗,争夺霸权的故事。在游戏中,玩家可以选择操控这三个种族之一,并创建一支军队打败对手或完成指定任务。每个种族都有自己的特点,却又很好地保持了游戏的平衡性。这是星际争霸能成为经典的原因之一。在本章中,我们用U(t)来表示玩家的部队总数(U是依赖于时间t的函数)。
二、兵工厂数量与多线程并行(Multithreading)
星际争霸的上手难度较高。新手玩家通常把大量的注意力放在华丽的战争场面,或对单个单位的操控上,而忽视了建立军队的过程和资源的采集。比如在不知不觉中,你的资源已经达到了这个数字:
图一
妥妥的万元户!然而总军力只有44个人口,远远不到200的人口上限。可见,这时大部分操作都是浪费了的。很多新手从头到尾只会建造一个兵工厂,因此部队的生产过程是单线程的,而不是多线程并行(多个兵工厂同时生产部队)的。下图大致表明了多个兵工厂和单个兵工厂在相同U值(生产部队总数量,用横轴表示,横轴的数字只起到参照物的作用,并不代表真正的U值)下的效率(纵轴)对比。注意,U较小时,多个兵工厂和单个兵工厂效率差异并不大,但它们的效率都是呈对数(回忆一下log函数的图像)增长的;随着U的增大,所有兵工厂逐渐处于饱和状态,故生产效率不再随着U的增加而增加。
图二
所以在职业对战中,我们可以看到双方几乎都建有大量兵工厂。
图三
三、高手的单机策略——逻辑增长模型(Logistic Model)
高手和新手最大的区别在于,他们更加善于整体地看待这个游戏,因而把整个游戏的节奏。例如在什么时候建造新的兵工厂,什么时候开采新的资源,都有整体的规划。尽管每个高手都有自己的作战风格(这在数学上可以用随机项或误差项来表示,用以描述个体差异),但这种整体性的节奏(可以用趋势项来表示,用以描述整体形势)却是惊人的相似。
如果我们先暂时忽略掉个体差异(随机项),可以想象,U(t)(部队总数)其实就是生态学中单一种群的人口数(Population),而单一种群的总数满足以下微分方程:
图四
在星际争霸中,我们只需考虑部队的出生率(生产率)和死亡率(死于电脑之手)。在单机情形下,电脑以固定的频率对玩家发动攻击,因而玩家部队的死亡率可近似看做种群的自然死亡。在1836年,比利时数学家P.Verhulst提出了单一种群的逻辑增长模型:
图五
这个方程解的图像是这样的:
图六
可以看出,常数K起到的作用是限制部队总量。这个常数由人口上限、资源总量(图一所标示的三个参数)和电脑对玩家的攻击频率共同决定。
值得一提的是,在以上方程(图五)后面再加一项,便得到了1978年加拿大数学家Ludwig等人提出的食心虫爆发模型(Spruce Budworm Outbreak Model,食心虫是一种害虫),用以解释这种虫灾爆发的原因。后面加的那一项描述害虫的非自然死亡,例如被鸟吃,被杀虫剂杀死等。这个模型也可以描述蝗虫灾害。虫灾固然爆发迅速,但通常不会大面积扩张,这个可以用另一个模型——多孔介质力学方程(Porous Media Equation)来解释。不过这不在本文探讨范围之内,有兴趣的读者可自行查询。
高手玩家在快速增长区域中,U(t)(部队总数)增长迅速。这个现象会在第二章继续提及,请各位读者注意这一点。
四、新手常犯错误——神经元脉冲模型
和高手相比,新手的U(t)不会像图六那样满足逻辑增长模型,因为新手不仅只会建造一个兵工厂,而且只会在某些特定时刻生产部队。例如突然看到自己的基地被攻击,猛地想起基地里没有太多防守的部队,自己的先头部队已经长征到民风淳朴的偏远山区去了,怎么办啊怎么办!游戏不是电影,天降奇兵是不可能的,于是手忙脚乱地压榨那唯一的兵工厂,疯狂生产部队。如此,新手们的U(t)图像大致是这样的:
图七
显然和图五的稳定增长模式有本质性的差异。满足图七的方程被称作踢足球(kick)模型,用方程表示为:
图八
注意这是一个迟滞微分方程。这个模型还可以用来描述单个神经元的电信号脉冲:
图九
五、单机作战小结:
在和电脑的对战中,要想从新手蜕变成为高手,除了要多加练习以外,更应该注意的是高手的大局观——他们的U(t)是符合逻辑增长模型的。有意识地把神经脉冲模型转化为逻辑增长模型,有助于单机技术的提高。
光说无用。经过练习,小编已经可以轻易打爆电脑啦!为了更加符合逻辑模型,小编特意用了单兵种推进打发(虫族的多头怪,可以远程攻击,攻击效率非常高,价廉物美)。前文提到过,逻辑模型中的K由资源和人口共同决定,如果你的资源一直保持在较低水平(资源极大化利用)并且人口上限一直为200,那么恭喜你,你的战术是符合逻辑模型的。
图十
六、高手间的较量—— 双种群竞争模型(Lotka-Volterra Competition Model)
也许仍然有读者比较怀疑第三节中的逻辑模型是否真的适用于星际争霸,那么下面的分析将解除你的怀疑。
观赏过星际争霸职业比赛以后,读者可以发现一个现象:比赛开始前10分钟,对战双方的发展进度都比较缓慢,多数精彩场面都来自于农民(最基本的部队,用以建造各类建筑和采集资源,几乎没有攻击性)间的相互限制(如下图)。
这看起来很无聊。但游戏进行到10分钟以后,画风一瞬间变成了这样:
真是精彩!只可惜双方兵力都几乎消耗殆尽了,有些意犹未尽。不用着急,仅仅一分钟后:
细心的读者可能意识到,大战之所以能发生地如此频繁,是因为对战双方都处于逻辑模型(图六)中的快速增长区域。
但是双人对战和单机情况是有区别的!因为对战中,双方的策略是会随时发生变化的。如果我们用U(t)表示玩家A的部队总数,V(t)表示玩家B的部队总数,那么能不能再逻辑模型的基础上做一些修改,而得到一个更符合实际的模型呢?这就是Lotka-Volterra双种群竞争模型。
图十一
这样一来,除了两个r(出生率常数)和两个K(限制常数),又多出来两个b。这也为模型的参数估计(Parameter Estimation)带来了不小的麻烦。参数估计又称为反问题(Inverse Problem,相当于已知方程的解,反过来确定方程中的各个参数。在自然科学领域中,反问题无处不在,甚至比建模本身更为复杂。反问题通常的解决方法需要利用统计学中的参数回归、非参数回归和似然估计等各种指导思想以及梯度算法、自助(Bootstrap)和交叉验证(Cross Validation)等各种具体技巧。这个话题小编以后还会提及。
当图十一中的各种参数满足一定条件时,U和V的图像会呈现出稳定的周期性表现,如下图:
图十二
图中每一个环路H都对应一个周期解,表示U和V之间此消彼长,相爱相杀的暧昧关系。这种暧昧的关系正好描述了本节开始时双方拉锯战的现象。而在数学上图十二中的环路被称作极限环(Limit Cycle),在常微分方程专家的眼中,寻找极限环甚至比寻找方程的具体解更为重要,究其根底,是源于自然界中无处不在的周期性。熟悉分歧理论(Bifurcation Theory)的读者可以看出,图十二中的极限环是由霍普夫分歧(Hopf Bifurcation)产生的。
七、确定性模型的局限
至此,本文至始至终讨论的都在讨论确定性模型(Deterministic Model)——因为微分方程建立以后,它的解是可以被估计出来的。读者可以从上面的分析可以看出,相对简单的确定性模型就可以粗略地解释极为复杂的现象。但简单的模型只是对具体问题的简易化处理,那么如何建立更为贴切的数学模型?这既是数学建模的魅力,也是它所面临的挑战。
那么星际争霸游戏中还有哪些未考虑的因素呢?太多了,但主要体现四点:动态策略、微操、游戏环境(地形、路面宽度、陆战和空战等)和兵种特色(相克、视野、射程、攻击间隔、技能释放等)。为节省篇幅,下面只讨论动态策略和微操。
7.1 动态策略
所谓动态策略,是指对战双方的作战策略会随着游戏进度的变化而变化。这样Lotka-Volterra双种群竞争模型就变成了:
图十三
和图十一的差别在于,所有的参数都会随着时间而变化。可以想象,改良后的双种群竞争模型可以产生更加丰富的结果,但模型的分析难度也随之上升。
值得一提的是,双方的科技状况也能使参数发生变化,而且这种变化是不连续的(例如玩家A完成某项升级以后,其部队的作战能力能产生质的飞跃)。
7.2 微操
新手玩家最容易被各种赏心悦目的微操(Micro,就是指对少数几个兵种的具体操控)所吸引。尽管更多决定游戏走向的是整体战略,但有时犀利的微操能起到扭转战局的作用。比如
甩飞龙
黑暗圣堂武士砍地雷
和最令人叹为观止的陆战队员(最低成本的人族单位)无伤击杀潜伏者(高成本、高科技含量的虫族单位)
之所以叹为观止,有三个原因:1.三个陆战队员竟然在同一时刻朝不同方向移动,2.每一次移动都恰好避开了潜伏者的攻击,3.三个陆战队员每一次移动都恰好能对潜伏者发动一次攻击。那么这种操作是如何做到的呢?无他,唯手熟尔。有兴趣的读者可以从农民绕基地移动开始练习,原理是一样的。
抛开操作层面不谈,可不可以建立数学模型来描述这些精妙的微操过程呢?答案是肯定的,但没有必要,主要原因在于微操的情景实在太多,具体情况需要具体分析。所以数学家们通常直接把这些复杂的个体差异直接看作随机项(或误差项)。尽管个体差异并不一定是随机的,但用随机模型去处理,通常能达到良好的模拟效果。这就是为什么随机模型能在金融领域、控制论和运筹学中运用广泛的原因。
八、电子竞技——概况与现状
传统观念认为,电子竞技就是网络游戏,事实上这是两个完全不同的概念。电子竞技(eSports)这个概念最早出现在1972年的斯坦福大学,斯坦福大学的学生们被邀请参加一个类似于“飞机大战”的游戏对战。
肥水未必不流外人田。虽然创始于美国,电子竞技却真正兴起于韩国,而直接推动力正是1998年暴雪公司发行的《星际争霸》。当时亚洲金融风暴(1997年)余波未泯,不少韩国公民失业赋闲在家;而此时又正好赶上宽带网的兴建高潮,于是他们就靠星际争霸打发时间。韩国政府看到了其中的商机,便把星际争霸对战产业化,举办了形形色色的比赛。后来随着魔兽争霸3等游戏的出现,电子竞技逐渐走向多元化。2005年,ESPN(相当于美国的CCTV5)首次转播了电竞比赛,电子竞技正式成为一门竞技体育项目。
国内对电子竞技的态度一直相对保守。直到2016年9月,教育部才正式增设大学电子竞技专业。饶是如此,这一举动还是引发了不小的评论,可见在许多家长心中,电子竞技仍然带有不少负面色彩。另一方面,同年8月,国内一支名不见经传的电子竞技战队Wings(护国神翼)一举夺得了DOTA2国际邀请赛的世界冠军。这一事件在国内电竞史上具有里程碑的意义,因为这一支队伍从白手起家,靠着异常艰苦的训练和严格的计划,在出道一年后就走上了世界顶峰,这种作风和女排精神是一脉相承的。可惜这么一支全身迸发着正能量,震惊海内外的队伍,却没能入选16年十大最佳非奥运动员,可见电子竞技尚未得到应有的认可。
很多家长把孩子的近视归罪于电子游戏和电视,这从科学上来讲是说不通的。因为根据美国眼科协会的报告,得到实验认可的近视因素只有两个:休息不足和遗传因素。国内中小学生把大量时间都花费在读书和写作业上,缺乏间断性休息,这才是近视率居高不下的根本原因。目前还没有研究表明,眼保健操对延缓近视有积极作用。
九、小结
从第二至第八节的分析看来,要想从菜鸟玩家进化成老司机玩家,除了足够的练习之外,更重要的是要用战略性的眼光看待整个游戏,充分利用游戏中的各种资源,最大程度上扩张自己的部队,使部队总数符合逻辑模型。这就是所谓的大局观。小编还想强调一点:数学建模体现在生活中的方方面面,它能对很多现象做出整体性的描述,这正是数学建模最大的乐趣。
眼光敏锐的读者可能已经察觉到,小编的这篇文章只是“上篇”。有上则必有下,那么下篇的内容会是什么呢?小编给读者留一个悬念。读者只需相信,论精彩程度,“下篇”将不会亚于本文。
最后以一首诗式口诀来总结全文,以便记忆。
老司机速成法
荷塘月色飨后辈,星际争霸漱心扉。
二度上榜青春泪,三足鼎立天河黑。
新手戚戚常丧胆,高人悠悠展天威。
神兵奇策何处备?数学模型断是非。
单机竞技勿惊扰,粮草先行聚金杯。
电脑侵袭军增倍,盲目出兵收效微。
神经脉冲气似壮,外刚内弱表里灰。
逻辑增长就鬼才,决胜千里无损亏。
双人对战心体累,八下七上鸟四飞。
何不正襟观战势?吐纳静心画面美。
极限环里寓周期,反问题中藏圣辉。
悬梁刺股移本位,知己知彼树丰碑。