Creativity Research

Script for generate-and-explore demonstration

The Python script below provides a demonstration of generate and interpret.

This page has a link to it in a to-be-published journal paper explaining what it’s about (will be linked following publication).

For the time being, it is described as:


Consider a simple system that generates numbers (after Kelly and Gero 2015). The system has two variables: firstly n, a range of numbers with constraints; and p designates an operator, one of multiplication, division, addition or subtraction. The system has an initial state, which for the sake of example we can take  to be constrained by 5<n<95 and p=+ the operator for addition.

The system generates by choosing two values for the variable  within constraints and performing the operation  on them to produce an artefact (the resulting number). For example, the system chooses first 6 and then 72 and adds them to produce an artefact of 78. With this setup the system clearly has a bounded space that it is ‘searching’ through generation and given enough time it would eventually ‘discover’ all possible artefacts in the space, i.e. {10,11,12,…,189,190}.

This extremely simple proposal is representative of systems that have a clearly defined grammar and perform search through application of that grammar, i.e. an example of routine design.


Through additional rules, the system is able to explore. After producing an artefact, the system interprets what it has produced such that:

  • If the current artefact, along with the previous two artefacts, make up an arithmetic or geometric progression, then change the operator to the corresponding operator; and
  • If the numeric value used to create the arithmetic or geometric progression is outside of the constraint, extend the bounds of the constraint

The significance of this will be in the paper, but essentially it’s representative of the way that people undertake creative tasks. We have vast amounts of experience, but only access some of it at a time. This kind of generate-and-interpret movement is a suggestion for how we move around within our own experiences, stimulated by interpreting what it is that we’ve created: