各エージェントには、プライベート ブール変数「Happy?」があります。[Happy?] でエージェントを数える方法 =真]?
リペーストで利用できる直接的な方法はありますか? または、すべてのエージェントを繰り返し処理して、個別に数えますか?
アップデート:
グローバルなスケジューリング方法を試しました: https://repast.github.io/docs/RepastReference/RepastReference.html#schedule-global
ContextBuilder で @ScheduledMethods を使用して以下のコードを配置すると、機能しません。
grid.moveTo(this_girl, group_x,group_y);
}
}
return context;
}
@ScheduledMethod(start = 1, interval = 1, shuffle=true)
public void step () {
Context<Object> context = ContextUtils.getContext(this);
Query<Object> query = new PropertyEquals<Object>(context, "happy", true);
int end_count = 0;
System.out.println(end_count);
for (Object o : query.query()) {
if (o instanceof Boy) {
end_count ++;
}
if (o instanceof Girl) {
end_count ++;
}
}
System.out.println(end_count);
if (end_count == 70) {
RunEnvironment.getInstance().endRun();
}
}
}
上記のコードをボーイエージェントアクションまたはガールエージェントアクションのいずれかに配置すると機能します。
@ScheduledMethod(start = 1, interval = 1,shuffle=true)
public void step() {
relocation();
update_happiness();
endRun();
}
public void endRun( ) {
Context<Object> context = ContextUtils.getContext(this);
Query<Object> query = new PropertyEquals<Object>(context, "happy", true);
int end_count = 0;
System.out.println(end_count);
for (Object o : query.query()) {
if (o instanceof Boy) {
end_count ++;
}
if (o instanceof Girl) {
end_count ++;
}
}
System.out.println(end_count);
if (end_count == 70) {
RunEnvironment.getInstance().endRun();
}
}