兰彻斯特作战模型

MAP5932(MOW).dvi (fsu.edu)

策划冷知识--兰切斯特规律是个什么鬼? - 知乎 (zhihu.com)

考虑两军交战:

  • \(x(t)\)\(y(t)\)分别表示\(t\)时刻,甲方和乙方的兵力;
  • \(a\)\(b\)分别表示乙、甲两方的单兵(作战单位)平均毁伤率。

第一线性律

第一线性律认为,战斗是一对一的,即在双方战线上战斗的士兵数目基本相同,且基本不变。进一步可认为始终双方仅派出一个作战单位对战。在此假设下,毁伤率仅与单兵毁伤率有关,对甲军兵力分析,有

\[ x(t) - x(t + \Delta t) = a \Delta t, \]

\(\Delta t \to 0\)对称分析,可推导出系统微分方程组:

\[ \begin{cases} \frac{\mathrm d x(t)}{\mathrm dt} = -a, \\ \frac{\mathrm d y(t)}{\mathrm dt} = -b, \\ \end{cases} \]

初值条件\(x(0) = x_0, y(0) = y_0\)为双方已知的起始兵力。

该微分方程组是平凡的,\(x(t)\)\(y(t)\)均为直线。

第二线性律

第二线性律用于仅进行炮火覆盖,而无直接短兵相接的情况。假设平均毁伤率

  • 与敌军当前剩余兵力成正比,因为剩余敌军越少,炮火覆盖的杀伤效果越差,
  • 与我军当前兵力成正比,因为我军兵力越多,炮火越密集。

那么,对甲军兵力分析,有

\[ x(t) - x(t + \Delta t) = a x(t) y(t) \Delta t, \]

\[ \begin{cases} \frac{\mathrm d x(t)}{\mathrm dt} = -a x(t) y(t), \\ \frac{\mathrm d y(t)}{\mathrm dt} = -b x(t) y(t). \end{cases} \]

进一步地,有

\[ \frac{\mathrm d x(t)}{\mathrm d y(t)} = \frac{a}{b}, \]

\(x(t), y(t)\)间成线性关系。

下面推导解析表达。由线性关系可知

\[ x(t) = \frac{a}{b}y(t) + C, \]

\(t = 0\),代入初值条件得\(C = x_0 - \frac{a}{b}y_0\)。故

\[ \begin{aligned} \frac{\mathrm d y(t)}{\mathrm dt} &= -b x(t) y(t) \\ &= -b \left (\frac{a}{b} y(t) + x_0 - \frac{a}{b}y_0\right) y(t) \\ &= -a y^2(t) - (bx_0 -ay_0 ) y(t). \end{aligned} \]

解这个微分方程,可以令\(z = \frac{1}{y}\),化为一阶线性微分方程求解。解得

\[ \begin{cases} y(t) = \frac{y_0 (k-1)}{k \mathrm e^{ay_0 (k-1)t} - 1}, \\ x(t) = \frac{x_0 (1-k)}{ \mathrm e^{ay_0 (1-k)t} - k}. \end{cases} \]

其中\(k = \frac{bx_0}{ay_0}\)。当\(k = 1\)时,上式为\(\frac{0}{0}\)形式,可用洛必达法则得出

\[ \begin{cases} y(t) = \frac{y_0}{ay_0 t + 1}, \\ x(t) = \frac{x_0}{ay_0 t + 1}. \end{cases} \]

求解出的函数\(x(t), y(t)\)均呈衰减曲线,不存在零点,与炮火覆盖的假设相符。

平方律

平方律用于一般的直瞄射击情况。设双方的每件武器对敌方进行直瞄射击,一旦毁伤目标,则立即转移火力,向下一目标射击。双方的射击流都是泊松流。故平均毁伤率

  • 与我军当前兵力成正比,而与敌军当前兵力无关

那么

\[ x(t) - x(t + \Delta t) = ay(t) \Delta t, \]

\[ \begin{cases} \frac{\mathrm d x(t)}{\mathrm dt} = -a y(t), \\ \frac{\mathrm d y(t)}{\mathrm dt} = -b x(t). \end{cases} \]

\[ \frac{\mathrm d x(t)}{\mathrm d y(t)} = \frac{ay(t)}{bx(t)}, \]

分离变量,两边积分得到

\[ bx^2(t) - ay^2(t) = C, \]

\(t=0\)\(C = bx_0^2 - ay_0^2\)。故

\[ bx^2(t) - ay^2(t) = bx_0^2 - ay_0^2. \]

一般地,这是一个对称中心为原点的双曲线的第一象限的部分。

下面推导解析表达。由

\[ \frac{\mathrm d x(t)}{\mathrm dt} = -a y(t), \]

两边对\(t\)求导得

\[ \frac{\mathrm d^2 x(t)}{\mathrm dt^2} = -a\frac{\mathrm d y(t)}{\mathrm dt} = abx(t). \]

