[仏教の最適化プログラムの続き。] 細かい変更をした simbdp3.py…
jrf> [仏教の最適化プログラムの続き。]
細かい変更をした simbdp3.py を公開する。(バージョン 0.0.4)
《simbd/simbdp3.py at master - JRF-2018/simbd》
https://github.com/JRF-2018/simbd/blob/master/simbdp3.py
今回の特徴は統計処理をするプログラムを stats_simbdp3/ 以下に置いたこと。
プログラムは主に二つ。run_simbdp3.sh と plot_logs.py。
……。
run_simbdp3.sh は数回 simbdp3.py を実行してそれをログに取る。
plot_logs.py はそのログを Python の seaborn ライブラリを使って描画する。
seaborn ライブラリのインストールは、どこか他のサイトを参照していただきたい。これ以降はすでにインストールされているものとする。
それらを使う準備として、まず、simbdp3.py で simbdp3.pickle を作る。simbdp3.py があるディレクトリで…、
python simbdp3.py -d -t 1200 -S --save-period=12 --no-view
…を実行する。
次に stats_simbdp3/ に移動し simbdp3.pickle をコピーし、run_simbdp3.sh を実行可能にする。(私は Cygwin 上でやっている。run_simbdp3.sh は bash で動く。)
cd stats_simbdp3/
cp -p ../simbdp3.pickle .
chmod +x run_simbdp3.sh
次に 30年間を 10 回まわしそれを normal-01.log ... normal-10.log に取る。このとき PREFIX は 'normal' という。
run_simbdp3.sh normal 10 -d -L -t 360 --change-random-seed --no-view
ここで -d 以降は simbdp3.py に渡すオプション。
次に戦争が増えるよう --invasion-average-term-min=60 を付けて 30年間を 10 回まわす。その PREFIX は mwar (many wars の略)とする。
run_simbdp3.sh mwar 10 -d -L -t 360 --change-random-seed --no-view --invasion-average-term-min=60
最後に結果をプロットする。
python plot_logs.py normal mwar -p AccDeath
ここで plot_logs.py は PREFIX を引数に取る。オプションとして -p にどの数値をプロットするかを指定する。AccDeath は累積死亡数を指定する。この他、Population 人口、AccDeath 累積死亡数、Karma 平均カルマ、NewKarma 新規発生カルマ(人口割)、AccKarma 累積新規発生カルマ、AccTemple 累積寺院建設数、Breakup 一家離散数、AccBreakup 累積一家離散数 …がある。
実験の結論としては、ほんの少し mwar が normal より上にあるが、予想されていたほどの差は出なかった。同じ実験をしても、運によって逆転すらあるかもという差でしかない。
うまくいかないものだ。