# 10.1: Simulation of Systems with a Large Number of Variables

\( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

\( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

We are ﬁnally moving into the modeling and analysis of* complex systems*. The number of variables involved in a model will jump drastically from just a few to tens of thousands! What happens if you have so many dynamical components, and moreover, if those components interact with each other in nontrivial ways? This is the core question of complex systems. Key concepts of complex systems, such as emergence and self-organization, all stem from the fact that a system is made of a massive amount of interactive components, which allows us to study its properties at various scales and how those properties are linked across scales.

Modeling and simulating systems made of a large number of variables pose some practical challenges. First, we need to know how to specify the dynamical states of so many variables and their interaction pathways, and how those interactions affect the states of the variables over time. If you have empirical data for all of these aspects, lucky you— you could just use them to build a fairly detailed model (which might not be so useful without proper abstraction, by the way). However, such detailed information may not be readily available, and if that is the case, you have to come up with some reasonable assumptions to make your modeling effort feasible. The modeling frameworks we will discuss in the following chapters (cellular automata, continuous ﬁeld models, network models, and agent-based models) are, in some sense, the fruit that came out of researchers’ collective effort to come up with “best practices” in modeling complex systems, especially with the lack of detailed information available (at least at the time when those frameworks were developed). It is therefore important for you to know explicit/implicit model assumptions and limitations of each modeling framework and how you can go beyond them to develop your own modeling framework in both critical and creative ways.

Another practical challenge in complex systems modeling and simulation is visualization of the simulation results. For systems made of a few variables, there are straightforward ways to visualize their dynamical behaviors, such as simple time series plots, phase space plots, cobweb plots, etc., which we discussed in the earlier chapters. When the number of variables is far greater, however, the same approaches won’t work. You can’t discern thousands of time series plots, or you can’t draw a phase space of one thousand dimensions. A typical way to address this difﬁculty is to deﬁne and use a metric of some global characteristics of the system, such as the average state of the system, and then plot its behavior. This is a reasonable approach by all means, but it loses a lot of information about the system’s actual state.

An alternative approach is to visualize the system’s state at each time point in detail, and then *animate *it over time, so that you can see the behavior of the system without losing information about the details of its states. This approach is particularly effective if the simulation is *interactive*, i.e., if the simulation results are visualized on the ﬂy as you operate the simulator. In fact, most complex systems simulation tools (e.g., NetLogo, Repast) adopt such *interactive simulation* as their default mode of operation. It is a great way to explore the system’s behaviors and become “experienced” with various dynamics of complex systems.