
ゲーム理論的に考察するウクライナ戦争の停戦条件
はじめに
2022/2/24に開始されたロシア連邦によるウクライナへの侵攻により、多大な市民の犠牲や原発などのインフラへの被害が発生しており、一刻も早い停戦と和平の実現が望まれます。3/2に国連特別総会による対ロシア非難決議案が採択され、日本を含むG7各国やEU諸国によるSWIFT排除や資金凍結などの経済制裁も発動しています。
しかし、2022/3/11現在、未だ停戦には至っておらず、ウクライナ軍の善戦も相まって、すでに16日間の戦闘が継続しています。
本記事では、ロシアが、経済的に合理的な判断をするという前提のもと、ゲーム理論的な考え方に基づいて、早期停戦を実現するための「経済制裁の強度」がどうあるべきかを考察したいと思います。
問題設定
戦争の目的は、ロシア(以下、R国)がウクライナ(以下、U国)の領土(値を100とする)を占領すること、とします。以下、記号を導入します。
n: 侵攻開始からの日数
A(n): n日目にR国が占領した領域(0<=A(n)<=100)
A'(n): n日目にU国に残された領域(A'(n)=100-A(n))
L(n): n日目の経済制裁などにより生じたR国の累積損失
C(n): n日目のU国の累積損失
S(n): n日目の継戦・停戦状態(0:停戦,1:継戦)
d: 1日あたりのR国の占領領域増加量
l: 1日あたりのR国の損失
c: 1日あたりのU国の損失
また、停戦はR国またはU国が停戦を申し出たときに成立し、それ以外では継戦状態が継続するものとします。


R国にとっての状態遷移は以下の表のようになるものとします。

完全に占領した(A(n)=100)場合は、停戦する。
累積損失L(n)が、今後占領して得られる領土(100-A(n))を上回る場合、停戦する。(※)継戦しても損失が増えるだけであるため。
累積損失L(n)が、今後占領して得られる領土(100-A(n))以下の場合、継戦する。(※)継戦によって損失を補える可能性があるため。
U国にとっての状態遷移は以下の表のようになるものとします。

完全に占領された(A'(n)=0)場合は、停戦する。
完全に占領されていない場合は、継戦する。(※)徹底抗戦。
解くべき問題は、上記の問題設定の下、
所与の条件(d,l)において、停戦までの日数Tと、停戦時の占領領土A(T)およびR国の累積損失L(T)を求めることです。
特に、1日あたりのR国の損失(l)は、第三国による経済制裁によって制御可能なため、どの程度の強さの経済制裁が必要か?を探ることに繋がります。
Pythonコード
上記の問題を解くため、Pythonでコーディングしてみます。次のクラス(WarModel01)は、上記の状態遷移を模擬しています。関数finalTで、戦争開始時点からの停戦までの日数Tと、停戦時の占領領土A(T)および累積損失L(T)、C(T)を求めています。
import numpy as np
import matplotlib.pyplot as plt
#
class WarModel01:
def __init__(self, d, l, c):
self.d = d
self.l = l
self.c = c
def nextR(self, A, L):
if A == 100:
return (100, L, 0)
elif L > 100-A:
return (A, L, 0)
else:
return (A + self.d, L + self.l, 1)
def nextU(self, A, C):
if A == 0:
return (0, C, 0)
else:
return (A - self.d, C + self.c, 1)
def calcT(self, S, A, L, C):
if S == 0:
return (0, A, L, C)
else:
(rA, rL, rS) = self.nextR(A, L)
(uA, uC, uS) = self.nextU(100-A, C)
nS = 0 if ((rS == 0) | (uS == 0)) else 1
(fT, fA, fL, fC) = self.calcT(nS, rA, rL, uC)
return (fT + 1, fA, fL, fC)
def finalT(self):
return self.calcT(1, 0, 0, 0)
計算結果
2つの計算結果を示します。1つ目は、1日あたりのR国の占領領域増加量dを横軸として、停戦までの日数Tと、停戦時の占領領土A(T)および累積損失L(T)を示しています。16日間の戦闘でR国の占領領域は2割程度と見込まれますので、現状dは1.3%程度ですが余裕をみて0-7%のレンジを設定しました。
パラメータとして、1日あたりのR国の損失lを0.5,1,2の3種類設定しました。dが多くなるにつれ、停戦期間Tは短くなりますが、最終占領領域Afも増加してしまいます。逆にdを0に近づけると、停戦期間Tが長くなる傾向があります。

2つ目は、1日あたりのR国の損失lを横軸として、停戦までの日数Tと、停戦時の占領領土A(T)および累積損失L(T)を示しています。パラメータとして、1日あたりのR国の占領領域増加量dを0.5,1,2の3種類設定しました。lが多くなるにつれ、停戦期間Tは短くなり、最終占領領域Afも減少し、累積損失Lfは増加していきます。概ね、1日1[%](全領域を占領して得られる効用に対する比率)以上の経済損失を、経済制裁と軍備損失によってR国に与えられれば、戦況にインパクトを与えられると言えるでしょう。

まとめ
以上の考察から、停戦を促進させ、停戦時の占領領土をできるだけ減らすためのポイントとして、下記の結論を得ました。
1日1[%](全領域を占領して得られる効用に対する比率)以上の経済損失を、経済制裁と軍備損失によってロシア連邦に与えられれば、早期停戦へのインパクトがあり、2[%]以上であれば、40日以内に停戦する可能性がある。
善戦により、1日あたりのR国の占領領域増加量を0に近づけることは、停戦時の占領領土Afを減らす効果はあるものの、却って停戦期間Tが延びる可能性がある。
よって、各国による経済制裁と、ウクライナ軍がロシア軍のできるだけ高額な兵器(航空機、地対空ミサイル、地対地ミサイル、戦車など)を優先して損耗させることが、ウクライナの領土を守り停戦を実現する方針として重要である。
ただし、戦争継続によって原油価格や天然ガス価格が高騰すると、それらを輸出しているロシア連邦を利して経済制裁の効果が減少することになるので、産油国などの協力によってエネルギー価格の高騰を抑える対策が必要である。
#ウクライナ #ロシア #停戦 #ゲーム理論 #ミクロ経済学 #Python