Tag Archives: complex systems simulation

CSS2016 Amsterdam

If the most important annual conference in complex systems simulation is anything to go by then researchers in humanities are slowly infiltrating the ranks of complexity scientists.

This year the CSS (Complex Systems Society) conference is taking place in Amsterdam between 19-22 September. It is structured a bit differently than traditional conferences, that is, it consists of two main parts:

  • Core sessions such as “Foundations of Complex Systems” or “Socio-ecological Systems”, which are held every year, and
  • Satellite sessions, usually focusing on smaller topics or subdisciplines, which are proposed independently and, therefore, change from one year to another.

Archaeology (and humanities in general) has been on and off the agenda since 2013 but usually this meant one dedicated session and perhaps a paper or two in the core sessions classified as social systems simulations. However, this year there seems to be a bit of an explosion (let’s call it ‘exponential growth’!) in the number of sessions led by folk who have interest in the past. These three are particularly relevant:

10. Complexity and the Human Past: Unleashing the Potential of Archaeology and Related Disciplines
Organizer: Dr. Sergi Lozano

26. Complexity History. Complexity for History and History for Complexity 
Organizer: Assoc Prof. Andrea Nanetti

27. The Anthropogenic Earth System: Modeling Social Systems, Landscapes, and Urban Dynamics as a Coupled Human+Climate System up to Planetary Scale
Organizer: Dr. John T. Murphy

In addition, there are a number of satellite sessions that, although not dealing specifically with past systems, may be of interest for anyone who deals with evolution, urban development, economic systems or networks and game theory.  Finally, the most excellent student conference on complex systems (SCCS) will run just prior to the main event, between 16-18 September.

To submit an abstract, get in touch with the session organiser (you can find their emails here). The official deadline is 10th July, but the organisers may have imposed a different schedule so get in your abstract soon. And see you all in Amsterdam!

Image above: http://www.ccs2016.org



French Wine: Solving Complex Problems with Simple Models

What approach do you use if you have only partial information but you want to learn  more about a subject? In a recent article, I confronted this very problem. Despite knowing quite a bit about Gaulish settlements and distributions of artifacts, we still know relatively little about the beginnings of the wine industry. We know it was a drink for the elite. We know that Etruscans showed up with wine, and later Greeks showed up with wine. But we don’t know why Etruscan wine all but disappears rapidly within a few years. Is this simple economics (Greek wine being cheaper)? Is this simply that Etruscan wine tasted worse? It’s a question and a conundrum; it simply doesn’t make sense that everyone in the region would swap from one wine type to another. Also, the ceramic vessels that were used to carry the wine—amphorae—those are what we find. They should last for a while, but they disappear. Greek wine takes over, Greek amphorae take over, and Etruscan wine and amphorae disappear.

This is a perfect question for agent based modeling. My approach uses a very simple model of preference, coupled with some simple economics, to look at how Gauls could be drivers of the economy. Through parameter testing I show that a complete transition between two types of wine could occur even when less than 100% of the consumers ‘prefer’ one type.

Most importantly in this model, the pattern oriented approach shows how agent-based modeling can be useful for examining a mystery, even when the amount of information available might be small.

Check the article out on the open source MDPI website.

The Conference on Complex Systems, Tempe, Arizona (28 Sept – 2 Oct)

This year the (European) Conference on Complex System is going global (by loosing the ‘E’) and moving to the Tempe, Arizona (28 Sept – 2 Oct). It is also the most archaeo/anthropo/history-filled edition yet. The satellite sessions include:

Complexity and Human Past: Unleashing the Potential of Archaeology and Related Disciplines

The Cultural Evolution of Technology: Evidence, Hypothesis and Theory

Evolution of Ancient Maya Society as a Complex System

Complexity History, Complexity for History and History for Complexity

Plus there is a good selection of social science focused sessions which should be of interest to archaeologists. Follow this link for more details. The abstract deadline is TODAY so get it in there asap.

Simulating Complexity at the SAA meetings!

