"EdgeGenerationsList" (aka "ExpressionGenerations") yields the list of generation numbers (numbers of
predecessor layers) for each edge in "AllEventsEdgesList":
In[] := WolframModel[{{1, 2}, {1, 3}, {1, 4}} ->
{{2, 2}, {3, 2}, {3, 4}, {3, 5}},
{{1, 1}, {1, 1}, {1, 1}}, 5, "EdgeGenerationsList"]
Out[] = {0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5,
5, 5, 5, 5}"AllEventsGenerationsList" (aka "EventGenerations") gives the same for events. The generation of an event is
defined as the generation of edges it produces as output. Here edges of different generations are colored differently:
In[] := With[{
evolution = WolframModel[{{1, 2}, {1, 3}, {1, 4}} ->
{{2, 2}, {3, 2}, {3, 4}, {3, 5}},
{{1, 1}, {1, 1}, {1, 1}}, 5]},
MapThread[
HypergraphPlot[#, EdgeStyle -> #2] &, {evolution["StatesList"],
Replace[evolution[
"EdgeGenerationsList"][[#]] & /@ (evolution[
"StateEdgeIndicesAfterEvent", #] &) /@
Prepend[0] @ Accumulate @ evolution["GenerationEventsCountList"],
g_ :> ColorData["Rainbow"][g/5], {2}]}]]Event and expression generations correspond to layers in "LayeredCausalGraph"
and "ExpressionsEventsGraph":
In[] := WolframModel[{{1, 2}, {1, 3}, {1, 4}} ->
{{2, 2}, {3, 2}, {3, 4}, {3, 5}},
{{1, 1}, {1, 1}, {1, 1}}, 5, "AllEventsGenerationsList"]
Out[] = {1, 2, 3, 4, 5, 5}In[] := WolframModel[{{1, 2}, {1, 3}, {1, 4}} ->
{{2, 2}, {3, 2}, {3, 4}, {3, 5}},
{{1, 1}, {1, 1}, {1, 1}}, 5, "LayeredCausalGraph"]
