人間関係を表現するモデルなどでは、エージェントが他のエージェントに対応する何らかの変数を持っておく処理は必ず必要になっていきます。
例えば10人のモデルであれば(対応させたい変数数+1)列9行の配列変数を持っておけば、ユニークIDとセットで持たせる元などが可能になります。
しかしこの手法は、killagt()やcreateagt()途中で人数が変わらない時に限ります。
配列変数の長さを途中で変えることが出来ない以上、人数がその長さよりも増えた場合エラーが起きてしまいます。簡単な解決策としては非常に行数を非常に大きな数にしておくこと(例えば1000等)や、記憶力に制限があるとみなして、一定人数以上のデータを持たないようにするようにする処理は想定出来ます。
しかしながら、美しくありません。前者は余計に処理が重くなりますし、エラーの危険性を完全になくすことは出来ていません。後者はアイデアとしては面白いですが、処理の都合上導入されるべきではないでしょう。
そこで質問内容は以下の通りです。
配列変数の長さを変えることは可能か。
不可能として、代替手段はあるか。
関係性を持つエージェント種を新たに設けるのが一番丸いと思います。
Agt_AとAgt_Bの二人の関係性を表すエージェントであれば、二人を示すIDを格納する変数と、AからBへの関係性を保持する変数群とBからAへの関係性を保持する変数群を定義し(一方向のみの関係を作りたければ、片方だけ作り、両方向の関係を設ける時に2つagtを作ることで実現させることは可能です。)、A・Bの関係性agtを纏めるagtsetに加えればいいでしょう。ABのIDから関係性agtを探す方法としてはABの関係性agtsetの共通項を見つければ容易に探し出すことが可能です。
エージェント数が増減しても関係性agtをcreate,killすればいいでしょう。