/* * * MAML TUTORIAL (Model 3.1) * For full description refer to * http://www.syslab.ceu.hu/maml/tutorial/ * * (c) 1998, CEU Systems Laboratory * */ @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 { @var: int row, distance; @sub: (void) newJumpOf: (int) r To: (int) d { if (d > distance) { row = r; distance = d; } } @probe: var "row", var "distance"; @extendAgent Competitor { @probe: var "row", var "distance"; @sub: (void) subscribe { [model newJumpOf: row To: distance]; } } @schedule cyclic (1) { 0: @forEach groupOfCompetitor subscribe; } @init: maxTimeSteps = 100; @buildProbes; @initModel; row = -1; distance = 0; [competitors[0] probe]; [model probe]; }