Islands evolution in StrategyQuant X
In StrategyQuant 4 we introduced new genetic feature – islands evolution model. Islands evolution in genetic engine is a duplication of a real-world phenomenon to a programming world.
In the natural world, populations of organisms are usually separated by geography. Left to evolve in relative isolation over many generations, vastly different species could occur in different locations.
Of course, there is also migration of individuals from one island to another. There would be no no real difference between evolving 10 separate islands in parallel and running the same single-population evolution 10 times in a row.
So in practice the populations are not kept permanently isolated from each other. There is the occasional opportunity for individuals to migrate between islands.
There are several ways how the islands can be interconnected, in SQ we use a ring. All islands are organized in a circle, and there is always migration only from one neighboring island to another.
What are the benefits?
In an island model, the isolation of the separate populations often leads to different individuals originating on different islands. Migration brings these diverse individuals together occasionally to see what happens when they are combined.
Even if the immigrants are weak (in our case strategy that is not performing well), cross-over can result in offspring that are fitter than either of their parents. In this way, the introduction to the population of new genetic building blocks may result in evolutionary progress even if the immigrants themselves are not viable in the new population.
Islands evolution in StrategyQuant 4 simulates the natural process of evolution that is very important to achieve genetic variation, avoiding local optima and getting better and more diverse strategy candidates.
In addition to this, islands model allows us to better use resources of one PC and also potential of grid of multiple computers in the future.
How does it work
It cannot be simpler from user point of view. You just define how many islands you want to have in your engine:
The recommended value is 10 or more – there is no real upper limit, you will be limited only by memory and CPU of your computer.
Keep in mind that if you select 10 islands and a population size 50, it means that there will be 50 strategies evolved in each of the islands, so the whole population size will be 10 x 50 = 500 strategies.
You can influence migration characteristics in the Advanced genetics settings:
Here you can configure how often (in generations) the migration should be performed, and how many individuals (in percentage of island population) should be migrated.
We don’t want to migrate too often and too many individuals, it would destroy the diversity of the islands separated populations.
Migration once in every 5-10 generations, and migrating only 5-10% of population should be the optimal setting.
Internally, StrategyQuant constructs each island as an independent genetic engine, and handles migration of individuals between these engines.
Note that each island works independently, and so evolution in every island goes with its own speed. It is possible for one island to be on 10th generation, while another only on 6th.
All the recommendations given below are only recommendations. It is up to you to play and experiment with this new functionality and you can let us and others know what works best for you.