What is the purpose of the island migration system? Each island is supposed to be given some "time" (generations) to come up with its own individual solution and then these solutions should be mixed together but if the migrant lands on an island that is at a low generation then the landed island didn't have time to come up with a solution yet so defeats the purpose of the island/migration system. Landing on an island at too high of a generation # can be inefficient too because then the solutions don't have enough time left to mix together before the evo restart which again starts to defeat the purpose. We may as well have one big pool instead of islands if you aren't going to respect this process.
Basic island/migration GA experiments are based on a system of islands that all progress through evolution at the same time (in the context of generations or real time) retaining island individuality for a certain controlled number of generations. It is nice for CPU efficiency that you made the islands capable of running separate generation number progression avoiding any "island downtime" by restarting a single island when it's done and allowing other islands to continue through their higher generations separately BUT migrations across islands (based on generation numbers) becomes not so simple. The migrants are also jumping back and forth through generations, essentially "time traveling randomly back and forth" breaking the individuality of their neighboring islands at uncontrolled unwanted generation numbers.
Should the immigrant wait in a temporary queue for the target island to be completed the same generation number? That way if for example we have set 20 max generation and migration is set to every 14th generation, we can know that one gene migration lands on the neighboring island on start of generatio#15 and therefore could not migrate again and also could not live longer than the 20 generations max we set. Yes I think this would be best way to get migration functioning as intended.
Status changed from New to Refused
Islands run independently of each other, they have different evolution speeds because of random starting points. I don't see anything wrong accepting migrants as they do it now, controlling it accordign to your descrioption would not bring any new quality to the process.
Attachment Screenshot 209.png added
Attachment Screenshot 218.png added
Attachment Screenshot 217.png added
Attachment Screenshot 216.png added
Attachment Screenshot 215.png added
Attachment Screenshot 214.png added
Attachment Screenshot 213.png added
Attachment Screenshot 212.png added
Subject changed from dev 3 potential island migration loop and or genes outliving the maximum number of generations to dev 3 infinite island migration loop possible and genes living forever
With my suggestion the migration would have the exact same effect as other gen algos where all islands are advancing together. I was surprised that it was not originally implemented this way. Each island is supposed to come up with its own solution and then these solutions should be mixed together but if the migrant lands on an island at a low generation then the landed island didn't have time to come up with a solution yet so defeats the purpose of migration.
Status changed from Refused to Fixed
I still think it is an edge case, but it is not too much work to fix it.
What I did - migrated strategies will be first accepted by the island only if its generation reaches the migration generation.
This should give island enough time to evolve.