上述微分方程的特征方程为\(x^2 -ab = 0\),两根\(x = \pm \sqrt{ab}\),通解为\(x(t) = C_1\mathrm e^{\sqrt{ab}t} + C_2\mathrm e^{-\sqrt{ab}t}\)

  • \(t = 0\)\(C_1 + C_2 = x_0\)
  • \(t\)求导后,有\(\frac{\mathrm d x(t)}{\mathrm dt} = \sqrt{ab}(C_1 \mathrm e^{\sqrt{ab}t} - C_2 \mathrm e^{-\sqrt{ab}t}) = -ay(t)\),令\(t=0\)\(\sqrt{ab}(C_1-C_2) = -ay_0\)

解得\(C_1,C_2\),代回\(x(t)\)

\[ x(t) = \frac{1}{2}\left( \left(x_0 - \sqrt{\frac{a}{b}}y_0\right) \mathrm e^{\sqrt{ab}t} + \left(x_0 + \sqrt{\frac{a}{b}}y_0\right) \mathrm e^{-\sqrt{ab}t} \right). \]

利用双曲函数表达,有

\[ x(t) = x_0\cosh(\sqrt{ab} t) - \sqrt{\frac{a}{b}} y_0\sinh(\sqrt{ab} t), \]

由对称性得

\[ y(t) = y_0\cosh(\sqrt{ab} t) - \sqrt{\frac{b}{a}} x_0\sinh(\sqrt{ab} t). \]

\(x(t)\)存在零点\(T\)时,\(y'(t)\)满足\(y'(T) = 0\),此零点即为战斗结束,甲方全军覆没,乙方获胜之时。令\(x(t) = 0, k = \mathrm e^{\sqrt{ab} t}\),得

\[ \begin{cases} k = \sqrt\frac{\sqrt {ab} x_0y_0}{\sqrt{a} y_0 - \sqrt b x_0}, \\ T = \frac{1}{2\sqrt{ab}} \ln\left( \frac{\sqrt {ab} x_0y_0}{\sqrt{a} y_0 - \sqrt b x_0}\right). \end{cases} \]

最后,乙方剩余兵力可代入式\(bx^2(t) - ay^2(t) = bx_0^2 - ay_0^2\)计算,为

\[ y(T) = \sqrt{ y_0^2 - \frac{b}{a}x_0^2 }. \]

定量分析可得出如下结论:

  • \(ay_0^2 > bx_0^2\),则对任意\(t\),有\(ay^2(t) > bx^2(t)\),最终\(x(t)\)在经过时间\(T\)后变成\(0\),甲方被歼灭,乙方获胜。
  • 反之,若\(ay_0^2 < bx_0^2\),则甲方获胜。
  • \(bx_0^2 = ay_0^2\),则双方同归于尽。

平方律下的战争代价

在乙方获胜的前提下,设乙方每投入一个战斗单位的代价为\(c_1\),每阵亡一个战斗单位的代价为\(c_2\),则乙方在战斗结束后,付出的总代价为

\[ f(y_0) = c_1 y_0 + c_2\sqrt{ y_0^2 - \frac{b}{a}x_0^2 } \]

\(\min f\),可以得到使得代价最小化的战争投入

\[ y_0^* = \frac{\sqrt{b} (1 + \frac{c_2}{c_1})x_0}{\sqrt a \sqrt{1 + 2\frac{c_2}{c_1}}}. \]

愈战愈勇

在某些游戏中,甲方可能携带“愈战愈勇”加成,使得该方的输出能力随着生命值的减少而上升,即在濒死时可具有最强的输出能力,量化表现为

\[ y(t) - y(t + \Delta t) = b(k - x(t)) \Delta t, \]

其中\(k\)为濒死状态下的输出能力系数。例如,当\(k=2x_0\)时,濒死时的输出能力恰好为满血时的输出能力的两倍。

如果其面对的对手的输出能力与“平方律”相同,即满足

\[ \begin{cases} \frac{\mathrm d x(t)}{\mathrm dt} = -a y(t), \\ \frac{\mathrm d y(t)}{\mathrm dt} = -b(k - x(t)), \end{cases} \]

那么,同理可推导得到,对任意\(t\),有

\[ bx^2(t) + ay^2(t) - 2bkx(t) = bx_0^2 + ay_0^2 - 2bkx_0. \]

一般地,这是一个对称中心在\(x\)轴的正半轴上的椭圆的第一象限的一部分。若需要求解战斗结束的点,令\(y(T) = 0\)\(x(T) = 0\),查看解的情况是否合理即可。

例题

勇者初始生命值为\(200\),每秒可造成伤害\(2\)点;BOSS初始生命值为\(400\),每秒可造成伤害\(2\)点。且勇者具有“愈战愈勇”加成:生命每减少1%,输出能力就增加1%;而BOSS生命每减少1%,输出能力就下降1%。现两者对战,求勇者获胜时的生命值。


代入数据\(a=1/20\)\(y_0 = 400\)\(b=1/100\)\(x_0 = 200\)\(k = 2x_0\),令\(y(T) = 0\),得到

\[ x(T) = 100 (4 \pm 2 \sqrt 3), \]

舍去不合理的解,得到\(x(T) = 100(4 - 2 \sqrt 3) \approx 53.59\),即勇者获胜时的生命值。