244
X-Machines for Agent-Based Modeling: FLAME Perspectives
==================
std.ABS(int;):::ENTER
==================
std.ABS(int;):::EXIT1
x == return
==================
std.ABS(int;):::EXIT2
return == - x
==================
std.ABS(int;):::EXIT
x == orig(x)
x <= return
==================
The Daikon output being able to produce overall rules such as x will always be
between certain values or how it relates to other variables in the code. Parsing
through these files can again show how the variables will change during the
simulations.
All of these testing methods do not deduce the causal factors for why ‘bad’
code sometimes goes undetected. The behavior in emergent systems are based
on internal memory variables, and in some cases, variable bounds detected
can help determine if certain variables behave wrongly in the simulation. For
example, economic models, where wages always have to be above the minimum
wage, can be parsed in multiple simulation results to see if this rule is violated
by any one agent in the simulation. But these methods often carry the added
complexity of extra code, processing time and difficulty in determining which
part of the code is causing the values to behave in wrong manners.
8.4 Testing Simulation Durations
In addition to testing the outputs, from an HPC point of view, computer
scientists are interested in studying the simulation time of these models to help
find code bottlenecks and make it quicker to simulate. Figure 8.4 shows two
models, the epithelium and sugarscape model running with multiple settings.
The epithelium model was run based on round-robin and geometric partitioning (Figure 8.4(a)) on different numbers of nodes. The results showed
that round-robin partitioning performed better than geometric partitioning,
which only performed well up to 16 nodes. Increasing the nodes to 32 resulted
in the agents being too far away causing message communication overhead to
increase and the simulation to slow down.
In Figure 8.4(b), the experiment involved 21,020 agents with 50 citizens,
1000 sugars and an Averager agent, which were multiplied by 20 scenes. The
Précédent

- 273/329

Suivant