1

各エージェントには、プライベート ブール変数「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();
        }
    }
4

1 に答える 1