4.3. エージェントの構築

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のリストにこのエージェントを追加し、理想温度や初期位置といったいくつかのパラメータをそれにセットします。