種別[gsm] 2021-07-21T11:24:05Z
セクショングローバル共有メモ
日時2021-07-21T11:24:05Z
元URL(URLなし)

[仏教の最適化プログラムの続き。]…

jrf> [仏教の最適化プログラムの続き。]

地域の移動…移転・転居・引っ越し・Moving…いろいろ言い方はあるが…を考える。

経済を計算する期に、商農比率の適用の前あたりに転居を計算する感じ。

理想人口(ARGS.population)と実際の人口の比率を取り、さらに地域間で相対的人口を取る。相対的人口の多いところから転出があり、相対的人口の少ないところに転入する。家族単位で移動し、あたかも土地もそのまま移動する…転出元で土地を売り転入先で土地を買うと考える。相対人口が高いところから低いところに移るときは財産は増える。逆は財産が減る。

もう少し具体的に数値・アルゴリズムを考えよう。今のプログラムでは地域の数は 3 つだが、これはもっと多くも小さくもしうるので、それに対応するためアルゴリズムは少し複雑になる。

相対人口の平均を取り、平均より大きいところから転出があり、小さいところに転入があるとする。

相対人口の比は 2 倍で最大と考え、それ以上は2倍に切りつめる。この 2 倍のとき、財産は最大 1.1 倍になる。逆に 1/2 倍のときは 0.9 倍となり、線形に変化する。財産の増減は、まず、土地に何倍か(0.9 倍など)をかけ、土地の数を端数切り捨てで出す。そして、切り捨てられた土地は 10 円で売る。その売った額を足した商業財産を今度は何倍か(0.9倍など)をかける。

2倍のとき、最大で人口の5%が動くと考える。転入先・転出元のどちらか小さいほうに5%をかけた人数が転出元のとりあえずの人数になる。転入先ごとにその人数を決め、それを足し合わせる。足し合わせた合計が、転出元の人口の10% を越えるなら、10%に切り詰める。

まず、転出先の決まった人数分、まずは、支配層以外の個人をランダムで選び出す。それをランダムにソートし、今度は、その順で家族を転出させることに決め、人数が「決まった人数」を超えたところで、家族を選ぶのをやめる。支配層が家族に含まれる場合は、その家族は選ばない。含まれる支配層が多過ぎて、家族が足りなくなった場合は、しかたないと考え、再度、個人から選ぶことはせず、そこまでの家族数で十分とする。なお、個人をランダムに選んだとき、同じ家族のものが含まれうることに注意。

それを転出元ごとにおこない、転出するすべての家族を集めてシャッフルしておく。

転出する家族ののべ人数を出し、それを転入先の足りない人口に関して按分する。「足りない人口」はあと何人増えれば相対人口が相対人口の平均になるかから導く。そうして、もっとも足りてない地域に按分された人口をちょうど超えるところまで、シャッフルされた家族を順に充当していく。次に足りてない地域にも同じようにし…最後は、按分された分より小さくなるが、それはしかたないこととする。

…こんな感じにしようかと。

……。

上の仕様を実装し、転居のみをテストする test_of_moving_1.py を作った。(バージョン 0.0.1)

《simbd/test_of_moving_1.py at master - JRF-2018/simbd》  
https://github.com/JRF-2018/simbd/blob/master/test_of_moving_1.py

それを test_of_domination_2.py に取り入れた。(バージョン 0.0.4)

《simbd/test_of_domination_2.py at master - JRF-2018/simbd》  
https://github.com/JRF-2018/simbd/blob/master/test_of_domination_2.py

十分なテストはできていない。

……。

支配層は基本的には転居しないとする。ただし、扶養関係の都合で、転居せざるを得ないことも出てくる。その場合は、支配職を退職することとする。(その者以外の者が後任に就く。)

扶養関係の変化による転居で特別な処理が必要なのは、結婚の際ぐらいだろう。結婚時は、夫および夫の扶養者、妻および妻の扶養者を調べ、どちらにも支配層がいる場合は、地位の低い方が転居を行うものとする。どちらか一方にのみ支配層がいれば、支配層のいない側が転居することとする。夫方と妻方の地位が同じなら、夫方を優先するとする。

なお、結婚と支配層の関係は、好みへの影響などまだまだ詰めるべき点はありそうだが、それは simbdp2.py をいじり出してから考えればいいので、(ごく近い)今後の課題としておく。