Моя Программа Генетического Алгоритма не сходится выше определенного уровня пригодности

Я пытаюсь написать программу генетического алгоритма для инверсии палео-напряжения, т.е. из заданного набора данных я хочу рассчитать тензор напряжения (проблема минимизации).

Я создал синтетический набор данных для тестирования, но он не дает желаемых результатов.

Мое значение пригодности очень быстро сходится в нескольких начальных итерациях, но через некоторое время оно выравнивается и не дает пригодности ниже этого значения.

Желаемая физическая форма ~ 10 ^ (-6) Фитнес, который я получаю ~ 0,015

Также я заметил, что совокупность данных, с которыми я работаю (размер совокупности = 20), большинство из них принимают одно и то же значение после нескольких сотен итераций, т.е. около 15 значений из 20 одинаковы, так что я думаю, пересечение перестанет давать новое потомство.

Логистика ГА: - Размер популяции 20 Количество итераций 1000 Одноточечный перекрестный турнир Выбор вероятности мутации = 1/нет. бит

Я выполнил программирование на Matlab


person Prithvi Thakur    schedule 18.05.2015    source источник


Ответы (1)


Ну, это только происходит с GA. Это называется преждевременным сближением.

Первое, что я бы попробовал в вашем случае, это резко увеличить размер популяции, например. 500 особей. Такая небольшая популяция с большой долей вероятности станет однородной. Затем я настраивал параметры (вероятность кроссинговера и мутации). Если эти вещи не работают, вы можете попробовать другие методы, такие как совместное использование фитнеса и скопление людей.

person zegkljan    schedule 18.05.2015
comment
эй, спасибо ... :) я должен также попробовать изменить тип выбора? прямо сейчас я использую турнирную селекцию... увеличение размера популяции дало гораздо лучшие результаты... - person Prithvi Thakur; 21.05.2015
comment
Вероятно, нет, но вы можете попробовать. Турнирный отбор очень прост в реализации, поэтому им пользуются все, включая меня. Другие механизмы выбора либо имеют плохие свойства, либо их немного сложнее реализовать. Но, как это всегда бывает с ГА, вы должны просто попробовать то, что работает лучше всего. - person zegkljan; 21.05.2015