Hello readers! I’m writing you from sunny San Francisco where we are gearing up for the SAAs. We have a Simulating Complexity session that is sure to be interesting. Find us Thursday afternoon at 1pm in the room Union Square 21. Here’s a teaser of the paper titles.

Opening Remarks–Mark Lake

A spatially explicit model of lithic raw material composition in archaeological assemblages–Phil Fisher and Luke Premo

Simulating Late Holocene landscape use and the distribution of stone artefacts in arid western New South Wales, Australia–Benjamin Davies

Testing the Variability Selection Hypothesis on Hominin Dispersals – a Multi-agent Model Approach–Iza Romanowska and Seth Bullock

Climatic variability and hominin dispersal: the accumulated plasticity hypothesis–Matt Grove

Humanizing wave of advance dispersal models–Colin Wren

Hierarchy and Tribute Flow in the American Southwest–Stefani Crabtree, Kyle Bocinsky, Tim Kohler

Changing Channels: Simulating Irrigation Management on Evolving Canal Systems for the Prehistoric Hohokam of Central Arizona–John Murphy, Louise Purdue, Maurits Ertsen

Complexity in space and time: spatio-temporal variability and scale in simulations of social-ecological systems–Isaac Ullah & Michael Barton

Modeling Behavior in Digital Places Using Low-Level Perceptual Cues–Rachel Opitz

Reconstructing Large-Area Ancient Transportation Networks to Support Complexity Research–Devin White

Many Roman Bazaars: exploring the need for simple computational models in the study of the Roman economy–Shawn Graham & Tom Brughmans

Empirical Validation and Model Selection in Archaeological Simulation–Enrico Crema

Discuassant and closing remarks–Tim Kohler

Special Interest Group – Complex Systems Simulation

We have proposed the creation of a Special Interest Group in Complex Systems Simulation under the auspices of the CAA (Computing Applications and Quantitative Methods in Archaeology). The proposal has been accepted for consideration by the CAA Steering Committee and will be voted on at the next Annual General Meeting during the CAA conference in Siena. The aim of the group is to provide a platform for present and future researchers in the domain of complex system simulation. In particular we will strive to:

* provide continuity to the sessions and workshops concerned with computational modelling at the annual CAA conference and beyond,
* organise, coordinate and inform all interested members of other events related to complexity science and simulation,
* organise events aimed at training future modellers and the general archaeological audience,
* promote good practice in computational modelling,
* in the long term, bring simulation and other complexity science methods into mainstream archaeological practice.

These points, as well as further logistical details of the day-to-day activities of the Special Interest Group (including its steering committee) will be discussed at a roundtable meeting at the CAA 2015 in Siena.

In the meantime, if you are interested in participating in the roundtable, would like to be added to the mailing list, think your research group/independently organised event/blog etc may benefit from association with the group or simply would like to keep in touch, let us know! You can comment under this post or just drop me an email: i.romanowska @ soton.ac.uk ! 

Starting with Python

No matter if you are an experienced NetLogo coder or have just started with modelling, learning how to code in a scripting language is likely to help you at some point when building a simulation. We have already discussed at length the pros and cons of using NetLogo versus other programming languages, but this is not a marriage, you can actually use both! There are certain aspects in which NetLogo beats any other platform (simplicity, fast development of models and many more), while in some situations it is just so much easier to use simple scripts (dealing with GIS, batch editing of files etc). Therefore, we’ve put together a quick guide on how to start with Python pointing out all the useful resources out there.

How to instal Python

It will take time, a lot of effort and nerves to install Python from scratch. Instead, go for one of the scientific distributions:

Anaconda is a free distribution containing all the useful packages, You can get it from here, and then simply follow the installation instructions here.

