宣伝: 『「シミュレーション仏教」の試み』(JRF 著)。Amazon Kindle で販売中!
技術系電子本。Python による仏教社会シミュレーション( https://github.com/JRF-2018/simbd )の哲学的解説です。令和4年3月11日発売。

« 前のひとこと | トップページ | 次のひとこと »

cocolog:92930043

仏教の最適化プログラムのメモ その6 プロトタイプ 2 号 編。「シミュレーション仏教」の模索のその1・2から一般的社会シミュレーションのその3・4、総合したプロトタイプ 1 号のその5に続き、その6では支配と災害の理論を足した。「グローバル共有メモ」のバックアップ。 (JRF 9234)

JRF 2021年8月 9日 (月)

その1・その2・その3・その4・その5は↓。これらを読んでいることが前提。

[cocolog:92288127]
>仏教の最適化プログラムのメモ その1。仏教は「来世がないのが良い」「生きなければならない」「自己の探求が良い」の三つの命令的前提による最適化プログラムではないか。…みたいな考えを「グローバル共有メモ」で詰めていっている。メモはやがて消えてしまうので、「ひとこと」に書き移しておく。<

JRF2021/8/99973

[cocolog:92431465]
>その2 生産シミュレーションのアイデア編。「シミュレーション仏教」の模索をするその1に続きながら、少し仏教から離れ、社会の生産を中心にしてそのシミュレーションをどうするかを考えた。<

[cocolog:92541965]
>その3 経済と不倫のシミュレーションの部分実装 編。「シミュレーション仏教」の模索をするその1・その2に続きながら、少し仏教から離れ、経済・不倫を中心にどうするかを考え、部分実装してみた。<

JRF2021/8/99555

[cocolog:92616760]
>その4 結婚・不倫・扶養・相続などのマッチングのシミュレーション 編。<

[cocolog:92700520]
>その5 プロトタイプ 1 号 編。< その3とその4のの総合。

プログラムの GitHub レポジトリは↓にある。今回は、test_of_domination_2.py と simbdp2.py の話が大部分を占める。

JRF2021/8/96296

《JRF-2018/simbd: Buddhistic Philosophical Computer-Simulation of Society》
https://github.com/JRF-2018/simbd

では、「グローバル共有メモ」に書いたことをコピペしていく、少し誤字修正等もあるかもしれない。

JRF2021/8/91082

……。

……。

○ 2021-04-20T01:03:57Z

支配層のパラメータについて。

技能系に関して、「災害」「戦闘」の二つと「戦略」「戦術」「予知」の三つの組み合わせで、六つのパラメータができる。「戦闘戦略」と「戦闘予知」は似たようなもので、「災害戦術」はほとんど意味がないのではないかと思うが、一応、そういうのがあると考える。

JRF2021/8/90224

「災害」が人が死ぬようなものか、収穫がダメになるようなものか、そういう「災害の個性」は、戦略戦術レベルでは関係なく、「予知」が得られたときに、トップがどれぐらいそれへの対応を重視するかに関係するのみ…ということになろう。

JRF2021/8/90708

人望系に関して、「財政」を緩くするか厳しくするかで変わりそうだが、緩くして、経済を良くし人心掌握するか、厳しくして清い政治だからこそ人心掌握するのか、難しい。だから、予算が多いほうが誰しも人心掌握できるが、そのとき効率的に人心掌握できるかどうかだけをパラメータにすることにしよう。そしてそれを「人望」と呼ぼう。「人望」は「戦略」「戦術」に影響するが、「予知」にはあまり影響しない方向で。

JRF2021/8/99113

トップに関しては「信仰心」も大事な要素だろう。以前書いた「捨て扶持」理論からすると、単純な(迷信的な)信仰からのみ僧達を保護するわけではないということになろうが、そういうのも含めて僧達にどれぐらい予算を回すかが「信仰心」というパラメータということになろう。僧が、国外と交渉しているという時代観で行くなら、部下達の「信仰心」が「予知」の精度を増加させる…となるかもしれない。

JRF2021/8/98878

……。

あとは隠しパラメータと反逆をどうするか…。

隠しパラメータについては用意せず、命令における自由度を高くすると、「失敗」が増えるが成長する…という形にすれば十分かな…という気もする。余裕があれば自由度は高めにする…むしろ、自由度高めというのはバランス戦略を取る…ということかな。

JRF2021/8/90597

「災害の個性」によって大したものでないとき、自由にして成長の機会とするかどうかは、トップの性格で決まる感じか。そういう意味では自由への好みも支配層のパラメータとすべきか。

反逆は、予算の浸透ぐあいで表現すれば良いのかな…。

JRF2021/8/97582

……。

……。

○ 2021-04-21T01:04:58Z

「予言の精度」というのは、災害を決めるときに、それを事前に発生を食いとめやすい、または、害を少なくすることの余地が大きい…ということになるんだろうな。

JRF2021/8/95306

……。

支配層は、国のトップがいて、地域ごとのトップがいて、地域には民 1000 人に一人の割合で「部下」がいる…としようと思う。

地域ごとのトップについて、前回のようなパラメータがあり、そのような処理をするのはいいとして、「部下」についてはどう考えるか。集団の仕事をどう考えるか。

「部下」それぞれに仕事を与え、それが地域のトップの仕事になる…という形式だと、「部下」の仕事の和によって平均され、地域のトップのパラメータが活かされない形になる。

JRF2021/8/90479

国のトップ、地域のトップのパラメータも活かされるように、国のトップ:地域のトップ:部下 の仕事の重みを 3:3:4 に設定するか。そして部下集団については、家族のパラメータに似て、それぞれ成功・失敗を計算したあと全体で 最大値 * 2/3 + 平均値 * 1/3 のようなパラメータ設定にしよう。

成功失敗で差がつくように、α = β = 0.5 の ベータ分布でも使おうか…。浸透してきた予算に対してそれをかける…と。ただ、「部下」については、それらの 最大値 * 2/3 + 平均値 * 1/3 を求めて、人数倍する…と。予算は反逆がなければ 3:3:4 の割合で浸透してくる…と。

JRF2021/8/98594

そうやって「実質予算」が求まって、それで対策がなされる。でも、それがどういうレベルなら、どれぐらいの効果があるとどうやって決めればいいのだろう? 時代によって相場感は変わる気もするし…。経済成長については考えて来なかったんで、「相場感」もあまり考えずに、予算の分野ごとの比率だけで考えればいいのかなぁ…?

このあたり、支配層の部分だけでプログラムを作ってみるべきだが…。

JRF2021/8/94853

……。

……。

○ 2021-04-21T21:19:40Z

予言そのものには予算はいらない。能力があればいい。しかし、予言対応には予算が必要で、ただ、そこに必要な能力は予言能力でなく、予言された災害に対応する能力である。…という感じか。

自由度が高いとは予言対応にあまり予算を使わないこと…になるのか。自由度の高さは成長につながるということだった。成長の機会は、ひとしく同じ度合で訪れるとするよりも、何人かのうちランダムで選ばれたものに訪れる。選ばれる数が予言対応の予算が少ないと多くなる…といった感じか。

JRF2021/8/91809

予言対応は、被害の大きさと対応の簡単さによって、「コストパフォーマンス」が高いほど予算が使われる…という形になろう。

予言対応以外の予算は、一定割合はバランス良く、一定割合は好み=能力によって割り振られる。…と。トップの場合、バランスに 7 割、地域トップの場合、バランスに 5 割, 部下の場合は、バランスに 3 割…といった感じか。

JRF2021/8/98710

……。

予言には信仰心が必要ということだった。しかし、その信仰心は宗教が影で担う合理性に基づいていなければならない。だから、信仰心が迷信に近づくと逆に意味をなさなくなると思われる。

そこで、信仰心の作用は、0.5 で最大になり、その両側で下がる…ようにすることが考えられる。

しかし、支配層の信仰心の定義が、信仰理解と呼ぶべきものだとするなら、1.0 で最大で問題はないのかもしれない。そのかわり、「信仰心」が高くても、0.5 以上は寄進額は変わらないとすることで、迷信でないことを表現するという方向もありうるのではないか。

この辺は、どっちにするかわからない。

JRF2021/8/94557

……。

……。

○ 2021-04-22T23:17:00Z

「中央政界」というのを考えたほうがいいか。だから、国のトップ→地域のトップ→部下 という構造ではなく、国のトップ→閣僚→地域のトップ→部下 という構造にしよう。仕事の重みは 3:3:4 ではなく 2:3:2:3 にする。

閣僚は 10 人で、「部下」と同じパラメータの計算…最大値 * 2/3 + 平均値 * 1/3 のような計算をすることにする。

JRF2021/8/92389

予算配分について「トップの場合、バランスに 7 割、地域トップの場合、バランスに 5 割, 部下の場合は、バランスに 3 割」…と言っていたが、「トップの場合、バランスに 5 割、閣僚の場合は、バランスに 3 割、地域トップの場合、バランスに 5 割, 部下の場合は、バランスに 3 割」とするか。閣僚や部下は好みを優先するが、平均や最大値を取るところでならされることが想定されている。…と。

JRF2021/8/94167

……。

「隠しパラメータ」というのがなくなるわけだが、そうすると配偶者の影響というのも消える。それはあまり良くない。配偶者が変われば、能力ガチャを少し引き直すぐらいはあって良いかもしれない。離婚すると平均して少し減り、結婚すると平均して少し上がる感じで。

JRF2021/8/93233

……。

……。

○ 2021-04-26T00:01:32Z

信仰心は「信仰理解」(faith realization)と呼ぶことにして、1.0 を最大値に、ただし、寄進は 0.5 で最大とするか。

蛮族の侵入(Barbarian invasion) と その他の災害 (disaster) を分け、両者を総称して惨禍(calamity) と呼ぶことにする。日本語や英語のもともとにそんな区別はないようだが、ここではそう区別することにする。

JRF2021/8/96519

「人望」は普通、popularity と訳すようだが、これは「人気」という意味もあり、どうも語感がそぐわない。そこで「人望」は people's trust …変数名にするには 's を取って people_trust とすることにする。

JRF2021/8/91864

……。

「反逆」の実装。家系的な hating を重視しようということだった。

家系を辿って家系的恨みを設定する。「王・知事」に恨みがある者と「王・知事」のどちらに家系的距離が近いかを測り、「王・知事」より距離の近い者で、最大のそれらへの hating を持つ者の値を hating_to_king または hating_to_governor に設定する。

JRF2021/8/98472

その上で、「王・知事」からの慰撫として、soothing_by_king, soothing_by_governor を用意し、良いことがあるとこの値が増え、hating を打ち消すことがあるとする。あくまでも hating がある場合に打ち消すのが目的なので、hating 以上の値にはならないものとする。hating が高くなれば、必ず前からある soothing では足らなくなり、再度の慰撫が必要になるようにする。その一方、冷遇された場合は、マイナスの soothing は起こりうるとする。

…と今のところはこんな感じにしようか…と。

JRF2021/8/96813

……。

……。

○ 2021-04-27T10:32:57Z

家系的な hating の計算。

王 K がいて、その妻 Q がいて、その妻の前夫との子供 B がいて、Q の父 H がいるとすると、実際には、孫 B が K を嫌っていれば、H も K を嫌うことになると思われる。

しかし、本人から出発して、父母・子供・配偶者を「距離」 +1 で足していく簡便な計算方法を使うと、上の例は、H と K の距離と、H と B の距離が等しくなり、H は B が K を嫌いだからといって K を嫌うことはできない…となる。

JRF2021/8/94151

今回のモデルでは、計算が容易なので、このような方法を使うことにする。

JRF2021/8/99856

……。

……。

○ 2021-04-28T06:21:27Z

家系的な hating の計算。老人の兄弟などを辿るには、死者を経由する関係上、自然な実装をすると、当然のように死者の hating も参照されることになる。(そうしないことは技術的に容易だが。)

宗教・僧のバーチャルな真実の役割として、死者の hating のコントロールが一つありうるのだろう。生者の hating を宥める(sootheする)のと同様か、それ以上に概念的に死者の hating を宥めることで、家系的な hating を生じにくくできるのだろう。

JRF2021/8/95337

……。

……。

○ 2021-04-30T00:34:55Z

仕事の重みは、国のトップ→閣僚→地域のトップ→部下 で 2:3:2:3 という話のつづき。

国のトップ, 閣僚, 地域のトップ, 部下 のパラメータをそれぞれ A1, A2, A3, A4 とする。成功失敗で差がつくように、α = β = 0.5 の ベータ分布を使うという話をしたが、そうやって得られたランダムな値を r1, r2, r3, r4, r5... などとする。

JRF2021/8/90333

当初は、それぞれの仕事について、ランダムにくじを引きその結果を加重平均して使おうかと思っていた。つまり、0.2 * A1 * r1 + 0.3 * A2 * r2 + 0.2 * A3 * r3 + 0.3 * A4 * r4 (= B1 とする) みたいなものを使おうと思っていた。

しかし、これは加重平均ではあるももの要は平均なので、真ん中にデータが偏ることになる。それでは乱数に ベータ分布を使う意味もなくなる。もっと、はっきり成功・失敗が分かれて欲しい。

JRF2021/8/93997

そこで、パラメータを足してから、その全体に乱数をかければいいのではないか…と思いつく。つまり、(0.2 * A1 + 0.3 * A2 + 0.2 * A3 + 0.3 * A4) * r5 (= B2 とする)みたいに求める…というわけである。

JRF2021/8/91252

ただこうすると、個人の成功・失敗が意味のないものになってしまう。B1 的なものも見たい。…とするなら、(2/3) * B2 + (1/3) * B1 (= B3 とする)を使うという手もなくはない。これもある種の平均になり、真ん中が膨れることになるが、ベータ分布を一様分布に近付けるぐらいで済む可能性もある。r5 は一様分布でも良いかと思ってたぐらいなので、それは許容範囲だ。

JRF2021/8/94907

個人の成功・失敗は、成長を見るときに欲しいものだった。成長は、ランダムに選ばれた者がなすものだった。そこを加味して、A3 のみ成長するなら (0.2 * A1 + 0.3 * A2 + 0.2 * A3 * r3 + 0.3 * A4) * r5 (= B4 とする) みたいなものを考える余地があるかもしれない。

B3 にするか B4 にするか、どうすればいいのだろう? 何を根拠にそれを選べばいいのか…。

JRF2021/8/99265

……。

……。

○ 2021-05-02T00:35:33Z

災害のモデル化。

災害のくわしい被害がどういうものかとは別に、その規模の概要を数値で比較できないと、コンピューターによる選択ができない。

JRF2021/8/92446

災害は予言されたものとしてあって、災害戦略・災害戦術・戦闘戦略・戦闘戦術のどれをどれぐらいの重みで重視・消費するかという情報と、その重み付きベクトルの大きさによって、災害発生の確率がどれぐらい下がるか、災害が発生した場合の害を減らすのがどれぐらいか、ということのパラメータが必要になる。

災害の発生が決まった場合、規模の概要値と害を減らされた度合いを「解釈」して、災害の詳細が作られる。…となるだろう。

JRF2021/8/95427

予言が精緻であるかはまた別の問題である。予言が精緻だと、まず、災害発生の確率がどれぐらい下がるか、災害が発生した場合の害を減らすか…といった「減災」の度合が大きくなる。また、予言が精緻でないと、規模の概要値が正しく国王などに伝達されない…ということになろう。

「減災」の度合いと、規模の概要値を知る難しさの度合いは、災害ごとに違う。…災害の個性ということになろう。(予言のパラメータを与えてその二つを導くメソッドが、災害のそれぞれのクラスごとに個性のある実装がされている。…という感じか。)

JRF2021/8/96230

……。

……。

○ 2021-05-02T01:15:51Z

災害のモデル化つづき。

災害戦略によって訓練(または構築)される「災害備蓄」と、災害戦術によって訓練される「災害対応」のパラメータがある。同様に「戦闘備蓄」「戦闘対応」がある。

規模の概要値は、発生確率と被害の大きさの二つからなり、発生確率は「備蓄」の関数で、被害の大きさは(少しの「備蓄」と主に)「対応」の関数になる。

JRF2021/8/93824

あとは、その災害にどれだけ予算を使ったかと、支配層の災害戦略・災害戦術・戦闘戦略・戦闘戦術のパラメータの重み付けで効果が決まり、その災害への特別な「減災」の度合いが決まる。…ということだったが、これと「備蓄」と「対応」とは別。

なので、「備蓄」と「対応」で一般的に減らすことを重視するか、特別「減災」を重視するか、どちらが良いかは、ときに応じて違う…ということになろう。ここで「最適化」ができそうだが、そんな複雑なことをするとコンピュータ(というか私の計算力)が持たない気もする。

JRF2021/8/93157

……。

……。

○ 2021-05-02T09:27:59Z

災害のモデル化つづき。

人死にと経済的損害を分けて評価するようなことを以前、考えていたような気がするが、単純に人一人死んだときの損害評価額を決めて、その評価額が変わりうるとだけして、同じルーチンを使うことにしようかと思う。

JRF2021/8/95644

本当は子供が死ぬ場合とかを特別視したいとかあるかもしれないが、災害被害の詳細で特に子供のみを狙うようなことはしないので、それには対応しない。

ただ、戦士の若い男が死ぬというのは、特に作る必要があるので、逆に、人死に損害額への戦士加算みたいなものはあっていいかもしれない。

JRF2021/8/90371

……。

災害によっては病気がつきものであるし、新型コロナのような病気を実態とする災害も考えられる。災害をモデルに入れるなら、病気もモデルに入れる必要があるだろう。

一週間以内に終るような病気は、eagerness のランダムさに吸収される。…でいいのだと思うが、1ヶ月以上かかる骨折などの怪我は特別視する必要があるだろう。また、障害・持病で、一時的な労働力(tmp_labor) を恒常的に削る処理も必要ではあるだろう。

JRF2021/8/91586

tmp_labor の削り方は蓄積されていき、1 を越えると死に致る感じか。1 を越えないときは死に致らないまでも、死に致る可能性が増えるとはすべきかもしれない。

骨折などがあった場合、最初は動けないが徐々に動けるようになるものの後遺症が残るというようなものがありうる。このとき、病気・怪我の重さを徐々に下げていくのは管理が面倒なので、期間の長さとその期間の平均的な労働力の低下のみで表し、後遺症は別に障害・持病にする感じか。

JRF2021/8/99910

……。

……。

○ 2021-05-04T12:06:12Z

災害のモデル化。

予言が精緻でない場合、規模の概要値を見誤るという話であったが、評価するごとにランダムに変わるのは扱いにくいので、見誤り方が決まれば、それを記録しておく必要があるだろう。

規模の概要値には、害の大きさと発生確率があるが、簡単のために発生確率は見誤らず、害の大きさのみ見誤るとしようか? 基本は、結果としての災害の「割引評価値」だけが問題だから、それでいいのではないか…と思うのだが…。

JRF2021/8/94419

……。

災害には予算を割り振る。が、そもそも「予算」とは何か。

このモデルの経済システムには「寄付」という概念があり、その相手は国か宗教・僧かは混然としているという話だった。確かに集計すれば、「寄付総額」というのは計算できる。しかし、それに意味があるのか?

JRF2021/8/94775

ランダムに所得の3割が寄付または税として「徴収」されるが、そもそもの所得に景気のような概念はなく、経済が定常状態となっていれば、「寄付総額」は単に人口の代理指標としての意味しかないものと思われる。

人口が減れば、対災害の公共事業にも金がかかる…とか言えそうだが、民主主義・資本主義社会を想定しているわけでないので、人足が足りなければ首に縄付けてでも連れてくるだろう。そこに経済に連動させる意味はあまりなくなる。

JRF2021/8/96669

必要なのは、「予算の何割を使うか」…というより「国力の何割を割り当てるか」という話でしかないように思う。予算の額がどれだけかというのはあまり意味がない。…と思う。

JRF2021/8/91474

また、この事実を補強するものとして、反逆の際、予算の浸透がよくなくなる…というのが、税の徴収がうまくいかなくなることも含めてであったことを考える必要がある。「寄付」がうまく受け取れないということが起こってるはずなのに、それの観測がほぼしようがないのだ。確かにうまく浸透しなかった予算は、裏で使われるなどして、国家レベルではひょっとしたらそれも観測できるのかもしれないが、それを金額的に表すことにどれほど意味があるのか。これも国力がうまく使えないというだけのこととするとスッキリする。

JRF2021/8/92659

……。

支配層から僧への支出…「寄進」についても似たようなことが言える。しかもそれに意義をもたせることができる。

「信仰理解」があれば国力から or 予算から、一定程度、僧に割り振ることになるだろう。しかし、僧の側でそれを何かに使うかと言えば使わない。いや、「実際」には寺を立てたり何かに使うのだろうが、それが経済や福祉に役立つことはないとする。支配層に「信仰理解」があることで「予言」は有利になる。しかし、「信仰理解」が高いことで「寄進」が多いとしても、それは無意味だ…ということにしたい。そのような「役に立たなさ」によって、僧の「捨て扶持」で生きる性格を表す…とできるのではないか。

JRF2021/8/99830

このモデルに僧のモデルを入れるときは、死後の相続について僧の取り分を設定することになるだろう(1/10 ぐらい?)。しかし、そういう額を集計したものが何かの役に立つかというとここでも役に立つわけではないとする。もちろん、前に述べたように、死が増えることで僧を増やそうとはするかもしれない。しかし、それは相続総額に関係なく起こるとすることで、「捨て扶持」性を表す…ようにしようかと思う。

JRF2021/8/93823

このモデルに僧のモデルを入れるときは、死後の相続について僧の取り分を設定することになるだろう(1/10 ぐらい?)。しかし、そういう額を集計したものが何かの役に立つかというとここでも役に立つわけではないとする。もちろん、前に述べたように、死が増えることで僧を増やそうとはするかもしれない。しかし、それは相続総額に関係なく起こるとすることで、「捨て扶持」性を表す…ようにしようかと思う。

JRF2021/8/90275

……。

……。

○ 2021-05-06T15:21:40Z

予言対応でない一般的な戦略・戦術で、どれぐらい災害が下がる余地があるのか(1.0 から 0.0 の変化で何割から何割変化する的なもの)も、「割引評価額」には必要そうだ。

JRF2021/8/99365

……。

ベータ分布を使うということだったが、パラメータが変化するとき、乱数の最大値が変わるというのとベータ分布はあまり相性が良くないように思う。ベータ分布を使うなら、1 になりやすい方向に平均が移動する…みたいな使い方のほうがよいのではないか。…むしろ、一様分布を使うべきか、ベータ分布のままで良いのか…。

JRF2021/8/97497

……。

飢饉や戦争(蛮族の侵入)は、数期に渡る campaign になる。(予言付き)災害は数期に渡りうるようクラスを設計するか、それとも災害は一期のみだが、別(勘定)の災害が続いて起こる…みたいに設計するべきか。

一期のみとする場合も、災害の評価額のための規模の概要値は、引き続く災害の分だけ大きくなってないと正しい判断ができない。よって、災害自体は一期だが、災害の詳細のプログラムにおいて、引き続く災害を new するとすればいいのではないか。そして、new する分の被害も加味して、規模の概要値を出す。…と。

JRF2021/8/96750

……。

どれぐらい予言対応・一般戦術・一般戦略に重きを置くか決めねばならない。どういうふうな重み付けならうまくいくのか、最適化で求めることができるかもしれない。災害を「リアリティ」をもってランダムに100期分ぐらい発生させて、災害被害の累積がもっとも少ない重み付けを選ぶ…と。ただし、災害をランダムに発生させるため、100期を1000回とか繰り返さないとまともな最適化にはならないだろう。そんなことできるのか? できたとして、パラメータが少し変われば変わるようなものだろうから、意味があるのか?

JRF2021/8/91318

予言対応も、どの災害を重視するかというので、ポリシーが必要になる。評価額がどれくらいかで対応するかどうかを決めるみたいなことをして、その評価額の下限もまた最適化のパラメータにする。…とかもできるかもしれない。…さらに時間がかかりそうだが。

もっといい決め方はないのだろうか? 解析的に求められないだろうか?

JRF2021/8/93476

……。

……。

○ 2021-05-08T07:38:14Z

災害のモデル化。

災害には周期性みたいなものがある。そのころになると必ず予言する…基本的に常時予言状態である…みたいなことはあるかもしれない。それと一般の災害戦略と災害戦術からなるもの…ここからはそれを「一般予防」と呼ぶ…の違いは何か。

水害を考えよう。特定の堤防が決壊しやすいとしよう。毎度、水害で壊れたあと特定の時期までに直さねばならない。それが予言対応としてなされるべきなのか、一般予防としてなされるべきなのか。

JRF2021/8/97791

水害で堤防が壊れたとき一般予防が下がるとすると、今度はなぜか火災にも弱い…となってしまう。しかし、堤防修復のために予算が取られ他の予防へ予算を回しにくくなってるとすれば、火災にも弱くなっていることには根拠があることになる。つまり、一般予防指標で 1 が max の状態で、堤防が壊れてそれが下がっていれば、その度合だけ他のことが手薄になる…というのはそこまで間違ってないのかもしれない。

JRF2021/8/98875

しかし、必要なのは堤防の修復である。それを表すには予言対応のほうが合っているのではないか。一般予防へのダメージはある。しかし、それ以上に予言対応としての堤防修復が必要なのだ。…と。しかし、そうすると、災害を起きて提防が壊れたことを記録しておき、その後、堤防修復のための予言が発生するみたいにしないとおかしいのではないか? そして、その記録とは、そもそも一般予防指標の役割だったのではないのか?

JRF2021/8/94839

予言対応が終わったとき、一般予防にも寄与する部分があるとしたらどうだろう? また、予言対応が失敗したときは、一般予防を破壊する部分もあるとする。

JRF2021/8/93154

……。

しかし、そうやっていくとパラメータが多くなり過ぎないか? 大胆な単純化が必要に思うが…。

普通のシミュレーションゲームだと、堤防はユニットとして造って配置し、壊れれば修復するみたいな簡単なものになるだろう。災害を細分化し、災害ごとにそういうユニットがあるとすれば十分ではないか?

それを予言とどう組み合わせる? どうユニットを作り配置していく? このモデルには地形みたいなものはないのに。

JRF2021/8/95747

予言対応は、街の近傍の堤防を先に整備するようなものではないか? それは通常の堤防にオプションプランがあって、それをすると効果的に特定の災害だけ防げる…という感じにすればいいのではないか? 予言というのは、そのオプションを安価で買える…というだけのものとすればいいのではないか? 一般予防も、パラメータが高いとユニットが安く買え修復できる…というだけである。…と。いや、一般予防パラメータとユニット価格は関係ないのが普通か。

JRF2021/8/97837

……。

どうしよう? シミュレーションの方針が立たず、かなり停滞している。

JRF2021/8/92865

……。

……。

○ 2021-05-10T15:32:34Z

災害のモデル化。

しばらく、ユニット化の方向で詰めてみる。

戦争以外の災害は種類がいくつかある。例えば水害を考えよう。それに対して堤防ユニットがあり、それは一つの地域に10ユニットぐらいある。そして、各ユニットにレベルがあり、レベル 5 で最大だが、レベル 5 は維持するのが難しく、予言がないときに一時的に作って、すぐ経年劣化する感じ。

JRF2021/8/94369

水害が来ると堤防ユニットは破壊されうる。破壊されると、レベル 3 まである水害避難訓練ユニットのレベルによって、被害が変わってくる。(レベル 3 はやはり難しく普通はレベル 2。)

予言があると、特定水害防御ユニットが買える。これは特定の水害が起こる/起こらないにかかわらず、特定の時期が来ると「劣化」…というか「オプション破棄」されるが、効果バツグンで害を防ぐ/減らす。

JRF2021/8/93162

水害の他にとりあえず大火災や大地震が考えられる。

大火災は、堤防ユニットに相当するものは警備レベルで、レベル3 が最大とでもするか。これは、すぐに破られうるが、避難訓練に相当するものがレベル 5 まであり、レベル 4 ぐらいになると、それは単なる訓練ではなく、消化設備もあることを意味する。予言は有効。

大地震も、堤防ユニットに相当するものはないとしよう。そして避難訓練に相当するものはレベル3 まであり、避難訓練の他に建築の耐震を意味しよう。そして、起こると、様々な建築系のユニットが広範囲に傷つく…そういう災害ということになろう。予言は無効。

JRF2021/8/95342

……。

戦争…蛮族の侵入については、戦闘訓練レベルと砦のようなもののレベルと、あと武器レベルみたいなものが欲しいが、消化設備が避難訓練的ということを限られると、武器レベルは戦闘訓練レベルに入っているという感じで良いかと思う。予言は、諜報であったり、砦や国境の一時強化であったりで、かなり有効ということになろう。

JRF2021/8/93972

……。

砦や堤防のレベルは「防御レベル」、避難訓練などのレベルは「訓練レベル」と呼ぼう。

JRF2021/8/92482

……。

……。

○ 2021-05-14T15:14:32Z

ユニットの造り方。

人口1000人に対し(堤防など) 1ユニットにすべきか…。いや、ユニットの数が多いと、それだけ支配層の建設能力が高くないと釣り合わない。災害は1ユニットに対して向かって来る。災害で壊れたものを再建するのに、そんなに高い建設能力で向かわれたら、壊れる意味がほとんどなくなる。一方、ユニットが少な過ぎると、再建中に襲われてばかりになってしまう。災害ごとに適度なユニット数を設定すべきだろう。

JRF2021/8/97125

ユニットが複数というシステムは、部下一人で1ユニット担当するのが自然に思われる。ただ、部下のみの力とすると、王・閣僚・知事がいらなくなる。それは避けたいので、彼らも出番があるとしよう。パラメータを参考にするときは、王:閣僚:知事:部下 = 1:3:1:5 ぐらいの感じか。1ユニットの担当はレベルが低いときは1人で担当するが、レベルが高くなると複数人がいるとしてもよいかもしれない。

JRF2021/8/97770

造るとき、レベルが整数的に上がるのではなく、実数の経験値のような建設値がたまるようにするべきだろうか。おそらく、災害による疲労値はあったほうがよいだろう。疲労値と建設値を統合すると考えれば、「レベル」は実数値で、最大値が決まっている…という感じになるか。ただ、レベルが上がれば複数人で担当する必要がある…とするなら、そのとき必要な人数は整数的に増えるとすればよいだろう。

JRF2021/8/94547

……。

病気があると考えた。疫病は、古代の場合、基本的には対応できるものでなかったので、被害の広がりは予想できるが、防ぎようのないものとなったのではないか。ただ、清潔さを保つという宗教の教えは役に立つ面もあったかもしれない。疫病という災害の広がりに、少し予言が役に立つぐらいか。

JRF2021/8/90913

……。

作物の病気という災害。作物の病気は、水害などとあわせて、作付失敗が広く広がっていることをチェックして、後に飢饉が起こると処理する必要があるのではないか。

飢饉という災害もある…ということになろう。他国から食物を買ったり、地域間で融通できることから、これも予言が有効ということになろう。

JRF2021/8/93336

……。

……。

○ 2021-05-15T16:35:15Z

長くプログラムに戻れていない。停滞している。でも、ほんの少しずつでもいいから、アイデア出しだけでもいいから、前に進もう。

JRF2021/8/94744

……。

対ユニットの災害のモデル化。

災害はどれぐらいの防御レベルで防げるかという対防御レベルと、防御を突破したときの被害の大きさである対訓練レベルがあるとモデル化することになるだろう。

JRF2021/8/97835

「対防御レベル マイナス 防御レベル」が大きいと被害が大きくなる…というのは自然だが、話が難しくなり過ぎる気がするので、それはしない。提防などは突破されれば被害は普通に大きくなる…でいいのではないか…と思うから。「規模の概要値」は「対訓練レベル」そのものということになろう。

突破されたとき、堤防の「疲労度」がたまりレベルが下がるのが自然だろう。ただ、これは、災害の詳細として、レベルが下がることもある…とすれば十分ではないか。火事の警備などは突破されてもレベルが下がらないだろうから。

JRF2021/8/90116

突破されないときも「疲労度」は「防御レベル マイナス 対防御レベル」分だけ下がるべきかというとそうではないだろう。堤防は突破されなければ被害はないものとしてよいはずだ。経年劣化で十分だと思われる。

規模の概要値は、訓練レベルによって、一定レベルから一定レベルまで線型に変化する…という感じでよいだろう。

予言対応の効果は、特定のユニットの防御レベルや、訓練レベルを一時的に上げるということになろう。

JRF2021/8/97791

……。

……。

○ 2021-05-16T14:32:17Z

対ユニットの災害のモデル化。

部下は一時に一つのユニットしか担当できないとすると、災害の種類が増えると、それだけで対応が困難になる。それは自然でない。

JRF2021/8/97842

かといって、部下の同時可能労力数みたいなものを設定し、同時に複数担当できるようにすると、一つの災害ユニットに集中して力を投じることができるようになる。しかし、ユニットの数を多くする問題と同じで、複数の災害に対応できるよう釣り合わされた建設能力を一つの災害のみに集中するとアッというまに対応できてしまう。それは「ゲームバランス」がよくない。

JRF2021/8/93087

そこで、部下は一種類の災害については、1 の労力しかかけれない。しかし、違う種類の災害について「掛け持ち」ができるようにすればいいのではないか。一方で、全種類「掛け持ち」できるのは、仕事ができすぎで、リアルでないだろう。

JRF2021/8/98850

3個ぐらい「掛け持ち」ができる。その「掛け持ち」数に対して、ちょうどいい感じで災害が襲ってきて、ユニットを破壊し、ユニットの改修機会が訪れる…。そうなるように災害の規模や頻度が調整されている…感じで作るか。まぁ、本当は、災害の規模や頻度が決まっていて、それに対して「掛け持ち」数が決定されるほうがリアルではあるかもしれないが、最初はどっちが先でもシミュレーションを作る手順的には同じことだ。

JRF2021/8/95325

個々の「掛け持ち」をどういう風に決めるか。最適化をしようとすると難し過ぎるので、能力の高い者から順に重点領域に割り当てていく感じか。幸い、戦争とそうでない災害は区別するが、そうでない災害どうしは能力上の区別はないようにする予定なので、そんなに難しくならないのではないか。

JRF2021/8/96225

……。

……。

○ 2021-05-17T14:26:51Z

予言対応と学習機会。

予言対応をしないかわりに学習(成長)ができるという話だった。予言対応は特別な「掛け持ち」数を 1 個持っており、それを予言対応に費やさず、予言対応ではないものに費やすとき、その仕事についてはランダム性が大きくなり、そこで成長する…とすればよいのだろうか?

JRF2021/8/95790

むしろ、もっとシンプルに、失敗の確率を上げると学習ができる…でよいのではないか。予言対応でも成長はできる。…と。そのほうが単純でリアルではなかろうか? でも、そうすると、常に学習させるため失敗を許すのが最適戦略になり、災害が多い=予言が多いと忙しくて学習機会がないというのが表せなくなるのではないか。

折衷的に、予言対応の「掛け持ち」数を全体として減らすことで、「掛け持ち」数を減らした本人とは限らず、学習(失敗)の機会を増やせる…とするか。

JRF2021/8/96931

……。

……。

○ 2021-05-18T15:20:23Z

「来世がないのがよい」、「生きなければならない」、「自己の探求がよい」(あらため「思考と思念を深めるのがよい」)(…この三つを「本目的三条件」として参照)という最適化をしている他に、システムを作る上での「命令的前提」がある。

それは、システムが、「リアル・自然であるほうがよい」、「簡単・単純であるほうがよい」、「動作しなければならない」(…この三つを「システム三条件」として参照)ということについても「最適化」のようなことをしている…ということである。

JRF2021/8/97164

システム三条件を満たすシステムを作った上で、システム内で本目的三条件を追及している…とできるならカッコ良いのかもしれないが、「リアル・自然であるほうがよい」である以上、実社会を反映する必要があり、実社会は本目的三条件をある程度すでに反映しているため、「リアル・自然であるほうがよい」を追及していれば、本目的三条件を否定的に動かす自由がそもそもないところからはじめねばならなくなる。

JRF2021/8/94163

本目的三条件への対応は、ある程度、システム三条件への対応と同時になされねばならない…ということになる。それは何か評価値という数値を作っての「最適化」とは少し異なる部分があるということになろう。そのような「最適化」とは何か、それをする一般的な戦略のようなものはあるのだろうか?

JRF2021/8/90706

……。

例えば「生きなければならない」を否定した上でリアルなシステムというのを作ることができるだろうか? それには「生きなければならない」より優先される何かがあるということがリアルに感じられなければならないとなるだろう。それはとても切羽詰った状況になるはずだ。例えば戦争のために個人の生より集団の生が優先するといったそういうことをシステムに組み込むということになるだろう。それは「生きなければならない」が否定されたものとして想像しがちなものとはかなり違う。

JRF2021/8/98052

……。

システム三条件については、別の言い方もできる。「動作しなければならない」は、プログラムとして作ろうとしている…ということで、「簡単・単純であるほうがよい」は、人が…特に将来の(呆けた)私が…理解できなければならない…ということ、さらに、「リアル・自然であるほうがよい」はそもそもリアルをうつすことが大目的である…ということである。

JRF2021/8/95362

リアルをそのままプログラムで走らせることはできず、何がしかの単純化は必要である。それと、人が理解できるほどの単純さである必要があることは、微妙に差異がある。このあたりにあいまいさがあるのは、「本目的三条件」でも集団か個人かで詰め切れてないのと同じく、詰めきれてないところだと言えるだろう。

JRF2021/8/99485

……。

……。

○ 2021-05-19T16:22:45Z

災害のモデル化。

災害の同時発生はありうるか? 本当に日単位で同時に発生するような災害ならばそのような偶然はほぼ起きないとして考える必要がないのかもしれないが、今回のモデルのように 1ヶ月単位だと、「同時発生」はかなり起こりうるとせねばならないだろう。

JRF2021/8/96659

ユニットの造成期間。提防なら10年ぐらいかかってもよさそうだが…。1ユニットに複数人必要なときはフルに使って、レベル 1 上げるのに 1年ぐらいでいいか。

予言…災害までの長さは、6ヶ月から3ヶ月程度でいいだろう。3ヶ月と決めうちして十分ではないか。

連続する戦争などは、戦争があったあと、猶予なく次の期に戦争が発生する…となっていいのだろうか? それだと予言が有効にならないのではないか。条件付き発生の災害というのを考えるべきではないか。作物の病気のあとの飢饉もそんな感じで…。

JRF2021/8/98908

いや、難し過ぎるか。防御レベルによって防御されると被害が発生しない…みたいに考えていたが、それでも発生する被害というのはあることがある…として、戦争の継続はそのような被害に含まれる…みたいにするか。結局、複雑にはなるが…。

そういう場合の予言は、役に立たなくするか…いや、戦争を単純化して連続するときも 3ヶ月ごとに攻めてくる…みたいにするか。

JRF2021/8/92021

……。

……。

○ 2021-05-20T17:26:06Z

災害頻度。災害の長さ。

災害のスケジュールは日本の四季を参考にするか。水害は、6月から10月に大きいのが 10回ぐらいくる感じか。大火事は、11月から3月に5回ぐらい? ただ、水害も大火事もそれ以外の時期に1回ぐらいは来てもいいかな…。大地震は1年中かたよりなく、3回ぐらい。3地域からなる1国で…とすると、多過ぎかな? まぁ、数はあとから調整するつもりで。

JRF2021/8/95017

戦争はどうするか…10月の収穫期はやってこない、または休戦とかはありそうだが…まぁ、1年で何回というよりも、10年で1回ぐらい、6ヶ月から2年ぐらいのキャンペーンをするといった感じにするか…。

作物の病気は大きいのが20年に1回ぐらいの感じで、小さいのは2年に1度はどこかの地域では起こる感じか。飢饉は大きいののあと起こる…と。

疫病は、50年に一度、2年ぐらいかけて起こる…とするか。

JRF2021/8/91952

……。

経済は1年に一回、今は 12月に更新があるようにしているが、収穫期である 10月に更新があるようにすべきか…。いや、今のところいいか。

JRF2021/8/95457

……。

ユニットにすることで、予言がはずれることがなくなるというのは問題がある。やはり規模の概要値の大きさを正確に予想できないようにはせねばらなないのではないか。複雑であり過ぎる気もするし、それだけで十分か自信がないが…。

JRF2021/8/97233

……。

……。

○ 2021-05-22T17:51:27Z

災害のモデル化。

地震が襲う場合、他のユニットが壊れるが、その範囲は通常より広範囲に及ぶべきだ。それは地震に対するユニット数を少なくすることで対応すべきではいか。つまり、例えば、他の災害で、通常 10 個ユニットがあるところを、地震は 4 個のユニットで対応する。地震の 2 番のユニットが狙われたら、通常のものの 5 番 6 番 7番が被害にあう感じにすればいいのではないか。

JRF2021/8/99389

……。

複数の閣僚や部下のパラメータをまとめるときは、最大値 * 2/3 + 平均値 * 1/3 みたいに言っていたが、最大値 * 1/3 + 平均値 * 2/3 にしよう。最大値の影響が大き過ぎる気がするので。

JRF2021/8/97955

……。

予算に王や知事の「好み」…パラメータのかたよりを反映して、どれかの対策を強化する…みたいなのはやめよう。災害が細分化されて、どれを好むか…みたいなのは意味がないように思うから。ただ、王や知事のパラメータもユニット作成にはほんの少し関係する程度にはする。

JRF2021/8/94856

……。

「信仰理解」があることでの「寄進」は、ユニットを作るのに人力を割り当てるとき、対災害としては無意味な「寺院」ユニットに一定の労力をさく確率が増える…とするか。

JRF2021/8/91295

……。

「信仰理解」があることでの「寄進」は、ユニットを作るのに人力を割り当てるとき、対災害としては無意味な「寺院」ユニットに一定の労力をさく確率が増える…とするか。

JRF2021/8/98873

……。

……。

○ 2021-06-01T15:42:00Z

災害のモデル化。

ダメージの計算。

人死にのダメージを d[0]、財産のダメージを d[1]、建物へのダメージを d[2] …として、d[0]...d[n-1] を計算したい。

JRF2021/8/98274

すべての災害について共通の 0,...,n-1 のダメージの基準値を F[0]...F[n-1] とする。そして、ある災害において、人死にのほうが財産のダメージよりも目立つというとき、p[0] = 2, p[1] = 1 などと p[] という係数で表すとする。規模の概要値は Q で表す。

このとき d[i] = F[i] * Q * p[i] / sum(p) であれば良さそうだ。

ただ、ダメージに乱数要素が欲しい。そこで乱数 r[0]...r[n-1] を考える。r[i] は正規乱数でも良いかもしれないが、上限下限がないのは扱いにくいので、-1.0 から 1.0 の一様乱数としよう。

JRF2021/8/91616

そこで q[i] = p[i] * (1 + 0.2 * r[i]) として d[i] = F[i] * Q * q[i] / sum(q) とすれば良さそうだ。

なお F[i] は数値でなく、関数的な作用素と考えても良さそうだから…

d[i] = F[i](Q * q[i] / sum(q)) という感じで良い。

JRF2021/8/90862

そして、この d[i] 自体が、economy に対する作用素であると考えても良い。(作用素というと話が難しくなるが、要は、economy も取る関数で求める…という話である。)

JRF2021/8/92233

そして、この d[i] 自体が、economy に対する作用素であると考えても良い。(作用素というと話が難しくなるが、要は、economy も取る関数で求める…という話である。)

JRF2021/8/94880

……。

ダメージは「大きさ」という一軸ではなく、「深さ」と「広さ」という二軸など複数軸を持っている可能性がある。

このとき、d(j) がある二軸変化するダメージとして、d(j) を複数に分ける、すなわち、d[k] が「深い」が「狭い」もの、d[k+1] が「浅い」が「広い」ものとする。そして、d[k] d[k+1] が乱数的に変化すれば、d[k] + d[k+1] がもともとの「広さ」「深さ」の二軸が変化するダメージ d(j) に相当するものになってると考える。

…という感じにすればいいかと思う。

JRF2021/8/98911

……。

……。

○ 2021-06-02T15:30:51Z

今回のシミュレーションは、「古代」を対象にしていると言ってきている。まぁ、とはいえ、特定の地域の古代を正確に…というのではなく、古代風なことを適当につなぎあわせているだけのことであるのだが。

これが「完成」したら、私が…または別の人が、現代風にすることにチャレンジしてもよいだろう。

JRF2021/8/97442

最初から現代もののシミュレーションを作ろうとすれば、なぜ、これがないのか、あれがないのか…となりやすい。しかし、すでにできた「古代」のシミューレションをいじって、現代風にするという課題の場合、これがない、あれがない…の理由を、「古代」からの変形の難しさに帰着できる。

JRF2021/8/90632

まずは「古代」を作る。現代では差別的な扱いとなりがちなものもシミュレーションを言い訳として受け容れられやすい「古代」を作る。そののち「現代風」にしてお茶をにごす。ちょっと卑怯かもしれないが、そういうリリース戦略と言えるかもしれない。

JRF2021/8/97403

……。

……。

○ 2021-06-03T14:43:47Z

民の忠誠と支配層による慰撫。

ある地域の民の忠誠は 1.0 - [political_hating の平均] で表されるとして良いだろう。

JRF2021/8/92637

忠誠が小さいと公共事業がうまくいかないだろう。忠誠を p として、国王から部下の仕事(の重み付き和を最大値に乱数をとったもの)が q であったとき、忠誠がまったくないとしてもある程度仕事はされるだろうから、q * (0.7 + 0.3 * (1-p)) を仕事とする感じにするか。0.7:0.3 は 0.5:0.5 ぐらいでも良いかもしれない、どちらにするかはあとから考える。

JRF2021/8/91008

プログラムでは今のところ political_hating は増えるばかりで減ることはない。忠誠を上げるにはどうすれば良いか? 予言で災害が小さくなると忠誠が上がる…とすればどうだろう? だが、予言されたことが成就したからといって、普通、感謝するものだろうか。予言が外れて被害にあえば怒るかもしれないが…。

むしろ、何もしなければ忠誠は上がっていくもので、災害を防げないと下がる…被害が出た周りで political_hating が上がる…としたほうがよいのでは?

JRF2021/8/92747

何もしなければ忠誠が上がるというのも少しおかしいか。支配層が労働力を使って無意味な「寺院」を作る…ということを考えたが、それに似たこととして労働力をあてるべきところを「慰撫」にまわすことがあると考えようか。「慰撫」をよく使うので、「何もしなければ忠誠が上がる」のと同じ感じになる…と。

慰撫することで公共事業に回す労力が減り、その分、被害が増えることもあるはずだが、忠誠が上がることで公共事業がうまくいき被害が抑えられる道筋もあることから、どちらの効果が勝つか、ちょうどよいだけ慰撫すると効率が良くなる…というのはありそう。

JRF2021/8/92072

ただ、その効率の追及は難しそうなので、一定以上に忠誠を必ず保つ…というアルゴリズムにすれば十分ではないか。

慰撫は、地域の 1/2 から 1/4 の範囲のランダムに選んだ住民の political_hating を 1/2 にする…という感じでいいのではないか。1/2 から 1/4 のどこになるかは、信仰理解 + 人望 で決まってくる…「慰撫」のイメージとしては「祭」なので…という感じか。

JRF2021/8/95218

……。

……。

○ 2021-06-04T16:44:41Z

戦闘と信仰理解について。

「来世がないのがよい」から、来世に報いがないので兵は殺してよいになるのだろうか、来世に報いはありうるが、僧などが宗教的にとりなして護持してくれるから、安心して戦えるということになるのだろうか。

JRF2021/8/98273

いずれにせよ、「信仰理解」が兵の強さに結びついてる可能性はある。戦争=蛮族からの侵入に対する訓練レベルの上昇には、支配層の「信仰理解」も反映されるべきだろうか。それをいうなら、あらゆることについて、民の「勤勉さ」が重要なので、民の信仰心がからむとすべきではないか。具体的には、教育レベルの平均値を公共事業の達成にからませるべきではないのか?

JRF2021/8/95731

「来世がないのがよい」、「生きなければならない」、「自己の探求がよい」(あらため「思考と思念を深めるのがよい」)のうち、宗教的なのは、「来世がないのがよい」だけと言える。この本目的三条件を最適化するとき、「来世がないのがよい」を優先することは、「信仰理解」の戦闘に対する効果を大きくすると言えるのではないか。

逆にいうと「来世がないのがよい」の追及は、信仰する者の戦闘を妨げないようになされるのではないか。信仰する者どうしなら平和になるようにする。しかし、信仰してない者に対しては、殺すことが救いになる…といった教えになりはしないか?

JRF2021/8/90164

なりはしない。それなら、信仰理解が予言を通じて、戦争を防ぐような効果もなくなるだろう。

信仰理解が高ければ、「生きなければならない」を強調するなどして、迷って戦闘に参加しない者の目を覚ますことはできるかもしれない。しかしそれ以上の効果はない。それ以上の「狂信」をなくすることが、むしろ、「来世がないのがよい」の追及であろう。

JRF2021/8/90665

信仰理解が高ければ高いほど強いというふうにはしない…。信仰理解が高くなれば強くなるというのには threshold がある。その threshold が高いと狂信により予言は有効でなくなり戦闘が増える。ただ、あまり threshold が低過ぎても予言への影響はないので、threshold は 0.5 ぐらいが最適になる。その追及も、「来世がないのがよい」の追及である。…となるのだろうか。予言の有効でなくなり具合をちょうどよい塩梅にするのが、「来世がないのがよい」の追及となるのだろうか…?

JRF2021/8/91895

おそらく教育レベルが公共事業に与える影響も同じだろう。教育が高いほど公共事業がよくなるというのは、狂信に近い。教育が高いほど公共事業がよくなるのには threshold がある。その threshold が高いと狂信により予言は有効性を失いがちになる。threshold は 0.5 ぐらいが最適。…なぜ狂信に近いか。このころの教育は科学とは限らず、宗教教育も指すため、合理性が増すばかりとはならないからではないか。なぜ、予言は有効性を失うか。それは、僧達が非合理性のうちに生活できるようになるからではないか。

JRF2021/8/95684

……。

公共事業に対する仕事を q、忠誠による効果を p1 とすると、p1 * q を実際の仕事としたい。同様に、教育による効果を p2 とすると、p2 * q を実際の仕事としたい。ただ、両者をあわせて p1 * p2 * q とすると、値が小さくなり過ぎるので、相乗平均を使って sqrt(p1 * p2) * q などとしたほうがよいだろう。相乗平均 sqrt(p1*p2) でなく相加平均 (p1+p2)/2 を使っても良いかもしれない。見透しが良いという点では相加平均のほうがよいか。

JRF2021/8/93500

……。

……。

○ 2021-06-05T15:51:24Z

災害のモデル化。

>蛮族の侵入(Barbarian invasion) と その他の災害 (disaster) を分け、両者を総称して惨禍(calamity) と呼ぶことにする。<…と書いたが、日本語の名称を少し変えようと思う。

JRF2021/8/91634

蛮族の侵入(Barbarian invasion または単に invasion)はそのまま。disaster は「天災」に、特に指示なく「災害」というときは calamity クラスを指す感じで。ただし、この先も disaster のことも「災害」と言ってしまうかもしれず、それと区別するときは calamity を「惨禍」と呼ぶ感じで。

JRF2021/8/98862

……。

ダメージの計算。

水害で、堤防が壊れる…というとき、堤防のレベルには上限があるので、ダメージ割合 p[] で堤防のダメージの割合を大きくすると、すぐに上限を超えてしまい、実際には加わらないダメージが出てしまう。

そこで、提防については、上限ダメージから「逆算」して p[i] を計算し、1 - p[i] を i 以外の p[] に按分する方法が考えられる。

JRF2021/8/96269

ただ、こうすると堤防が小さいとダメージが大きくなる…みたいなことが起こる。一見、合理的に見えるが、当初の防御レベル・訓練レベルの仕様からは逸脱するような気がする。堤防が上限に達し壊れ切ったらそれ以上のダメージは、他の被害に波及しない…というのも間違いではないように思う。

一方、「逆算」がないと、堤防のダメージが大きいと計算されるのにそれがないから、規模の概要値が大きめに計算されていたことになる…とかが起こる。

JRF2021/8/94814

「逆算」はありにすべきかなしにすべきか、迷う。

とりあえずは「逆算なし」の方向で。

ただし、堤防の破壊は、p[i] が 0.1 とか、規模の概要値にほぼ寄与しない方向で。

ちなみに、堤防が防ぎきった場合も、堤防は少し壊れる可能性はあるので、防御成功時ダメージという考え方は維持する必要があると思われる。

JRF2021/8/96224

……。

また、戦争などが継続するとき、それも規模の概要値に含めるということであったが、それも p[] で按分されるようなやり方で正しいのか自信がない。訓練レベルが高く、被害規模を抑えられたとき、p[] の按分で次の戦闘が小さくなる…というのが正しいのか?

小さくならないような場合は、戦闘が継続ではなく新たに発生すると考えるのか。

JRF2021/8/96402

継続に規模の概要値をからませること自体が間違いで、戦争が起きたときは、規模の概要値に関係なく 3ヶ月ごとに新たな戦闘が発生するとしたほうが素直なのかもしれない。

とりあえずは「規模の概要値に関係なく 3ヶ月ごとに新たな戦闘が発生する」の方向で。そのほうが単純で、戦争=戦闘力不明の蛮族の侵入のイメージに合う気がするから。

JRF2021/8/99066

……。

……。

○ 2021-06-06T18:51:46Z

支配層と災害の簡易実装。

いきなりの実装はバグが見つかりにくくなったりして怖いので、簡易版をまず作ろうと思う。

結婚とかの複雑な関係はなしで、人口の増えたり減ったりだけを見る。

最初は、災害は、水害と蛮族の侵入のみを考える。

とりあえず、病気・怪我、作物の凶作は考えないことにする。

JRF2021/8/94699

……。

何期かにわたってシミュレーションし、人死にが出る。ということは、支配層も死に、代がわりが必要になる。

本来なら、王が死ねばその子や家族が継ぎ、閣僚や知事が死ねば部下の誰かが継ぎ、閣僚や知事の子などが空いた部下の席に座る。部下も死ねば子どもなどがその席に座る。…がデフォルト。ときどき(ランダムに)、実力のある者が世襲を破って起用される…その能力値は高めになる…本来その地位を世襲すべきだった者は簒奪者と指名権者を恨む…とかあってもよい。

JRF2021/8/99301

ただ、先に簡易実装する際は、支配層が死んだり年齢がいき過ぎたりしたら、18歳から50歳の者の中からランダムに選んできた者(すでに支配層でない者)を、その地位に就ける…でいいと思う。

JRF2021/8/95764

……。

……。

○ 2021-06-07T15:33:14Z

支配層の代替わり。

代替わり、本来なら…>王が死ねばその子や家族が継ぎ、閣僚や知事が死ねば部下の誰かが継ぎ、閣僚や知事の子などが空いた部下の席に座る。部下も死ねば子どもなどがその席に座る。…がデフォルト。ときどき(ランダムに)、実力のある者が世襲を破って起用される<…などと書いた。

JRF2021/8/97027

ここは、もう少し拡張。閣僚や知事に空きができたとき部下からだけでなく、一定率で王の子や家族が閣僚や知事になりうるとする。また、部下に空きができたとき一定率で、その部下の子などではなく、王や閣僚や知事の子や家族がその地位に就く…とする。リアリティを追及するなら、割を食った子などがその後、似たような「割り込み」をする…とかありそうだが、記録が複雑になるのでそこまではしない。

JRF2021/8/99642

……。

……。

○ 2021-06-10T01:23:27Z

戦争の効果。

戦争(蛮族の侵入)では兵である若者が死ぬ。兵は戦争の起こった地域だけでなく全国から集められるだろう。全国から死者が出て、該当地域は 3 倍死ぬといった感じか。それ以外の被害は地域限定でいいのではないか。インフレを考えるなら、全国的なインフレもありうるが、このモデルでは考えないので。

JRF2021/8/97357

ところで、兵に出ていれば農地等の管理はできないはずである。それをどうするか。基本的には、他の人が(有償で)手伝ってくれる。…ということになろう。リアリティには欠けるが、兵でもらえる給料の余剰分と手伝ってもらうための給料が一致すると考えて、特に何もしない…でも良いのではないか。

兵に行ってるはずの者の eagerness や education が農地で有効に機能するというのもちょっとおかしいが、戦場から手紙などで指示を出してると考えれば、まぁ、ものすごくおかしいということはないのではないか。

JRF2021/8/99584

だからあたかも農地で働いている者が、突然ランダムに戦場で死ぬ…みたいになるが、簡単化のためにはしかたあるまい。

JRF2021/8/90293

……。

……。

○ 2021-06-11T02:30:01Z

修正 「兵でもらえる給料の余剰分と手伝ってもらうための給料が一致すると考えて」→「兵でもらえる給料と手伝ってもらうための給料が一致すると考えて」。

農作物による収入は普通に発生するので、自分の給料を他人の給料にまわしても生活ができる。

JRF2021/8/95009

……。

規模の概要値から堤防のダメージを計算するとき、堤防も一つの財産と見て、財産額で大きさを測る方法と、被害の「マグニチュード」から測る方法がありうると思う。

提防は、レベルを上げるとき 1 から 2 に上げるには支配層一人しか必要でないが、2 から 3 だと二人、3 から 4 だと三人、4 から 5 だと四人必要になる感じにしようと思っている。

被害の「マグニチュード」から測る方法なら、レベルアップをしてきたものも、5 から 4 に 4 から 3 に…が線形でなくなる感じでもよいということになるだろう。

JRF2021/8/97276

一方、財産額で大きさを測る方法だと 5 から 4 に変化するのは、2 から 1 に変化するのの 4 倍規模が必要になる…とせねばならないだろう。

…どちらかというと、財産額で大きさを測る方法のほうが公平な気がするので、そちらを採ろうかと思う。

JRF2021/8/98313

……。

……。

○ 2021-06-11T16:53:19Z

規模の概要値から堤防のダメージを計算するとき、財産額で大きさを測る方法と、被害の「マグニチュード」から測る方法のどちらを採るかという話。

被害が 2.0 ぐらいというとき、堤防のレベルが 3 であれば 1 になって欲しいし、レベルが 5 であればほぼ完全に持ちこたえるのではなく、4 か 3 には下がって欲しい。…となると「マグニチュード」から測る方法を採るべき…となる。

JRF2021/8/99427

ただ、概要値と関係するには財産額で大きさ測ったほうが、統一感がある。…そこで、堤防については、作るときのコストはレベル 5 のときは支配層 4 人分とかになるが、壊すときは財産評価額が減っていて、レベル 5 から 4 でも 1 人分でしか評価しないとするか。買うときは高いが売るときは安い…みたいな感じ。

JRF2021/8/92697

一方、災害によるダメージでなく、経年劣化については、最大レベルのときはすぐに経年劣化する…で良いが、それ未満のレベルでは造るそばから壊れていく…というのでは維持できないから、レベル 5 で造るのに 4 人分かかるなら、経年劣化で壊れるのは 1/4 のスピードということにすべきだろうと思う。最大レベルのときは、その「人数分の 1」でなく 1.0 のスピードで減るとすれば良いのではないか…もしくは、他のレベルの三倍のスピードで劣化する…とでもするか。

JRF2021/8/90013

……。

……。

○ 2021-06-12T17:12:25Z

レベルに必要な「経験値」累計を (1/2) * (x ** 2) という二次関数(x がレベル)にしてしまったほうが扱いやすい気がする。(ちなみにこうすると、レベル 4 から 5 に上げるには 4.5、レベル 3 から 4 に上げるには 3.5 …が必要になる。)

必要なら前に係数 a をつけて (1/2) * a * (x ** 2) とかできるし。

JRF2021/8/91158

なぜレベルと必要な経験値の間の関係がそのようになるのかは、やってる自分でもうまく説明できないが。

経年劣化については…、経年劣化を経験値基準で常に b 下がるとする。レベル x1 のときは、レベル x2 まで経年劣化するとすると、x2 = sqrt(x1 ** 2 - 2 * b) と求まる。b = 1, x1 = 5 とすれば、x2 = 4.8 ぐらいになる。

JRF2021/8/95286

……。

……。

○ 2021-06-13T21:30:36Z

災害対応を通じた支配層の成長。

前は、災害対応を減らすと成長機会が増え、成長は失敗の確率が増えたところでなされる。…みたいに考えていた。

これを実現するには、自然には、災害対応する人物の他の人物に成長機会が訪れる…となる。しかし、普通に考えれば災害対応する人物も成長する可能性があるはずである。そこで、災害対応する人物も成長しうる…とするとすれば、災害対応で失敗の確率が増えることになる。これだと災害対応のメリットが薄れる。

JRF2021/8/91641

そこで、失敗する確率を増やす…というのはなしでいいのではないかと考えた。災害対応をしなくて済む余祐が、単に成長する人間を増やす。…と。ランダムに選ばれた人間…災害対応する人物かもしれない…が成長する。…と。

今はこれでいいのではないかという考えに傾きつつある。

仮に、失敗する確率を増やすとしても、同時に成功する確率も増やし、災害対応する人物も含めたランダムというのは維持するだろうと思う。

JRF2021/8/94768

……。

公共事業をするとき、忠誠による効果や教育による効果を考えた。これはら一口にいうと「国力」である。

「国力」と言えば、もっと重要なものがある。「人口」と「経済」だ。国力に「予算」とかは関係ないみたいにいったが、関係させておいても(他の人が作るのに参加するような)将来のことを考えると悪くはないかもしれない。

JRF2021/8/92179

「人口」は、標準的な人口が ARGS.population にあるので、それより小さいのはもちろん大きくなっても国力が削がれるとすればよいだろうと思う。

JRF2021/8/94450

問題は「経済」で、まぁ、税を兼ねた寄付金という概念があるので、それが多ければいいということにはなるのだが、何を基準に多い少ないを言えばいいのか。初期設定から来る寄付金額を基準にして、通常そこから成長するはずだから、国力への効果は 1 よりも大きくなるが、それは 1 としてほぼ影響はないが、災害で人口が減れば寄付金も減って、1 未満になると、国力への効果も下がる…とでもすればいいのか。それとも過去 10年平均とでも比べればいいのか。

JRF2021/8/97233

国力の効果は、他の効果と平均する。…ただ人口や寄付金の効果は、国力の平均を取る前に全国と地方とで平均しておいても良いかもしれない。

JRF2021/8/95939

……。

……。

○ 2021-06-15T23:56:06Z

神を信じると何が良いのか。良いこと・悪いことには報いがあると人々が信じると、悪いことが起きにくくなりそれを実際良い報いとして人々が受け取る。…ということではないか。

外部からくるものには通じがたいが、そうであるがゆえに宣教が大きな意味を持つのではないか。

JRF2021/8/98153

……。

……。

○ 2021-06-17T04:59:11Z

「反逆」の実装。家系的な hating を重視するという話だった。

部下が仕事をするとき、その hating (soothing である程度打ち消したもの)がどれほど邪魔をするか。

JRF2021/8/97492

パラメータを参考にするときは、王:閣僚:知事:部下 = 1:3:1:5 ぐらいの感じと言ったが、王への hating が 1.0 (最大)のとき、その比率がまず 0.5:3:1:5 になる。知事への hating が 1.0 のときは 1:3:0.5:5、両方に hating があれば 0.5:3:0.5:5。つまり、これはそこに協力をあおぐことがなくなることを示す。

JRF2021/8/92682

その上で、今度は協力が得にくくなることを示すために、パラメータで「仕事量」を積み上げたときに、そこに最大の hating のときには 0.75 をかける。「仕事量」には国力などをかけると書いたが、国力などは平均したものをかけるのに対し、0.75 は独立でかけるから、かなり効果が大きくなる。(0.8 では効果がなさすぎ、0.7 では効果があり過ぎと考え、その中間の 0.75 を取る。) 王と知事の両方に対し hating があるときは、どちらか大きい方の値を参照する。

JRF2021/8/92037

閣僚が王に hating を持っていることもありうる。この場合、1:3:1:5 の 3 部分を計算するとき複数の閣僚の平均などで値を出すわけだが、その出した値に対し、最大の hating で 0.5 をかけることにする。ただし、「最大の hating」は閣僚の hating の平均が最大値になることなので、0.5 がかかるほどに効果が大きくなることはないと想定する。

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

JRF2021/8/93620

……。

……。

○ 2021-06-17T19:18:51Z

予言とその対応。

予言には信仰理解と災害に対する予言能力が必要…とするとして、それはどのように関与するか。

JRF2021/8/99718

当初は、災害を予言するときに、予言能力が高いと、予言対応で被害を抑えられる幅が大きくなればいいみたいに考えていた。そして予言対応については建設能力などが重視されればいいと考えていた。しかし、誰が予言対応をするのか…どうして予言能力の低い者がわざわざ予言をしなければならないのか…と考えてつまづいた。

むしろ、災害は予言者にかかわらず「仕様」が決まっており、予言対応をするとき、その対応をする者の建設能力だけでなく、予言能力も見ることで、「予言能力が高いと予言対応で被害が抑えられる幅が大きくなる」…というのが後から実現できる…ようにすればいいと考えを改めた。

JRF2021/8/94637

そして、予言を誰がするかであるが、部下のうちランダムに選ぶのではなく、常に最も予言能力が高い者が予言するで…いいと考えることにした。いってみればその者が「参謀」ということになり、常に「参謀」が予言するということでいいだろう。…と。

JRF2021/8/98996

……。

……。

○ 2021-06-19T02:08:22Z

水害(洪水)のモデル化。

水害の頻度は、月によって異なり、月に何度か襲うこともある。ただ、一日には一度にしても問題ないだろうから、一日の確率に対し 30 日分サイコロを振って、水害を発生させる感じにしよう。一日の確率は、6月・9月・10月は 4/30、7月・8月は 3/30、それ以外の月は、0.5/30 ぐらいにとりあえずしておくか。

JRF2021/8/91993

水害の強さも、対防御レベルで、7 から 3 ぐらいまでで uniform なランダムでいいのではないか。とりあえずは。7 のほうが少なくなるよう傾斜を付けたほうがリアルかもしれないが、「災害」レベルになるかどうかでまず判断があり、「災害」レベルに決まれば、あとは運で uniform のほうが適当かな…と今のところは考えている。

JRF2021/8/91545

で水害でどれぐらい被害が出るかだが、10000人の人口で、レベル 7 で何もしなければ 1000 人死ぬ。財産の被害は 4000人ぐらいに出る。農作物の被害は半数の土地で被害が出るが、1月-4月・11月・12月は、作物が農地の上にないので被害が出ないとしよう。倉庫の穀物の被害とかありうるが、それはとりあえず考えないことにする。そして、堤防にレベル 3 のダメージがある。…と。

JRF2021/8/90778

レベル 5 だと、100人死に、レベル 1 だと一ケタしか死なない。…というのを scipy.optimze.curve_fit で求めようとして、まず、二次関数だとどうも妙な形になる…というので、a * np.exp(X - b) + c を fit させると、curve_fit の仕様のせいなのかどうもうまくいかない…が、結局、a = 1 b = 0 c = 0 すなわち 1 * np.exp(X) で、だいたいイイ感じになる。1, 5, 7 のときそれぞれ 2.7, 148, 1097 ぐらいになる。

JRF2021/8/96206

レベル 3 未満は通常の死などに含まれるとして災害としては考えない感じでいいと思う。

で、水害に対して対策をするとどうなるか。防御レベルは最大 1.5 上がり、訓練レベルも最大 1.0 上がる感じか。防御が成功…堤防が防ぎきったときは、被害は堤防のみで、レベル 7 の水害で、堤防が レベル 1.5 下がるぐらい。堤防が防ぎ切れなかったときは、元々は死者が 1000 人なのが、訓練レベルが最大の 3 で、500人ぐらいまで減る感じ…1 レベル下の災害になる感じか。

JRF2021/8/90354


……。

……。

○ 2021-06-19T23:50:27Z

本目的三条件…「来世がないのがよい」、「生きなければならない」、「自己の探求がよい」(あらため「思考と思念を深めるのがよい」) について最適化をしているとして、そのような最適化をやめた場合どうなるか?

JRF2021/8/95326

まったく三条件のどれもないというのは考えることが難しい。ただ、「来世がないのがよい」「思考と思念を深めるのがよい」をあきらめ、「生きなければならない」のみが残るような「原始状態」を考えることはできるだろう。

「生きなければならない」のみが支配する世界では、そうでない世界に比べ、生きるための犯罪や戦争が起きやすいと考える。それは逆に生きにくい世の中になっているものと思われる。

JRF2021/8/99581

そこで善の価値の重視などを行う…というのは、「思考と思念を深める」という方向性になるのではないか。つまり、ここでは因果応報的な価値の流布が目的とされ、そのために輪廻などの信仰が形作られる。「思考と思念を深める」には古代においては、信仰を大きくすることも含まれる。それにより、経済的に僧達が生きられるようにもなってきて、犯罪などをせずに生き残る方法が増える。

しかし、以前、信仰理解や教育が国力などへ与える影響には threshold があって、その threshold が高過ぎると狂信が起き、予言の有効性などが薄れるという話をしたが、そのような狂信がやがて起こってくることになる。

JRF2021/8/92090

これを防ぐために、「来世がないのがよい」という価値観が現れるのではないか。

「生きにくい世の中」「予言の有効性が薄れる」というのは「生きる」のが難しくなるという点で、「生きなければならない」を徹底できるなら、それだけで他の二条件が現れうると考えられるのかもしれないが。しかし、誰かがその思考に到達できても、それをすべての人が徹底することはできないものである。そこに他の二条件の価値がある。

JRF2021/8/95891

「来世がないのがよい」「思考と思念を深めるのがよい」を「生きなければならない」と同等に重視するということは、前二条件のために後一条件を犠牲にする場合がある…つまり、前二条件のために死ぬことがある…ということである。

これはちょっとひっかかるかもしれないが、戦争などにおいて、信仰心などから自ら犠牲になるような場合を考えてみればよい。そのような「死」に意味を見出すということである。僧として生に貢献しない生き方をしても、優れているとみなされる…などということである。

JRF2021/8/90095

……。

「来世がないのがよい」には、産児制限的な方向性がありうることを以前示唆した。

人口が増えたとき、僧は戦争が増えて人が死ぬのが増えるよりは、産児制限をする方向を選びがちなのが、「来世がないのがよい」という方向ではないか。産児制限をしてでも、僧は戦争を止めるのを優先する…といったほうが、適切かもしれないが。

JRF2021/8/92400

多く人が死ねば葬儀が増えるが、そこで得られた金銭は、僧は僧を増やすのに使うという話でもあった。それとの上の話の関係はどうなるのか? 結婚しない僧を増やすのは、戦争のあと子供を産もうとするのを抑制する効果がある。再びの戦争を抑えるため。…とも言える。他の災害の場合はそういう理由は薄れるが…。人口減のあとの人口ブームによるその後の戦争を防ぐため…とは言えるのでは?

JRF2021/8/95955

ただ、それはそれとして、戦争確率に人口を寄与させるのはアリだろう。人口が ARGS.population の 80% 以下のときは戦争がもっとも少ないが、120% を超えると戦争がもっとも起きやすくなる…というのはあっても良いかもしれない。その間の起きやすさの違いは、3 倍ぐらいで十分ではないか。「来世がないのがよい」にコミットが多いと、3 倍が 1.5 倍ぐらいになる感じか。

JRF2021/8/94095

……。

ロードマップ的なもの。

simbdp1.py (プロトタイプ 1 号)に支配と災害のモデルを入れたものが、simbdp2.py (プロトタイプ 2 号) になる予定で、そこにさらに僧と犯罪のモデルを入れたものが、simbdp3.py (プロトタイプ 3 号)とでもする予定。それでひとまずの達成としたく、当初の「仏教の最適化プログラム」という構想にどれぐらい近づくか…といったところ。

JRF2021/8/95636

……。

……。

○ 2021-06-22T06:52:37Z

災害の種類。

天災として、洪水・火事・地震・作物の病気や飢饉を挙げたが、それぞれ、水・火・土・風の「四大元素」にわりあてられるのはおもしろい。

JRF2021/8/98918

ところで、挙げなかった災害で大きなものに、「噴火」がある。噴火はかなり場所が限られるし、たいてい危ないところに人は住んでないものである。しかし、あえて、「噴火」の被害を表すなら、このモデルでは、火属性の火事ではなく、土属性の地震に類似するものとして表現すればいいと思う。

JRF2021/8/94587

……。

戦争(蛮族の侵入)のモデル化。

戦争は最大2年に渡り、その間ずっと (3ヶ月に一度)被害が出続ける。そのため、一期の被害そのものは水害ほと大きい必要はない。

JRF2021/8/93741

10000人の地域を対象に、最大で全国から集めた戦士の若者が300人死に、それ以外の者が300人死ぬ。…という感じか。負傷がかなり出るだろう。水害は逆に死ぬか助かるかで障害が残るような負傷が出にくい構図で、死者1000人のときでも100人を越えない感じだが、戦争の場合は、死者600人なら、300人は負傷者も出る感じか。あと、女性の強姦による妊娠も 600人に妊娠確率をかけたぐらいは出るだろう。

JRF2021/8/93683

農地は侵略する側も必要だろうから、案外被害は出ないと考える。ただ、倉も含め財産が取られると考え、商業財産にそういった被害も含めて考えるとして、1200人ぐらいが被害に合う感じか。

JRF2021/8/97988

あと、支配層に死者が出る…というのはあるか。どの部下が選ばれるか…一般の部下の確率を p とすれば、予言対応をした部下は 2 * p、国王や閣僚は 0.1 * p の確率で死ぬ…とでもするか。最大 1.2 人死ぬ感じで。

防御レベルで防ぎきることはあまりないものの、訓練レベルによる被害削減効果はかなり強力で、水害だと最大レベル 1 しか下がらなかったのがレベル 2 から 2.5 ぐらいは下がるとするか。防御レベルで防ぎきった場合は、戦士に若干の犠牲は出る…みたいにはするか。

JRF2021/8/94287

防御レベルも訓練レベルも最大は 4、予言対応で上がりうるのは防御レベルは 1、訓練レベルは 1.5。対防御レベルの最大は 6。…といった感じか。

戦争の頻度は、人口が少ないと15年に1回ぐらいで、人口が多いと5年に1回ぐらいになる感じか。期間の長さは 1期から 2年まで uniform で ceil する感じで決めるか。

JRF2021/8/92294

……。

……。

○ 2021-06-24T09:10:08Z

ダメージを d[0]...、ダメージの基準値を F[0]...、規模の概要値を Q とすると、ある パラメータ p[0]... について、d[i] = F[i] * Q * p[i] / sum(p) であれば良さそう…という話。

具体的に F や p を決めていかねばならないが、どうやって決定していくか。

JRF2021/8/92306

まず、水害について考える。規模の概要値は多くの部分が人死にの規模を表している…とすべきだろう。1000人死ぬ水害について、規模の概要値は 1300 ぐらいにする。そして、人死にの p[] は、10 ぐらいとして、全部(sum(p))で 13 の残り 3 ぐらいを他(財産・農地・堤防)に割り振る感じにする。他は p[] = 1.0 ぐらいでいいのではないか。そのように割り振れば、F[] の値が決まってくる。(人死にの F[] は 1.0、財産被害の F[] は 40 …など。)

JRF2021/8/98007

次に戦争の被害を考える。戦士は他の人の1.5倍の「価値」があるとして、戦士 300人、その他 300人の死者は、p[] = 12.5 に対し、750 の規模の概要値を持っている。負傷は、p[] = 2.0 で 300人ぐらい死ぬが、それが 60 ぐらいの規模の概要値を持っている。

水害における財産の被害 4000人に相当する規模の概要値は 100、戦争の 1200 人の被害は、100 * 1200 / 4000 = 30 の規模の概要値にすれば良いとなる。負傷と比べると p[] = 2.0 * 30 / 60 = 1.0 であれば良いとなる。

JRF2021/8/90458

強姦も p[] = 1.0、支配層の死者も p[] = 1.0 とする。もろもろ足せば今度は逆に戦争全体の規模の概要値(1000?)が求まることになる。

また、逆に水害は負傷が少なかったので、水害は 100人負傷するから、20 ぐらいの規模の概要値を持つことになり、規模の概要値 1000 が p[] = 10 に相当するのに比べてそれは p[] = 0.2 ぐらいであれば良いことになる。水害全体の規模の概要値は 1320 にすれば良い。

JRF2021/8/97198

こんな感じで決めていこうかと思う。

本当は、F[] の値は、それぞれの被害を金銭換算した額にすべきであるが、それを決めるのは難しい。むしろ、ここでの F[] の値によって、それぞれの金銭価値が逆に決まってくる…。支配層の災害被害に対する評価が、物の金銭価値を決めるのであって、労働の価値などは二の次である。…ということになるのかもしれない。

JRF2021/8/94621

この辺、もう少しあとになって、F[] の値がおかしいとなればいじるつもりで、そうなれば、労働の価値などを元にしたものに収斂していくのかもしれない。

JRF2021/8/95439

……。

……。

○ 2021-06-28T09:58:23Z

支配と災害のモデル。洪水と侵入だけで、とりあえず動くところまで作ってみた。

test_of_domination_2.py がそれ(バージョン 0.0.1)。

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

JRF2021/8/98340

全々バグは取れてないと思う。とにかく動くところまでやったという感じ。洪水の数は多過ぎる感じで、侵入はバグを取るには少な過ぎるので10年に1回を5年に1回に増やしてある。災害が多過ぎるので人口が常に減少してしまうことはわかっている。

その他のバグ取りをどうすればいいのか、その指針がなく、次のステップをどうするか、少し困っている。

とにかくこのところプログラムのアップをしていなかったので、アップを急いだ面がある。次のアップはいつになることやら…。

JRF2021/8/96703

……。

あと、simbdp1.py に、支配と災害のモデルを入れたもの… test_of_domination_2.py の成果を取り入れたものを、simbdp2.py とする予定。今は simbdp1.py のバージョン 0.0.4 とほぼ同じものを simbdp2.py のバージョン 0.0.1 としている。

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

JRF2021/8/90676

simbdp2 で simbdp2.py 以外はディレクトリ simbdp2/ 以下に置いた。実行は普通に python simbdp2.py でいい。

JRF2021/8/95235

……。

……。

○ 2021-07-01T08:54:36Z

training や protection を construct できるのは、training_max または protection_max の - 0.5 までとした。そうでないと、予言による training や protection の上昇が意味がなくなることが多かったため。この辺、training や protection をいいぐあいに低くもなく高くもなく保てるならいらないかもしれないが。

JRF2021/8/91357

……。

……。

○ 2021-07-02T12:06:49Z

construct できるのは、training_max または protection_max の - 0.5 までとした件。考え直して、training_construct_max や protection_construct_max を作り、それぞれ 元の -0.5 の値を入れるようにした。そのほうが予言の効果を大きくしたい場合に便利で、今後拡張性があるから。

JRF2021/8/97613

……。

戦時強姦は、若い女性(12歳から35歳)のみが被害者となるとし、そこに被害が集中するとして被害者数の最大値を600人から300人に減らした。

JRF2021/8/93786

……。

「日照り」はこのモデルでは「作物の病気」の一種と考えよう。だから、「作物の病気」は結構広い範囲に影響があることもありうるとなる。

「作物の病気」が広まるというのは、Person の tmp_land_damage が 1 に近い者が増えるということになる。simbdp1 では、tmp_land_damage が 1 の土地も半分は収穫が期待できるとしていたので、そこまで厳しい数値にはならない。

JRF2021/8/95361

ただ、tmp_land_damage が高い者が一定以上たまる(平均が一定値を超す)と、「飢饉」が起こるとする。tmp_land_damage の判定は 10 月に行い、その結果により、2月に「飢饉」が発生し人が死ぬなどの被害が起こると単純化しよう。本当は、冬を通じたり、一年を通じたりして被害が出るのであろうが、そう単純化する。平均は一地域よりも国全体平均が大事で、全国的に被害が出るが、地方平均が悪いところがより被害が大きくなる。…と。

JRF2021/8/92575

「飢饉」に対する防御は倉を作ることなどが想定できるのだが、倉を作っても中身がなければ意味がない。だから、人力・国力を使えば防御レベルが上がるというのは違うと思う。創世記のヨセフよろしく地方に倉を設けて置いて、そこに貯めておけばいいのだろうか? どれぐらい貯めればちょうど良いのだろう?…よくわからない。あるとすれば、飢饉の一年目は倉で保つことができるが、2年目からは保てない。つまり、飢饉が2年続いたか否かが大事というぐらいしかモデルとして意味がないのではないか。

JRF2021/8/92489

むしろ、「飢饉」が起きれば、周辺国などからかきあつめることができ、配給制度などをととのえれば対応できる…ぐらいに考え、予言対応を重視するほうがいいのではないか。防御レベルは倉があることぐらいなので建設できる最大値は 2 程度、訓練レベルは配給制度への備えなどで訓練できる最大値は3程度、しかし、予言対応により大幅に被害は下がりうることになり、訓練レベルが最大で 5 にできる。最大で 1000人死ぬレベルの飢饉が襲えば、それは最大の訓練レベル 5 で、レベル 2 下がったぐらいの 100人並みに災害になる感じにしようか…。

JRF2021/8/94535

……。

……。

○ 2021-07-04T04:53:36Z

将来的に、支配層のダメージの評価の仕方を変えたいと考えるようになるかもしれない。これまでより財産への被害を重視したり…といったこと。

それは比較的簡単にできると思い付いたので実装しておいた。例えば、↓の場合、死亡の評価を 1/2 に、財産の評価を 2倍にすることができる。

ARGS.damage_scale_filter = {'death': 0.5, 'property': 2}

今はまだだけど、次のバージョンから…。

JRF2021/8/97104

……。

……。

○ 2021-07-06T22:42:03Z

CalamityInfo などをクラス変数・クラスメソッドを使うことで、Calamity などに統合した。Perl などの連想から、クラス変数などが Python ではうまく使えないだろうと予想していたが、存外、クラス変数の実装がまともなので、それを使うことにしたのだった。

これも今はまだだけど、次のバージョンから…。

JRF2021/8/98349

……。

……。

○ 2021-07-08T03:57:33Z

飢饉の特徴として、貧しい者が被害にあいやすいというのはあるか。他の災害の場合も貧しい者のほうがあいやすいかもしれないが、少ない中から富める者もあう可能性があり、だいたい公平に被害にあうとしてもよいと考えてきたが。飢饉に関してはそうはなるまい。

JRF2021/8/92719

作物の病気(日照り含む)に関しては、最大で2分の1の土地が被害を受けるとしよう。前に洪水で最大半分としていたが、洪水でそこまで影響することはないはずなので、これは4分の1にする。防御レベルは日照りに対して水路を作るぐらいで最大が3、訓練レベルは、病気が起きたときにすばやく隔離するぐらいで最大が 3 としよう。予言は通じずほとんど効果なしで、防御レベル +0.5、訓練レベル +0.5 が最大としよう。災害のレベルとしては 2.5 から 5 ぐらいとする。被害が作物のみというのが特徴だが、この後に飢饉が待つ。

JRF2021/8/93354

飢饉は、11月の 1 - tmp_land_damage の全国平均が 0.8 を下回ったときに 2月に起きることとする。それぞれの地方において、1 - tmp_land_damage が 0.75 以上で最小、0.4 以下で最大のダメージとする。防御レベルは 3 で最大、建設はレベル2まで。訓練レベルは 5 で最大だが、建設はレベル3まで、災害のレベルは 3 から 7 で、最大 1000人死ぬ感じか。貧しい人を中心に財産の被害も出るが、同じ規模の水害に比べて 1/2 程度としようか。払う金がないから。防御し切ることはないが、防御レベルは防御するか否かにかかわらず毎度削られる感じか。

JRF2021/8/99852

…ただ、この数値的設定だと、まったく飢饉が起こらない。

大幅に変更して、農地被害最大は半分でなく全部(洪水は最大半分)、1 - tmp_land_damageは、全国平均が 0.95 を下回ったときで、地方で、0.90 以上で最小、0.55以下で最大として、やっと、(洪水が起きない設定で) 100年で10回程度起こることになる。しかも、かなり小さい規模で。今後は、こっち側の数値を採ることにするが、大きな見直しが必要かもしれない。

JRF2021/8/95667

……。

……。

○ 2021-07-09T11:43:09Z

今の実行順序なら大丈夫なはずだけど、災害が起こる前に、make_support_consistent(economy) してあるのを忘れないように。もし、将来的に誰かが変更して、災害が起こる(update_calamities)のが誕生(update_birth)のあとに来たりするとまずいことになる。

JRF2021/8/93410

……。

災害のうち、大火事について。

前は 11月から5回ぐらい襲うという話をしていたが、それはやめ、普通の火事はカウントされず、都が焼かれるぐらいの規模のものだけをカウントすることにする。よって、5年に一回とかの頻度になる。12月から2月の冬に若干頻度が上がる感じか。

JRF2021/8/96340

特徴としては、ケガ人が水害よりは多いことだろうか、ただ、戦争ほど多くはない。水害の5倍、戦争の 1/4 倍ないし 1/2 倍。財産の被害は都市のみに集中すると考えて水害の 1/4 程度としよう。農地の被害はない。ただ、前言ってたことと違って、大火事については、防御レベルは警備レベルで 3 で最大、訓練レベルは避難訓練でレベル5 で最大。ただし、訓練で減らせるレベルは 1 程度。予言は水害並みには効くとしよう。

JRF2021/8/99929

……。

災害のうち、地震について。

地震も前言ってたのと違い、5年に1回ぐらいにする。

防御ユニットに相当するものはなく、最大で 1とする。そして避難訓練に相当する訓練レベルは 3 まである。そして、起こると、様々な建築系のユニットが広範囲に傷つく…そういう災害ということになろう。予言は無効。ケガや財産の被害は、火事並み…としよう。

JRF2021/8/91617

地震は、前は襲うユニットによって、壊れるユニットが決まるみたいに書いてたが、その地域のどのユニットも対象となって壊れるようにした。ただ、ここは将来的には、前言ってた方向に変えても良いかもしれない。

JRF2021/8/96532

……。

災害のうち、疫病について。

50年に一度、戦争と同じで最大 2年のスパンで、3ヶ月ごとに起こるとする。

防御ユニットに相当するものはなく、最大で 1とする。そして、医療や衛生に相当する訓練レベルとして 3 まであることにする。起こると、人が死ぬ。本当は病気で後遺症が残るとかありうるが、それはとりあえず考えないことにする。財産や農地の被害はないものとする。予言は少しだけ有効とする。

JRF2021/8/99492

……。

これで、災害は出揃ったが、これでシミュレーションを回してみると、人が死に過ぎて人口減少していく。

そこで、洪水と大火事の頻度をそれぞれ 1/2 倍した。

JRF2021/8/97862

……。

ほんとにとりあえず、支配層の「給与」を、王は 50、閣僚と知事は 30、部下は 15 としておく。

JRF2021/8/98321

……。

何かと不満はあり、完璧からほど遠いとはわかっているが、ここらでアップしておくべきかと思い、test_of_domination_2.py を更新しておいた。(バージョン 0.0.2)

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

JRF2021/8/94359

バグっぽいのが、district 0 番が district 1 番よりも常に人口が減りやすいように見えること。どこかでミスしてると思うのだが、心当たりがなく困っている。初期の相互の hating の違いだけでそこまで大きな違いはないはずなのに。

JRF2021/8/92527

……。

……。

○ 2021-07-11T06:30:39Z

Ctrl-C でデバッガ(pdb)に入れるようにした。途中でパラメータを見たい場合などに便利。

ほぼこれだけしか変更はないけど、test_of_domination_2.py を更新しておいた。(バージョン 0.0.3)

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

JRF2021/8/97090

実はバージョン 0.0.2 は最後にチョコっとやった変更のあとチェックを忘れていて、動かないまま公開してしまっていたのだった。すみません。orz

それでとにかく動くバージョンを早く公開しておこうとなったのでした。

JRF2021/8/96412

……。

……。

○ 2021-07-14T13:22:03Z

hate がしずまるのが一方的に良いというのも少し違うのではないか。政治に緊張感をもたらす効果などがあるのではないか。でも、hate が「まったくない」状態は過度に宗教的な状態のため、「狂信」によるマイナスがあり、そのマイナスで、逆に hate がある状態の緊張感を表せているとしても良いのではなかろうか?

JRF2021/8/95199

……。

出生数が少なくても人口が維持されていること=幸福…なのだろうか? これは「来世がないほうが良い」に連なる考え方ではあるだろうが、人口が維持されているという条件がつくのが微妙に違う。

JRF2021/8/98961

……。

「来世がないのが良い」が出生数の少ないことをよしとする側面があるとして、その部分だけを見ると、キリスト教における「原罪」概念も同じ役割があるのではないか?

JRF2021/8/98876

……。

……。

○ 2021-07-15T02:33:18Z

micro_economy_*.py を作っているときにも考えたのだが、シミュレーションと数学モデルについて。

JRF2021/8/96129

論文があるような経済学のシミュレーションでは普通は微分方程式を立ててから、それをシミュレーションのプログラムに落とすことが多そうだ。私も経済シミュレーションで微分方程式が使えればカッコイイと前は思っていた。しかし、微分はコンピュータ上では結局、差分にせざえるを得ず、そうすると、micro_economy_*.py でもやっているように、前の期のデータを使っていれば、それは差分(微分)方程式的複雑さはすでに含んでいることになるのではないか?…と考えるようになった。近い平均に対して変化していれば、二次の微分を含むものより複雑ですらあるのではないか?…と。

JRF2021/8/98928

数学をもとにしている場合、方程式を立ててから、逆に解いて、まるで魔術のように無意識のうちに示されていた真実にいたるようなことをする。私のやってる simbd にはそういうのはないが、リアルさが大事で、作ったものをリアルに近付けていく過程で、魔術的というほどではないが、真実のようなものに接近しているな…と感じることはある。

JRF2021/8/97774

等式では式の変形による逆の導出の可能性もあらわしていたり、式の変形から来る意外な関係が可能となっていることが表されていることがある。それが代入を原則とするプログラミングとはかなり異なる。…ということだが、しかし、代入を使うようなプログラムも副作用がありえ、関数が通常の処理をして等合的値を出してる間に、副作用が、それ以外の関係を記述していることがありうる。副作用がその式の上の処理系に影響を与えて一種のループになることもありえるし、ある式が成り立たなかったことを例外処理などを用いて表すこともできる。

JRF2021/8/98622

方程式にはなってるが、等式の右と左で意味が違い、そうほうから近似的に接近することが想定されているような場合もある。それに対しては、コンピュータなら、接近をそのままプログラミングすることもできる。なんなら、プログラムとしては無限ループに陥いるという表記のままにしておくこともできる。

JRF2021/8/90853

信仰理解を狂信による非効率につなげるようなことを simbd ではしているが、そういうアッチとコッチの本来無関係的なものをつなぐのは、一種の方程式をたてることに相当するのではないか。制約式と似ているが、もっと、シミュレーションにとって本質的で、その「方程式」から意味が導かれ示されていくようなものではないかという直感が私にはある。

JRF2021/8/90800

一方、私のものに決定的に不足する部分があることも認めざるをえない。生体コンピュータみたいなものはまだないが、並列であることが本質的に必要なものがあるかもしれない。それを数学で表すとき、行列の固有値などで(部分的に)表されることがありうる。そういう数学概念はコンピュータ上でも大きな意味がある。極値を取れば別の関数が浮かび上がるというのも有用な数学概念だろう。一般にコンピュータシミュレーションがそういうものが使えないということはないのだろうが、私の simbd, micro_economy_*.py 系では使っていない。今後使えたらカッコイイな…とはやはり思う。

JRF2021/8/94993

……。

……。

○ 2021-07-21T11:24:05Z

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

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

JRF2021/8/98688

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

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

JRF2021/8/99705

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

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

JRF2021/8/96837

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

JRF2021/8/95169

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

JRF2021/8/96059

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

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

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

JRF2021/8/96752

……。

上の仕様を実装し、転居のみをテストする 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

JRF2021/8/93866

それを 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

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

JRF2021/8/98424

……。

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

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

JRF2021/8/94369

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

JRF2021/8/92306

……。

……。

○ 2021-07-22T05:11:46Z

病気または怪我(ケガ)。

障害ができるようなケガは、p.injured で、一時的なケガは p.tmp_injured で表現し、災害などの際にケガをする者として選ばれると、p.injured は最大 0.5 ずつ、p.tmp_injured は最大 0.5 ずつ上がっていく。p.injured と p.tmp_injured は、p.tmp_labor を計算するとき p.labor から減算される。p.tmp_injured は一ヶ月ごとに 0.1 ずつ下がっていく。…とする。

JRF2021/8/90006

p.injured が 1 になると、a60_death_rate と同じだけ死亡率が上がるとする。0 は当然上昇なし。高齢者の場合は、高齢者死亡率と p.injured による死亡率の大きいほうを threshold として取ることにする。

JRF2021/8/93272

当初は p.tmp_injured は考えないでおこうと思ったが、入れておいたほうが今後のために良いか、そのほうがリアルか…と思い、いちおう入れておくことにした。p.tmp_injured を入れるなら、災害などの際にケガをさせるとき、もしかすると今よりかなり多めに(一時的な)ケガをするようにして、そのうち何人かは障害が残らないようにする…としたほうが、自然だったかもしれないが、とりあえず、そうしてない。必ず障害が残るように(残る者だけケガをしたと選ばれるように)なっている。

JRF2021/8/98852

……。

……。

○ 2021-07-23T07:36:02Z

地域の移動または転居。

前は人口の多いところから少ないところの転居を考えた。そういう転居は、金銭面で有利なことから起こると考えられ、そうなるよう金銭面で有利にしていた。

それ以外に、何らかの事情による転居も考えられる。ちょっと違うかもしれないが、これを「自由な転居」と呼ぼう。

これは、人口の0.5%について、ランダムに住む場所が shuffle されるものとする。プログラムは、前の転居と似ていて簡単なので説明しない。

JRF2021/8/98561

……。

いちおう病気またはケガと自由な転居についての変更を公開しておく。test_of_domination_2.py は バージョン 0.0.5。

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

JRF2021/8/95245

……。

さて、次は、支配者の退職と後任の決定…をやりたいのであるが、このテストが test_of_domination_2.py では簡単にできない。simbdp2.py に移行してそこでやるか、それともテスト用に新たな枠組を作ってやるか…。めんどくさいが、急がば回れで、新たな枠組をまず作る方向か。…とすれば、次回は、少し先になる感じか。

JRF2021/8/99734

……。

……。

○ 2021-07-23T09:05:55Z

私のやったことが死後遺るようにするためにはどうすればいいのか。私のやったことを学んでも役に立ちようがないのが実際。それで人に無理に教えるというのも間違っている。どこかで役に立つことをもっと考えるべきなのだろう。本当は今から常に役に立つようすべきなのだが、それを考えながら、自分にとって正しいという方向にも行くのはなかなかに難しい。とにかく今は物を完成させるのが先だ。あとはこの先の自分に命と気力があれば、なんとかしうると期待するしかない。

JRF2021/8/95717

……。

……。

○ 2021-07-30T12:52:08Z

支配者の退職と後任の決定。または「代替わり」。

例えば、vassal (閣僚)の誰かが退職し、その子がその地位に入るとして、その子はそもそも cavalier (部下)であったとしよう。すると、その子が繰り上がったため今度は cavalier にも退識者が出たとして処理をすることになる。このように順繰りな退職処理は発生するが、それは1つずつ処理していける…と仮定するのは間違いである。

JRF2021/8/95026

その cavalier が地域 1 にいて、vassal になるため、地域 0 に転居せねばならない場合に、cavalier の扶養する子供がいて、その子供もまた cavalier であったとしよう。すると、まず vassal の地位に着くのが優先され、そのために同時に二人の cavalier に退職者が出る。これを処理せねばならない。これはなかなかに難しい。

JRF2021/8/91938

そこで退職と後任は別の処理とすることにする。退職は退職だけで複数(同時でも良い)起こり、一期に一度(か二度)だけ後任処理が起こるとする。(後任処理の途中にも退職処理は出る。それも加味してすべての後任が決まるまでループする。)

JRF2021/8/97591

退職時は、指名を残し、それを経済に記録しておく。指名は、地域 0 の cavalier なら、(cavalier, 0) の地位何がしの(死んだ?)誰それの指名がある…などとする。地位も記録するのは、複数の指名がだぶったとき地位にもとづき優先するため。地位は、指名者が指名時よりすでに高い地位にある場合は、そちらを参照する。

JRF2021/8/99938

……。

王が死んだときは、前王の指名がまず優先される。指名は、子がいれば子、長子が優先される。子がいない場合は、孫。孫もいない場合は、王の兄弟。王の兄弟もいない場合は、王の兄弟の子。王の兄弟の子もいない場合は、リアルではないかもしれないが、指名は有効でなくなるとしよう。指名は王でなくてもこのような探し方をするとする。

指名が有効でない場合は、閣僚または知事から、閣僚または知事がいない場合は、部下から、部下もいない場合は、ランダムに国民から…となる。

JRF2021/8/92578

閣僚や知事が死んだ場合はもっと複雑である。この場合、指名が常に優先するとは限らない。王の横やり(指名)があることもある。部下からの昇進が優先されることもある。ほんのわずかな確率ながら国民の大抜擢もありうるかもしれない。

それぞれに重みがある。指名が王からのものなら10、閣僚や知事のものなら 8、王の横やりは 3、部下からの昇進は 5、大抜擢は 1 とする。その重みに元づきランダムにソート(シャッフル)して、ソートされた上から順に評価する。

JRF2021/8/97611

重み付きランダムシャッフルは、(8 + 3 + 5 + 1) * random.random() して、着地した点を取り除き、今回それが 3 部分だとすると、今度は、(8 + 5 + 1) * random.random() して着地した点を取り除き…としていこうかと思う。若干非効率だが、直感的でわかりやすいからこうしようと思う。

JRF2021/8/93432

部下が死んだ場合。指名が王のものなら 10、閣僚や知事のものなら 8、部下のものなら 5。王からの横やりは 3、閣僚からの横やりは 2、知事からの横やりは 3、大抜擢は 2 とする。やはり重み付きランダムシャッフルを用いて決めていく。

JRF2021/8/96111

指名は指名者の地位の高いものを優先するが、地位が同じものが複数ある場合は、ランダムでどの指名が有効かが決まるものとする。知事が死んで部下が昇進する場合はその地域の部下から選ばれるが、閣僚が死んで部下が昇進する場合は、全国の部下の中から選ばれることとする。部下や閣僚など、複数の候補から選ぶ場合は、もっとも優秀なものから選ばれる…とするか。優秀さは、全能力の平均値で測る。…と。

18歳から50歳の者のみが新たな支配層になる。70 歳を越えると王以外は退職する。より低い地位に就くことはない。…が注意すべき点か。

JRF2021/8/93692

最終的に、その期指名が生かされなかった分については、指名が次期に持ち越されることなくキャンセルされ、指名されるべきだった者が、本来なるべきだった地位にその期新しく就いた者に恨み(ねたみ)を抱くようになることとする。

JRF2021/8/98613

……。

……。

○ 2021-07-30T12:53:01Z

指名により子や孫、兄弟から選ばれる件、嫡出、非嫡出、養子の扱いについて。

まずは、嫡出子つまり正式な結婚による関係の子や孫、兄弟が選ばれる。それらがいない場合、非嫡出な関係までみて、子や孫、兄弟から選ばれる。それらもいない場合、養子までみて子や孫、兄弟から選ばれる…とする。

JRF2021/8/93745

もしかすると、嫡出的な弟の子より、非嫡出な孫のほうがリアルには優先されるかもしれないが、アルゴリズムは上記のほうが簡単なのでそうする。

JRF2021/8/95722

……。

指名を試すプログラムを作った。結局、親子のデータのテストは、test_of_matching_2.py のデータを読み込み、その親子データの上に支配層の構造をランダムに構築することで行った。それが test_of_domination_3.py。(バージョン 0.0.1)

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

JRF2021/8/94467

この実行の前には…、

python test_of_matching_2.py -S -t 1200

…を実行し正常終了し、test_of_matching_2.pickle ができている必要がある。

JRF2021/8/99069

test_of_matching_2.pickle の変わりに simbdp1.pickle が使えるようにしたかったが、pickle のモジュールシステムに関する仕様が難しく諦めた。test_of_matching_2.py であって、test_of_domination_2.py でも simbdp1.py でも simbdp2.py でもないのでお間違えないよう。

JRF2021/8/95244

……。

いちおう、test_of_domination_2.py に指名のアルゴリズムも入れておいた。(バージョン 0.0.6)

ただし、test_of_domination_2.py には親子関係が入っていないのであまり意味はない。

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

JRF2021/8/96503

……。

……。

○ 2021-07-31T11:29:44Z

そろそろ test_of_domination_2.py で構築すべきことは済んで、simbdp2.py にその成果を移しても良い段階に来ていると思われる。仮に test_of_domination_2.py でやるべきことがまだあったとしても、これから先は同時に simbdp2.py に変更を加える形にすればよいこと。

JRF2021/8/90961

…とは思うものの、テストが十分かなど思うところはあり、すぐに simbdp2.py に入るべきか、もう少しタメて検討すべきか…迷っている。ただ、検討したところで何か思い付くあてもあるわけでもなく無為に過ごしそうな気もするし、やりながら考えたほうが良い気もするが、単純なほうが考えやすいということもあるだろうし。…と言った感じで迷っている。

少し休憩かな。…とも思うが、休憩が必要なほどミッチリやってるのでもなく、「遊び」の合間合間に作ってるだけだしな…。

どうしたものか。

JRF2021/8/97895

……。

……。

○ 2021-08-01T04:13:34Z

test_of_domination_2.py。デバッグ用のオプションとして、特定の期にデバッガに入る --debug-term が前からあったが、さらにエラー時にデバッガに入る --debug-on-error (または -d) を足した。Ctrl-C でデバッガに入るのは、オプションの指定はいらず、常にそうなっている。

JRF2021/8/93224

……。

……。

○ 2021-08-04T11:37:23Z

test_of_domination_2.py の内容を simbdp2.py に書き移した。(バージョン 0.0.3)

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

JRF2021/8/90548

ちょこちょことバグを取ったが、基本、test_of_domination_2.py を書き移しただけで、他(例えば結婚の処理等)はまだぜんぜんやっていない。1200期ほど回すと人口減少も大きいので、災害の頻度を少なくする必要がありそうだが、まだやってない。

JRF2021/8/90195

……。

あと、test_of_matching_2.py や simbdp1.py にもバグが見つかったので、それを改めるついでに、Ctrl-C でデバッガに入るなど、デバッグオプションをそれらにも足しておいた。(test_of_matching_2.py はバージョン 0.0.18。simbdp1.py は バージョン 0.0.6。)

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

JRF2021/8/95426

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

JRF2021/8/90113

……。

……。

○ 2021-08-06T05:14:34Z

一つ前のメモで、test_of_matching_2.py や simbdp1.py にバグがあって直したと書いた。しかし、検討しなおしたところ、それはバグではなかった。それらでは、p.land + p.prop が 0 未満にならないという「仕様」が成立しているのでバグにはならなかった部分を前回「直して」しまったのであった。その部分、simbdp2.py では、災害でその「仕様」が崩れるため、相続の処理において修正が必要になったというだけのことであった。

JRF2021/8/92163

また、simbdp2.py において、支配者の退職と後任に関してバグを取ったつもりでいたが、そこも検討し直した結果、無意味な修正であったことがわかった。この部分、「修正」後、1200期回しても前と同様のエラーが出ないことから「直った」と判断していたが、無意味な修正で直ってるはずもなく、単に偶然エラーが出なかっただけと思われる。しかし、エラーの再現性がない…かなり稀な起こり方をすると思われ、その条件がわかっていない。いつか、そのエラーが再び出ないことには修正しようがない感じ…。

JRF2021/8/92954

……。

……。

○ 2021-08-06T17:53:19Z

結婚などにより支配層の能力値が変わるべきだといった旨のことを以前書いたが、それを実現するために Dominator.adder というオブジェクト変数を作った。これをセットするときに、能力値の調整をランダムに行う。

妊娠し結婚していれば -1、妊娠し結婚していなければ -2、妊娠せず結婚していれば +1、妊娠せず結婚していなければ 0 の修正を受ける。+1 ごとに各能力値について 0 から 0.1 の範囲の一様乱数の値をプラスされる。

JRF2021/8/98481

……。

initialize_nation …国の初期化を変えた。前は、支配層を作ってから、国民を作っていたが、今は、国民を作ってから、そこからランダムに支配層を決めるようにしている。

JRF2021/8/91238

……。

Person.supporting と Person.supported あたりをかなり変えた、。カプセル化して、できるだけ Person.add_supporting()、 Person.remove_supported() を使うようにした。

バグに悩まされたが、わかってみれば、更新途中で Person.supporting が変わることでバグが生じているのにひっかかっていた。

JRF2021/8/94436

この変更により、どの場面をとっても扶養されている者が扶養しているような関係がなくなり扶養の木構造が生じなくなった。(make_support_consistent が check_support_consistent に変わった。)

ついでに、前は結婚時必ず男性が女性を扶養する形になっていたが、今は女性が支配層で男性より上の地位にある場合は、女性が男性を扶養する形になるようにした。

JRF2021/8/90219

……。

地震と水害の発生確率を 1/2 にした。これでもまだ多そうだが…。

JRF2021/8/95303

……。

あと、エラーから回復しやすいように乱数の種をセーブするようにしたのだが、ロードしても同じ乱数が必ずしも発生してない様子。何かがおかしいのだと思うがわからない。

JRF2021/8/95031

……。

以上の変更をした simbdp2.py を公開しておく。(バージョン 0.0.4)

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

JRF2021/8/97927

なお、test_of_matching_2.py と simbdp1.py の簡単なバグも取った。こちらも add_supporting や remove_supported を使うように変えようか迷っている。動きはするものの仕様にあわないというバグがあるようだというのはわかっているので、そうしたほうが良さそうであるが、逆に変なバグを混入しないか心配なので、とりあえずそこまでいじるのは次回以降としておく。

JRF2021/8/92046

……。

……。

○ 2021-08-08T08:10:32Z

相続するときに、被扶養者を普通は相続するが、そこに仮の人物(id が '' の者)が含まれていれば、それらは除かれるようにした。扶養の '' は最初の世代のみ考慮すれば十分だろうから。

JRF2021/8/94386

……。

test_of_matching_2.py と simbdp1.py について add_supporting や remove_supported や check_support_consistent を使うように変えた。

また、test_of_matching_2.py の経済を評価するところ(update_economy)は、12ヶ月目の期首に行っていたが、simbdp*.py と同じく期末に行うように変えた。

(test_of_matching_2.py はバージョン 0.0.20。simbdp1.py は バージョン 0.0.8。)

JRF2021/8/98342

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

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

JRF2021/8/99201

……。

test_of_domination_3.py が simbdp1.pickle でも動くようになった。前は、pickle のモジュールシステムに関する仕様が難しいと書いていたが、ちゃんとググると実に簡単にできるようなのでやった。simbdp1.pickle を使う場合はオプションに --pickle=simbdp1.pickle を指定すればよい。(バージョン 0.0.3)

JRF2021/8/98635

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

JRF2021/8/99323

……。

結婚相手・不倫相手を探すときに支配層であることを加味する。その効果は、資産をある程度持っている層と同等の層になるということである。結婚の場合は、王で上位 1 % と同じ、知事・閣僚で 5% と同じ、部下で 15% と同じとする。不倫の場合は、王で 5%、知事閣僚で 10%、部下で 30% と同じとする。

結婚・不倫以外で資産を参照する誕生・災害・養子等については、支配層であることはとりあえず加味しないことにした。

JRF2021/8/99259

……。

支配層の代替わり…後任指名が下位の者から取る場合、その下位の者は優秀であることが予想される。そこで、国民から取られた場合は +2、部下の指名で取られた場合は +1 の修正をするものとする。+1 ごとに各能力値について 0 から 0.1 の範囲の一様乱数の値をプラスされる。

JRF2021/8/94544

……。

以前、支配層は没落がありうる。…と書いていた。そのころは支配層はもっと数を多くするつもりでいた。そして底辺で没落が起こると考えていた。

しかし、今の実装だと、この少ない支配層のうち、没落するものが出るとは考えにくい。もし、経済的に厳しい者が支配層にいるとしても、それは一種の「個性」になると考えられる。また、経済的に優れた者を支配層に取り立てるというのも、この支配層の少なさではリアルでない気がする。

この点については、支配層がこのような仕様である限り、実装を見送りたい。

JRF2021/8/98935

……。

以上の軽微な変更をした simbdp2.py も公開しておく。(バージョン 0.0.5)

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

JRF2021/8/95707

……。

……。

○ 2021-08-09T03:26:10Z

ここで一段落かな…と思う。

simbdp2.py でやろうとしてた目標に、やや、思ったよりショボいものの、到達したように思う。

simbdp2.py の枠組でやるべきことはまだあるかもしれないが、それは今後、simbdp3.py について構想していく中で必要とあれば振り返る感じで、実装していけばいいと思う。

JRF2021/8/98423

前に述べたことがあるが、simbdp3.py (プロトタイプ 3 号) は、simbdp2.py (プロトタイプ 2 号) に僧と犯罪のモデルを入れたものとなる予定で、それが実装し終るのがこのプロジェクト…仏教の最適化プログラム…のとりあえずのゴールとなるだろう。

JRF2021/8/90689

« 前のひとこと | トップページ | 次のひとこと »