Model
An ecosystem to be studied is first modelled: an abstraction of it is constructed, which is suitable for analysis, and allows drawing conclusions about the ecosystem itself.
In ecco
models are discrete, that is, built upon variables ranging on discrete finite sets of values.
These variables are completed with actions that define how some variables can be updated depending on conditions on some other (or same) variables.
Actions also define how each variable has an influence on others, this allows to build two kinds of influence graphs: ecosystemic graph and ecosystemic hypergraph.
Variables
The variables in ecco
are discrete: each variable is ranging on a finite set of values, often called its domain.
The EDEN framework insists on the fact that variables must represent tangible objects, for instance biotic or abiotic components, populations, etc. But variables should not be used to represent processes which are meant to be modelled by actions.
A state of a model is a valuation of its variables.
Since a model has finitely many variables and every variable has a finite domain, every model can have only a finite set of states.
But this number may be huge (this is the product of the sizes of the domains).
Usually, not every possible state needs to be constructed, but it is good to remember that discrete models are prone to combinatorial explosion, which ecco
fights using dedicated techniques, but cannot beat completely.
Actions
An action is defined by a set of conditions on some variables, and by a set of assignments to other (or the same) variables. From a state where the variables satisfy the conditions, it is possible to fire an action, which yields a new state built from the current one by applying the assignments defined by the fired action. However, if the new state is the same as the current one, firing is not possible. This move from one state to another is called a transition.
The EDEN framework does not allow so-called side-loop (transitions from one state to itself). Instead, it considers that every transition must correspond to a change in the ecosystem.
Ecosystemic graph and hypergraph
Every action defines an influence of the variables in its condition towards the variables in its assignments.
The influences defined by all the actions can be depicted as a graph whose nodes are the variables and whose edges are the influences: for every action \(a\), for every pair of variable \(x \neq y\) such that \(x\) appears as a condition of \(a\) and \(y\) is assigned by \(a\), then there is an edge \(x \to y\).
This graph is called the ecosystemic graph and can be automatically drawn by ecco
.
The ecosystemic graph shows which variable influences which other, but it hides how groups of variables may influence other groups.
For instance, if in every action always both \(x\) and \(y\) are conditions together to assign another variable \(z\), then the ecosystemic graphs shows two influences \(x \to z\) and \(y \to z\), but it hides the relation that exists between \(x\) and \(y\).
To see it, one must draw the ecosystemic hypergraph that links together sets of actions through hyperedges (that is, edges from a set of nodes towards another set of nodes).
This hypergraph is obtained from the actions as follows: for every action \(a\), we draw a hyperedge from the set of actions involved in the condition of \(a\) towards the set of actions assigned by \(a\).
Usually, this is depicted as a graph using two kinds of nodes, for instance ecco
draws round-shaped nodes for variables and square-shaped nodes for actions.
For example, an action \(a\) that defined a hyperedge \(\{x, y\} \to \{z\}\) as considered above can be rendered as three (simple) edges \(x \to a\), \(y \to a\), and \(a \to z\).
Ecosystemic hypergraphs represented this way can be automatically drawn by ecco
as well.
Modelling languages
The concrete input of a model is made using a modelling language, with a syntax (how the model is written) and a semantics (how this defines states and actions, and how exactly these actions are fired).
ecco
is designed to allow for multiple input languages, but mainly one is used: the language of reaction rules (RR).
Other modelling languages exist, but they are so far experimental and not publicly released.
The RR language has Boolean variables and simple actions with “and” conditions, for instance A+, B+ >> C-
defined an RR action that reads as “if A
is on and B
is on, then C
may be set to off”.
Moreover, RR has two kinds of actions: rules and constraints.
Both work exactly the same way, but constraints have a higher priority: if a state allows the firing of both rules and constraints, only the constraints can be actually executed (they take the priority).
RR is also equipped with a Petri nets semantics that enables for specific analysis based on Petri nets unfolding. Moreover, the Petri net semantics of an RR model can be rendered on the ecosystemic hypergraph which makes it completely formal.
State-Space
Starting from a set of initial states, firing actions defines a set of reachable states that form a state-space: states linked by transitions. Such a state-space can be explicitly represented as a graph \((S,T)\) whose nodes are the reachable states in \(S\) and whose edges are the transitions in \(T\). However, due to combinatorial explosion, such a graph is usually too big to be examined (more than 100 states is already very hard to read), drawn (a graph with thousands of nodes is computationally too hard to layout), or even constructed (millions of nodes may exhaust the memory).
To fight combinatorial explosion, ecco
uses a symbolic representation of the state-spaces where potentially huge sets of states are encoded as decision diagrams.
Doing so, we lose the information about the individual states and the transitions that links them, but we are able to compute state-spaces with billions of states.
Component graph
Because symbolic state-space are opaque structures with no direct information about the transitions, ecco
offers an hybrid approach through component graphs.
These are graphs whose nodes are sets of states (called components), represented symbolically, that are linked by the transitions allowing to reach one component from another.
The component are pairwise disjoint and form a partition of the reachable states.
ecco
allows to build a component graph from a model and to explore the dynamics of the system by splitting or merging components based on some properties.
This yields an interactive and incremental exploration method that guaranties that the readability is preserved at every step.
Moreover, component graphs can be easily interacted with, by changing how components or transitions are displayed or by examining them.