ECAL session notes: Open-Ended Simulations

As before, what follow is a very slightly cleaned up version of the notes I took during the third ISAL summer school session at ECAL 2017. Also as before, note that this is very rough, made while I was reviewing them tonight. Apologies for any typos or other mistakes.

Unfortunately I had some laptop issues toward the latter part of the talk and ended up taking notes by hand for part of it, which meant missing out some partial implementation examples that were presented towards the second half. My hand-written notes were sort of vague and barely legible in general…So these notes are more on the presented conepts as I understood them towards the first part of the talk.

Open-Ended Simulations

Susan Stepney, University of York

High level goal: start off with, perhaps, a 2D critter that becomes 3 dimentional, then poly-nuclear, then glows in the dark, then critters that walk, then birds that sing, etc etc

What is open-endedness?

“The continual production of novelty.”

What is novelty? The speaker presents the following introductory concepts, guided by examples, before continuing with a potential method [as you can probably see as soon as you start reading the examples the first thing that tends to come to mind is OOP]

Instances, Models, Meta-Models

Example 1: maps

“All models are wrong, some models are useful.”

With maps there tends to be only one instance. Eg, there is only one Sweden.

Example 2: ordinary differential equations for chemical reactions.

Models can have parameters for different instances.

Example 3: simulations

Instances, Models, Meta-Models:




Maps nicely onto object oriented style implementations

DEFINITION of novelty

DEFINITION of open-ended system

An open ended system has the ability to continually produce innovative or emergent novelties;

Object oriented open-endedness

Instances can be compared to instantiated objects, models to classes, meta-models to meta-classes/interfaces.

Variation can be linked back to the creation of new objects, innovation to creation of new classes, emergence to creation of new meta-classes. Traditional OO simulations cannot even in principle exhibit open-endedness. Fixed code: no new classes or meta-classes.

Engineering vs scientific models

We see flocking in a boids system. Speaker said that “flocking” was an example of emergence - the emegence of an aggregate.

Engineering model:

Scientific models:

Engineering: top down; science: bottom up

Closing the loop

We need to close the loop and make a jump between the observations we are able to make at simulation runtime and the implementation of the new concepts we observe (ie new models and meta-models)

“The whole is other than the sum of its parts” - Kurt Koffka

If there is something special about something being an organism, it would be nice if our code could capture it/the concept. We want the simulation to close the loop: modify the engineering side based on the scientific side. [to me this sort of seems like this mostly captures the novelty that we already exhibit once we exhibit it…which is nice, but isn’t the most important thing the ability to generate that novelty at runtime in the first place? How we then model it back into our code seems like a side-question after that first monumental step, one that we haven’t fully figured out how to implement yet in the first place? Is this trying to solve a problem we don’t have yet?]

Steps to close the loop

  1. Novelty is recognized outside of the simulation (eg maybe by a separate observer process)
  2. Novelty is anticipated, using hand-coded rules to recognize and report it once it appears
  3. Code is modified to capture novelty as a component of the simulation


  1. Novelty is emergently recognized by the simulator; new code is generated by the simulator to capture the recognition
  2. Novelty is emergently captured by the simulator; new shortcut code is generated by the simulator to capture the specific emergence explicitly.

We want the system to recognize new things. Eg an agent recognizes a flock, and so the system is modified.

One way to do this may be by having two programs: One simulation with concrete models, and one “generator” that knows how to produce new classes based on output from the simulation.

Steps to Open ended systems

“Don’t just build a classical object oriented system and think you’re going to find open-endedness, it is more complicated than that.”

© - 2021 · Liza Shulyayeva ·