Как работает.
Генетика находит случайный пик,
цепляется за него и дооптимизирует.
Если был другой пик (лучший), пропущенный в первом поколении, о нем алгоритму неизвестно.
Генетика не может найти несколько вершин, их может найти только брутфорс.
Генетика без UI выбора параметра,
по которому выбирать лучший результат в поколении, не имеет смысла,
в нашем примере алгоритм работает по лучшему профиту.
Сначала происходит случайный перебор значений, который выражается в количестве равному размеру популяции.
Из этого количества выделяется один результат, с самым большим значением по фактору восстановления (result.RecoveryFactor), и на основе его результата делается новое поколение в количестве равному размеру популяции.
Шанс мутации 0.6. Это 60%. 60% что любой параметр изменится.
Сила мутации 0.8. Это значит, что параметр который меняется, может изменится от найденного значения на 80% от диапазона заданного пользователем при оптимизации.
Мутируется по формуле: Cnew = Cold + F * (A - B)
A - значение,
Cold, B - случайные значения из поколения,
F - сила мутации
Результат нормализуется, чтобы был в рамках допустимых значений.
Получение новых особей во втором и далее поколении осуществляется только методом мутации.