С использованием JGAp (библиотека генетических алгоритмов) и дублированных хромосом
Я использовал библиотеку Java JGAp генетического алгоритма. и когда я оценил хромосомы, у меня было дублирование хромосом в пробе популяции:
evaluation 0
A B C
A D F
S F W
evaluation 1:
A B C
A D F
A D F
evaluation 2:
A D F
A D F
A D F
и конфигурации, которые я использовал:
conf.setKeepPopulationSizeConstant(true);
conf.setRandomGenerator(new StockRandomGenerator());
conf.verifyStateIsValid();
Есть ли какая-либо конфигурация, которую я могу использовать, чтобы получить уникальные хромосомы?
1 ответ
Решение
Вы можете использовать только NaturalSelectors, который не допускает дублирование. Пример кода:
conf.getNaturalSelectors(false).clear();
BestChromosomesSelector bcs = new BestChromosomesSelector(conf, 1.0d);
bcs.setDoubletteChromosomesAllowed(false);
conf.addNaturalSelector(bcs, false);
Обратите внимание, что только использование SwappingMutationOperator, скорее всего, лишит изобретательность населения. Тест, изменяющий пример MinimizingMakeChange из JGAP, но использующий только SwappingMutationOperator, показывает, что популяция быстро прекращает создавать индивидуумов, которых раньше не было.