This page presents a Javascript program that solves the N-Queens problem using a very simple Genetic Algorithm.
Genetic Algorithm pseudocode:
1) Create random individuals and compute fitness value.
2) For each generation:
2.1) Catastrophe? (first 10% of generations are catastrophe-free; catastrophe probability: 5%)
2.1.1) Remove all individuals.
2.1.2) Create random individuals and compute fitness value.
2.2) Keep top 10% individuals (based on fitness) and remove the others.
2.3) Create new individuals by mutating the remaning (swap Queen positions).
2.4) For each individual:
2.4.1) Compute new fitness value based on the number of collisions between Queens.
2.4.2) Fitness value is zero? (no collisions)
2.4.2.1) Solution Found.
Each individual is a group of (x,y) coordinates that represent the position of each Queen on the board. Individual 1324 means that the Queens positions are (1,1) (2,3) (3,2) (4,4).
1 2 3 4 (x) 1 Q . . . 2 . . Q . 3 . Q . . 4 . . . Q (y)
Run
Results
Plot
Y Axis: score (lower is better), X Axis: Generation Number.
Solutions
Source Code
All the source code is online here.