Heatbugの定義ができたら、model swarmはこれらを作成しなければなりません。以下のコードの断片はHeatbugModelSwarmのbuildObjectsメソッドより抜粋しました。
// heatbugの群れを作成するループ。 for (i = 0; i < numBugs; i++) { Heatbug * hbug; int idealTemp, outputHeat; // 指定された範囲(モデルパラメータ)から、 // ランダムな理想温度と出力熱を選択。 idealTemp = [uniformRandom rMin: minIdealTemp Max: maxIdealTemp]; outputHeat = [uniformRandom rMin: minOutputHeat Max: maxOutputHeat]; // heatbugを作成し、作成時刻変数をセット。 hbug = [Heatbug createBegin: [self getZone]]; [hbug setWorld: world Heat: heat]; hbug = [hbug createEnd]; // リストの最後にそのbugを追加。 [heatbugList addLast: hbug]; // 残りのheatbugの状態を初期化。 [hbug setIdealTemperature: idealTemp]; [hbug setOutputHeat: outputHeat]; [hbug setX: [uniformRandom rMax: worldXSize] // ランダムな位置 Y: [uniformRandom rMax: worldYSize]]; } |
このコードの詳細を学習するには、そのライブラリのドキュメンテーションとheatbugデモアプリケーションそのものを見るのが一番です。まず、理想温度と新しいHeatbugの出力熱に対して、それぞれ乱数を生成することが不可欠です。次にcreateBeginでheatbug自体を作成し、世界と熱に必要なパラメータを埋めます。それらがセットされればHeatbugにcreateEndを送ることができ、作成は完了です。作成終了後は、モデルのHeatbugのリストにこのエージェントを追加し、理想温度や初期位置といったいくつかのパラメータをそれにセットします。