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