@model m3 { @agent Competitor { @var: int row, distance; @sub: (void) jump { distance += [uniformIntRand getIntegerWithMin: 1 withMax: 3]; } } @var: [] Competitor competitors; @schedule cyclic (1) { 0: @forEach groupOfCompetitor jump; } @init: @create [10:i] Competitor competitors { competitors[i] -> row = i; competitors[i] -> distance = 0; } } @observe m3 { @extendAgent Competitor { @probe: var "row", var "distance"; } @agent FrontLiner { @var private: int row, distance; @sub static: (id) create { FrontLiner * frontLiner = [super create]; frontLiner->row = -1; frontLiner->distance = 0; return frontLiner; } @sub: (void) newJumpOf: (int) row To: (int) distance { if (distance > self->distance) { self->row = row; self->distance = distance; } } @probe: var "row", var "distance"; } @var: FrontLiner frontLiner; @init: maxTimeSteps = 100; @buildProbes; @initModel; @create FrontLiner frontLiner; [competitors[0] probe]; [frontLiner probe]; }