モデルの結果 (観察された創発的行動) から逆算して、このマクロな行動につながった個々のカメについてはどうなのか?
2 に答える
「マクロ レベルの動作が与えられた場合、エージェント [タートル] を制御するルールをどのように推測できますか?」それとも、「ソース コードを入手したとして、マクロ レベルの動作を生成するソースが何であるかをどのように把握するのですか?」と尋ねていますか?
多くの場合、最初の質問に答えるのは非常に困難です。提案はありません。
2番目に答えるのも難しい場合があります。
1 つの戦略は、さまざまな初期構成を試すか、エージェント [タートル] でさまざまなルールを試すことです。何を変更するかについて推測がない場合は、最初は任意の選択を行い、推測や漠然とした直感が得られるようになるまで続けます。次に、推測が正しいかどうかを調べる方法と、推測を改善できる方法でコードを変更します。この戦略は常に機能するとは限りません。
マクロ レベルの動作を生成する方法を考えてみると、マクロ レベルの動作を生成したい場合に役立つ場合があります。答えが何であるかはわからないかもしれませんが、これは上記の最初の質問に答えることに相当しますが、そうすると、前の戦略に使用できる推測につながるかもしれません。
デバッグ中にこれを行うのは、予期しないマクロの動作が発生することがあり、それが本物かエラーかを判断する必要があるためです。通常、私が行うことは、ランダム シードを設定してから、どのエージェントが動作に関与しているか、いつ (NetLogo のティック) が発生するかを調べることです。次に、モデルを再実行し、数ティック前に停止し、行動に関与することがわかっているエージェントを調べて、エージェントまたはその環境に何か異常があるかどうかを確認します。マクロの動作は通常、エージェント、環境、およびイベントの相互作用によって発生するため、それらがどのように組み合わさって動作を生み出すかを説明する前に、それらの要素が何であるかを判断しようとしています. それが完了したら、通常はコードをトレースして (print ステートメントを挿入し、関連するエージェントを調べます)、それがどのように発生したかを突き止めます。