[仏教の最適化プログラムの続き。]…
jrf> [仏教の最適化プログラムの続き。] 結婚などにより支配層の能力値が変わるべきだといった旨のことを以前書いたが、それを実現するために Dominator.adder というオブジェクト変数を作った。これをセットするときに、能力値の調整をランダムに行う。 妊娠し結婚していれば -1、妊娠し結婚していなければ -2、妊娠せず結婚していれば +1、妊娠せず結婚していなければ 0 の修正を受ける。+1 ごとに各能力値について 0 から 0.1 の範囲の一様乱数の値をプラスされる。 ……。 initialize_nation …国の初期化を変えた。前は、支配層を作ってから、国民を作っていたが、今は、国民を作ってから、そこからランダムに支配層を決めるようにしている。 ……。 Person.supporting と Person.supported あたりをかなり変えた、。カプセル化して、できるだけ Person.add_supporting()、 Person.remove_supported() を使うようにした。 バグに悩まされたが、わかってみれば、更新途中で Person.supporting が変わることでバグが生じているのにひっかかっていた。 この変更により、どの場面をとっても扶養されている者が扶養しているような関係がなくなり扶養の木構造が生じなくなった。(make_support_consistent が check_support_consistent に変わった。) ついでに、前は結婚時必ず男性が女性を扶養する形になっていたが、今は女性が支配層で男性より上の地位にある場合は、女性が男性を扶養する形になるようにした。 ……。 地震と水害の発生確率を 1/2 にした。これでもまだ多そうだが…。 ……。 あと、エラーから回復しやすいように乱数の種をセーブするようにしたのだが、ロードしても同じ乱数が必ずしも発生してない様子。何かがおかしいのだと思うがわからない。 ……。 以上の変更をした simbdp2.py を公開しておく。(バージョン 0.0.4) 《simbd/simbdp2.py at master - JRF-2018/simbd》 https://github.com/JRF-2018/simbd/blob/master/simbdp2.py なお、test_of_matching_2.py と simbdp1.py の簡単なバグも取った。こちらも add_supporting や remove_supported を使うように変えようか迷っている。動きはするものの仕様にあわないというバグがあるようだというのはわかっているので、そうしたほうが良さそうであるが、逆に変なバグを混入しないか心配なので、とりあえずそこまでいじるのは次回以降としておく。