今回の質問の趣旨としては「何故このような仕様なのか」です。
p.244「初期設定だろうと,実行中だろうと,エージェントが生成されると,エージェント種ごとに,生成された順に0から順次,整数をIDに割り当てていきます。一度割り当てられたらシミュレーションが終了するまで変わりません。このように個々のエージェントに与えられる個別の番号をID(アイディー:Identityアイデンティティの略)と呼びます。DelAgt()を実行して,エージェントを消滅させても,番号がずれたりしません。このIDを利用して,モデルの中でエージェントを個体識別するというのが出発点です。」
実際にはエージェントを削除するとエージェントIDが小さい方へ詰められる。シミュレーション途中で変化する。
この現象自体は既知のものであり、旧掲示板でも言及されている (https://mas-auth.kke.co.jp/board/item/index.php?q=75)
当該現象は2体以上のエージェントルールに(変数firstID(integer)を追加した上で)以下のように記述すると観察できる。
Agt_Init{my.firstID = my.ID if my.ID==0 then killagt(my)end if}
Agt_Step{if my.firstID != my.ID then ExitSimulationMsg("IDが変更されました"&my.firstID&"→"&my.ID)end if}
mapに表示するなどの変数として扱い観察する分には、
my.UnqID = Cint(GetUniqueID(universe.market.man, my.ID))
のようにUniqueIDを変数に格納しておくことで解決しうる。(UnqIDは自分で設定する事)
尚、GetUniqueID()は言語仕様上は返り値をIntegerでとることになっているが、Agtと認識される。(バグ?)従ってCint()を挟む必要があり、非常に長く記述することになる。また、このことはエージェントがUniqueIDの数値で取っていることも意味しているので、単純に
my.UniqID = Cint(my)
と表記する事でも実現する。
然しながら、パラメータ情報画面など、どうしてもIDを用いなければならない事態があり不便である。
従って質問は以下の通りである
これはバグか
途中で仕様変更となった(バグではない)のであれば、その経緯。(IDか並列して二つある状態や、途中で変化するIDがデフォルトで変数として設定されており、尚且つエージェント自体を示す数値はuniqueIDが用いられているようになった経緯が謎である。)
バグであったとしてこれが修正される予定はあるか。
getuniqueIDの挙動は正常か
getuniqueIDの使いどころはどこか(先述した通り自身のUniqueIDを問い合わせるならagtを数値変換すれば十分であり簡潔である)
「パラメータ情報画面」のご利用ありがとうございます。
「パラメータ情報画面」は、マップ画面上を動くエージェントのパラメータ値をコンソール画面等に出力するのが面倒なので追加しました。
パラメータ情報画面で、エージェントを選択し、IDを指定する方法の他、
マップ画面上のエージェントを右クリックすることにより、特定のエージェントのパラメータ情報を表示することができます。(すでにご存知かもしれませんが)
今後、aritsocの機能追加を検討するときには、ご提示いただいた仕様についても検討したいと存じます。