EPPAモデルのコードの感想

温暖化対策分析用のCGEモデルにMITのEPPAモデルというモデルがあります。MIT EPPAモデルのコードで紹介したように、このEPPAモデルはシミュレーションのコードが公開されています。CGEモデルを使った温暖化対策の研究は腐るほどありますが、シミュレーションのコードを公開しているものは少なく、このEPPAモデルのようにコードを公開しているのは非常に稀です。このEPPAモデルを使った研究(論文)は数多く発表されており、温暖化のCGE分析をする人には非常に参考になるコードだと思います。

私も最近ちょっとずつ読んでみているのですが、これが結構難しいです。難しい理由を挙げてみますと、

  • まず、大規模で複雑なモデルということもあり、コードが非常に長いです。
  • コードで定義されているset、parameter、variableの数は1200個くらいあり非常に多いです。
  • しかも説明文がつけられていないparameterが多いため、何を表すparameterなのかなかなかわかりません。
  • GAMSのsave & restartオプションを利用して解く形になっているのでコードの流れがわかりにくいです。
  • 大文字、小文字が混ざってめちゃくちゃです。GAMSのプログラムを書く際に、プログラムの可読性を高めるため、モデルの外生変数(parameter)は小文字、内生変数(variable)は大文字を用いて表現するという書き方がよく使われます。このコードでも初めはそのようにしていたのかもしれませんが、途中で手を抜いたらしく、大文字、小文字がめちゃくちゃに使われています。これならいっそのこと全て小文字で揃えてくれた方が読みやすかったのではないかと思います。
  • 20個くらいのファイルから構成されているので、どこで何が宣言、定義されているのかわかりにくいです。
と、こんなような理由で読むのが大変なコードなのですが、それでもモデル自体はMPSGEで記述されていることもあり、その基本的な構造は理解することができます。

もし、EPPAモデルがMPSGEを利用せず、数式によって記述されていたとすると、その構造を理解するのにおそらく100倍くらい時間がかかると思います。 MPSGEでモデルを記述することの利点は、まず書くのが楽ということですが、同時に読むのも楽になるという利点もあります。