@Gagatyn
Самоучка

Как найти экстремум нелинейной функции двух переменных с помощью генетического алгоритма?

Здравствуйте!
Не могу написать программу. В голове каша не могу все систематизировать, нужен алгоритм написания кода. Я наверно думаю как сделать, вот:
  1. Создать динамический массив x и y, размер указывается пользователем, рандом 0 и 10 (требуется от 0 до 10)
  2. применить x и y к функции своей, значения функции отсортировать, произвести мутацию, плохих удалить
  3. Вывести результат

Я очень сомневаюсь в правильности этого алгоритма, нужна помощь. Моя функция z = sqrt(3 * x * x - 5 * y * y)
Есть наброски кода, но они не работают. Что делать? Если есть ссылки на готовую задачу или разборы, буду благодарен (просто долго бьюсь над решением).
  • Вопрос задан
  • 1213 просмотров
Пригласить эксперта
Ответы на вопрос 2
@AlexSku
не буду отвечать из-за модератора
Комментировать
В шаге 2 (один из возможных сценариев) - для массива из 10 элементов:
2.1. применить x и y к функции своей
2.2. значения функции отсортировать,
2.3. оставить 3 самых хороших (назовем их A, B, C)
2.4. создать 3 новых случайной мутацией A', B', C'
2.5. создать еще 3 новых скрещиванием A-B, B-C, A-C
2.6. создать еще 1 новый совершенно случайно ("свежая кровь")
Итого получили снова 10 элементов.
Повторять шаги 2.* до тех пор, пока лучшее значение A предыдущего прогона отличается от лучшего значения A текущего прогона не более чем на 0.00001 (задается пользователем).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы