C++ code generator for queuing models

PSM++ Simulation System

The author

Some free articles

Fuid dynamics simulation

Simulation Encyclopedia

Buy the program. Only US$ 35

Unzip it to a new directory on C:, then execute SimBall2.exe


Version 2

System Dynamics Simulation

Applications in business dynamics, ecology, feedback systems, general purpose dynamic modeling

Version 2. New features: Simplified function definition procedure. In the old version functions were pre-defined, so the user had to use one of the function from certain function set. In the new version, the function is typed as an arithmetic expression. New block type was added; the third order inertial block, that can be used as a flow delay (something like a queue). This complements the pure delay block, available in both versions. 

     SimBall2 is a new tool for modeling and simulation of dynamic systems. The System Dynamics (SD) approach is implemented. Recall that this approach  reflects rather global and continuous model changes. The  objects and people in a system interact through "feedback" loops, where a change in one variable affects other variables over time, which in turn affects the original variable, and so on.

System dynamics is a computer-aided approach to policy analysis and design. With origins in servomechanisms engineering and management, the approach uses a perspective based on information feedback and mutual or recursive causality to understand the dynamics of complex physical, biological, and social systems.

What SD attempts to do is understand the basic structure of a system, and thus understand the behavior it can produce. Many of these systems and problems which are analyzed can be built as models on a computer.

  The SD fans claim that SD takes advantage of the fact that a computer model can be of much greater complexity and carry out more simultaneous calculations than can the mental model of the human mind. I do not agree with this, obviously exaggerated and false opinion. However, the SD models can be useful to rapidly show how the real system could behave and to check what can happen if something in the model is changed.

Over the past three decades SD has been applied broadly in such areas as environmental change, economic development, social unrest, urban decay, psychology and physiology.

To use SimBall2 you need not be neither a programmer nor a professional simulationist. What you must to do is to understand how the system you want to simulate works. This means that you must have an idea about the general system structure and about a possible interactions between the system components. The modeling process is very simple. The model contains a number of levels and flows. A level represents something that may accumulate, like a tank with water. Any flow directed to the level (represented as a box on the screen) increases the level, and the flow going out of the level decreases the level. Mathematically, the level value is value is equal to the integral of the sum of all flows (outgoing flows with negative sign). Practically, a level can represent the amount of capital in your company, the amount of working force, the number of members in a population etc.

The flows must be controlled by certain signals, that, in turn may be the level values or some algebraic functions of one or more levels. This dependence is show as a set of functions (circles on the screen) and links (directed connection lines). The following figure shows an example of a SimBall2 screen. This is a typical prey-predator model with two populations: rabbits and wolves.

In the above model, the rabbits reproduce themselves and die (the two flows of the rabbits block). Both reproduction and natural deaths rates depend on the number of rabbits (the value of the rabbits level). However, the death rate is also affected by the number of wolves, through the function named Block7. This function is equal to the product of the number of rabbits and the number of wolves with a constant coefficient, which represents the probability that a wolf finds a rabbit and eats it. A similar function, with other coefficient, affects the wolves reproduction rate (they reproduce faster if they have more food). Such models are simulated using a known Lotka-Volterra differential equations. Our model does the same, without any equations visible to the user. Below you can see a typical result screen of SimBall2.

Curve no.1 shows the number of rabbits, and the curve 2 is the number of wolves. You can see a typical non-linear oscillations of the two levels, as occurs in ecological systems.


System Dynamics is useful in  modeling business dynamics. The following figure shows a simple model of a factory.

Without discussing the details, the interactions of this factory model are as follows. There are two levels we are modeling: inventory and profit. The profit level is the accumulated profit, and its rate depends on the income and on the production cost. The production cost depends on the production rate. Income is the result of the demand (we assume that all the demand is being satisfied) and on the price of the product. The demand is a function of a seasonal demand and of a random factor that introduce a random fluctuations. The profit level influences positively the production rate. The product price is a fixed price that is being modified by the level of inventory and profit. In this model it is assumed that if the inventory is high, the company lowers the product price. Also the accumulated profit influence the price. It is even possible that when the profit and the inventory are high, the price may be lower than the production cost (a "dumping" applied by the company). On the plots we can see the behavior of the model variables. The unit price (curve 5) is not zero. It has a variable value, but cannot be seen on this plot, which is generated with a common scale for all curves.

SimBall2 offers much more features that will are shown here. Among others, there is a possibility of introducing external random signals. This results in random model trajectories. The simulations can be automatically repeated, and the results stored on disk. If so, a post-mortem statistical analysis is performed than results in the variance, max and min values and confidence intervals plotted as functions of time. Few simulation packages offer results of such type.

Click here to download the demo version. Unzip the demo files to a new directory on your hard disk, enter the directory and execute SimBall2.exe.


For more information contact:

Stanislaw Raczynski
P.O.Box 22-783
14000 Mexico D.F.Mexico
E-mail :

Visit the PASION-PSM++ home page: