Skip to content

Implement MCMC (Markov Chain Monte Carlo) algorithm #116

@tmptrash

Description

@tmptrash

20180205_184035
Нужно реализовать алгоритм 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 или что-то похожее. При наступлении этого периода нужно искусственно вводить мутагенез организмам по какому-то распределению.

Metadata

Metadata

Assignees

Labels

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions