Skip to main content

Agricultural Markets Simulator

Overview

Challenge: Build out and document an economic simulation system for a European University... then move it to a modern web UI
Solution: Reverse engineered the existing code and documented it for publication, then built new functionality for the simulation and the user interface
Technologies: Java + Swing, then Quarkus, React and Plotly

Produce and Consume

The system allows the simulation of agricultural markets used in a research program of a European university supported bythe Deutsche Forschungsgemeinschaft. Agents, producers and consumers interact on the market. Their behaviours can be adjusted and the overall market behaviour observed. Shocks can be introduced to analyse the impact of extrinsic and intrisic factor changes.

Simulation systems that can be actually used in a research context are fairly complex, in particular, repeatability and randomness need to be reconciled: the system must exhibit random behaviours (within limits) by the agents, but the overall experiment must be repeatable by researchers.

As such, the system must produce detailed logs of states and transitions so that the outcomes can be both analysed and verified.

Let's Make It More Complex - and also Nicer

Swing is no longer a great user interface framework (if it ever was) and the limitations, both in terms of user experience and portability, are showing. The solution was to transition the codebase to a web interface with modern React and Plotly components that make it both easier and a lot more pleasing to use...

And as markets always get more complex, the agent behaviours as well as the market structure have been expanded to add new kinds of agents and decision functions as well as the ability to simulate multiple markets connected by agents operating on more than one market, with their own set of behaviours and decision functions.

 
On UpWork?
UpWork
The easy platform for running projects of any size.
Something special?
LinkedIn
To discuss tailored projects, please connect on LinkedIn.