1

講堂の避難シミュレーションを実施しています。テーブルに座る生徒と、クラス内でランダムに割り当てられた追加の生徒の 2 種類の生徒がいます。そこで、生徒を希望の数に割り当てるために2 つのスライダーを作成しました。スライダーには、extrastudentsおよびstandardstudentsという名前が付けられます。シミュレーションが開始したら、すべての生徒 (テーブルとエキストラの生徒の両方) が最も近い出口 (2 つの出口があります) に行くようにしたいので、座っている生徒だけにそれを実装しました:

ask standarstudents  [
ifelse pycor > 0
[ set target one-of nexits]
[ set target one-of sexits]
face target
]

Nexitsは北口です。Sexitsは南口です。

問題は、このエラーが発生し、先に進むことができることです:

ASK は、入力がエージェントまたはエージェントセットであると予期していましたが、代わりに 3 を取得しました。オブザーバーが ASK を実行中にエラーが発生しました。 (数値 3 は、ユーザーが選択したスライダーに由来します) ボタン 'setup' によって呼び出されたプロシージャ SETUP によって呼び出されました

org.nlogo.nvm.ArgumentTypeException: ASK は、入力がエージェントまたはエージェントセットであると予期していましたが、代わりに番号 3 を取得しました。

何か案は?

4

1 に答える 1

2

とという名前のスライダーがある場合、これら 2 つの変数は、生徒そのものではなく、必要な各種類の生徒の数を表す数値です。エラー メッセージにあるように、プリミティブは「誰に質問しているか」を表すエージェント セットで動作します。extrastudentsstandarstudentsask

実際に生徒を作成しましたか?インターフェイスにスライダーを配置しても、それ自体は何もしません。スライダーの名前を次のように変更し、次のようなコードを使用して母集団を初期化することをお勧めしnum-extrastudentsますnum-standarstudents

breed [ extrastudents extrastudent ]
breed [ standarstudents standarstudent ]

to setup
  create-standarstudents num-standarstudents
  create-extrastudents num-extrastudents
end

次に、投稿したコードが機能するのは、カメの品種extrastudentsであり、したがってエージェントセットであるためです。standarstudents

于 2013-03-03T15:57:00.653 に答える