Enthought Canopy comes free for academic users. You can get it from here and there is a large training suite attached to it (https://training.enthought.com/courses).

The very first steps

There’s a beginner Python Coursera module starting very soon: https://www.coursera.org/course/pythonlearn but if you missed it, don’t worry, they repeat regularly.

Source: http://www.greenteapress.com/thinkpython/think_python_comp2.medium.png

If you prefer to work with written text, go for ‘Think Python‘ – probably the best programming textbook ever created. You can get the pdf for free, here. It is likely to take a week of full time work to get through the book and do all the exercises but it is worth doing it in one go. It’s unbelievable how quickly one forgets  stuff and then gets lost in further chapters. There are loads of other books that can help you to learn Python: with the Head First Python you could teach a monkey to code but I found it so slow it was actually frustrating.

Source: http://www.cengage.com/covers/imageServlet?epi=1200064128513708027464865671616351030

Alternatively, Python Programming for the absolute beginner is a fun one, as you learn to code by building computer games (the downside is I spent way too much time playing them). Finally, if you need some more practice, especially in more heavy-weight scientific computing I recommend doing some of the exercises from this course, and checking out Hans Fangohr’s textbook. There are many more beginner’s resources, you will find a comprehensive list of them here.

It is common that one gets stuck with a piece of code that just do not want to work. For a quick reference, the Python documentation is actually pretty clearly written and has examples.  Finally, StackOverflow is where you find help in more difficult situations. It’s a question-and-answer forum, but before you actually ask a question, check first if someone hasn’t done it already (in about 99% of cases they did). There is no shame in googling ‘how to index an array in python’, everyone does it and it saves a lot of time.

How to get from the for-loop into agents

There is a gigantic conceptual chasm every modeller needs to jump over: going from the simple to the complex. Once you learnt the basics, such as the for-loops, list comprehension, reading and writing files etc. it is hard to imagine how a complex simulation can be built from such simple blocks.

Source: http://www.greenteapress.com/compmod/think_complexity_cover.png

If you’re feeling suicidal you could try to build one from scratch. However,  there are easier ways. To start with, the fantastic ‘Think Python’ has a sequel! It’s called ‘Think Complexity’ and, again, you can get the pdf for free, here. This is a great resource, giving you a thorough tour of complexity science applications and the exercises will give you enough coding experience to build your own models.

The second way is to build up on already existing models (btw, this is not cheating, this is how most of computer science works).  There is a fantastic library of simulations written in Python  called PYCX (Python-based CompleX systems simulations). It contains sample codes of complex systems simulations written in plain Python. Similarly the OpenABM repository has at least some models written in Python.

And once you see it can be done, there’s nothing there to stop you!

Going further – Python productivity tools

There are several tools which make working in Python much easier (they all come with the  Anaconda and Enthought distributions).

Source: http://matplotlib.org/mpl_examples/api/logo2.hires.png

Visualisations: Matplotlib is the standard Python library for graphs. I am yet to find its limits and it is surprisingly easy to use. Another useful resource is the colour brewer.  It’s a simple website that gives you different colour palettes  to represent different type of data (in hex, rgb and cmyk so ready to be plugged into your visualisations straight away). It can save you a lot of time otherwise wasted on trying to decide if the orange goes ok with the blue…

The Debugger: The generic python debugger is called ‘pdb’ and you can find a great tutorial on how to use it here. I personally prefer the ipdb debugger, if only because it actually prints stuff in colour (you appreciate it after a few hours of staring at the code); it works exactly the same as the pdb debugger.

The IPython Notebook: The IPython notebook is a fantastic platform for developing code interactively and then sharing it with other people (you can find the official tutorial here). Its merits may not be immediately obvious but after a while there’s almost no coming back.

Sumatra: Sooner or later everyone experiences the problem of ‘which version of the code produced the results???‘. Thankfully there is a solution to it and it’s called Sumatra. It automatically tracks different versions of the code and links the output files to them.

Data Analysis: You can do data analysis straight in Python but there are tools that make it easier.

Source: http://pandas.pydata.org/_static/pandas_logo.png

I haven’t actually used Pandas myself yet, but it’s the talk of the town at the moment so probably worth checking out.

GIS: Python is the language of choice for GIS, hence the simple integration. If you are using ESRI ArcMap, create your algorithm in the model builder, go to -> export -> to python (see a simple tutorial here, and a more comprehensive one on how to use model builder and python here). You can do pretty much the same thing in QGIS (check out their tutorial, here). On top of that, you can use Python straight from the console (see a tutorial here).