-
Notifications
You must be signed in to change notification settings - Fork 3
Open
Description

Нужно реализовать алгоритм MCMC на популяции. Для этого нужно ввести конфиг orgMCMCPeriod, который будет запускать одну итерацию алгоритма. Он состоит в следующем:
- при наступлении периода нужно отсортировать все организмы по их мутагенезу (кол-во мутаций за время. думаю можно взять период мутаций и их процент)
- пройти по всем отсортированным организмам и брать пары по индексам 1,2; 2,3; ...
- для каждой пары вычислить вероятность обмена мутагенезом: смотри формулу в левом нижнем углу доски. Где, mi и mi+1 - это мутагенез, Fi и Fi+1 - фитнесс (нужно попробовать с другими параметрами, например скорость нахождения энергии)
- mi < mi+1, Fi+1 < Fi, bi = 1/mi, bi+1 = 1/mi+1. p (вероятность обмена) = min(1, e^(-(bi+1 - bi)*(Fi+1 - Fi)))
- вызываем
Math.random() <= pтогда меняем параметры мутагенеза - применяем этот алгоритм ко всем парам организмов в популяции
Так же, для успешной работы алгоритма, нужно чтобы в популяции всегда были организмы с низким и высоким мутагенезом. Для этого нужно ввести другой конфиг orgUpdateMutationsPeriod или что-то похожее. При наступлении этого периода нужно искусственно вводить мутагенез организмам по какому-то распределению.