Hélie, S. & Sun, R. (2010). Incubation, insight, and creative problem solving: A unified theory and a connectionist model. Psychological Review, 117, 994-1024. [pdf]

This page includes runnable code for the simulations included in this paper presented as Mathematica notebooks. In each notebook, all the cells must be run from top to bottom. Code particularities are explained as comments within each notebook [ (* This is a comment. *) ].

Mathematica notebooks can be read using the freeware Mathematica Player (http://www.wolfram.com/products/player/). Running the notebook requires Wolfram Research Mathematica, which can be purchased at http://www.wolfram.com/.

[Yaniv & Meyer (1987)] [Smith & Vela (1991)] [Durso et al. (1994)] [Schooler et al. (1993)]


Numerical example of a trial in the simulation of Smith & Vela (1991)

Step 1

Randomly generate 50 bipolar implicit representations (representing the 50 words in the list). Example representation:

Step 2

Pre-train the bottom-level network using the randomly generated bipolar representations (for parameter settings, see Table 4 in the main text). The matrix is a 500 x 500 square matrix. Here are example eigenvalues of the bottom-level weight matrix (after pre-training):

Step 3

Pre-train the F matrix linking the top- and bottom-level representations. After pre-training, each column fi contains a copy of one of the bipolar implicit representations. This 50 x 500 matrix is not represented here.

Step 4

Start a trial with random activation in the bottom level. Here is an example random activation:

Step 5

Iterate the random activation in the bottom level until convergence. In this case, 125 iterations were required (~44 seconds of psychological time). The final state of the bottom level is:

Step 6

Process the activation within the top level. Here, there are no top-level rules.

Step 7

Send the bottom-level activation to the top level. This yields the following activation for the 50 top-level nodes (each representing a word from the list). Here is a graphical representation of y[bottom-up]:

Step 8

Integrate the top-level and the bottom-up activation. Here, there is no top-level rule so y[integrated] = y[bottom-up]. (For parameter settings, see Table 5 in the main text.)

Step 9

Transform the integrated activation into a Boltzmann distribution. Here is a graphical representation of the P(y[integrated]):

Step 10

Verify that the Mode[P(y[integrated])] > y. Here, this inequality stands so a word is stochastically chosen and output to motor control (probably word #45).

Step 11

Go back to step 4 until there is no more time left.