-5

Я работаю над проектом генетического алгоритма. Мне нужен код, чтобы узнать максимальные значения/минимумы функции Растригина или функцию Easom (для y = 0) с использованием базового генетического алгоритма.Поиск минимумов функции с использованием генетического алгоритма

+0

Обычная процедура заключается в получении и подключении нескольких связанных библиотек matlab, не уделяя много внимания теории или реализации.Где именно ваша проблема, у вас есть пример кода для некоторых «простых» функций? – LutzL

+0

@ Lutzl Нет, я этого не делаю. На самом деле я пишу код в JAVA/C++, и я не понимаю, как использовать GA для оптимизации функций. Я написал код эволюции населения, используя GA, но никогда не работал с оптимизацией функций, используя GA. – Aman

+0

У вас есть популяция, вы вычисляете ценность функции для каждого человека в популяции, а индивидуум с минимальным значением получает более высокий фитнес в популяции. – viceriel

ответ

2

Хорошо, мы смотрим на функцию Easom.

Постановка задачи

Нахождение минимума:

е (х) = соз (x1) соз (x2) ехр (- (x1-PHI)^2 - (x2-PHI)^2)

Представление выберите

например, вектор действительных чисел. Интервал значений для каждого элемента равен < -5; 5>.

Фитнес

Главная проблема ГА. У нас есть, например, два лица:

Individual1: [-1 | 2,7 | -0,68 | 3,78 || -2,14 | 1,63 | -1,75 | -3,8]

Individual2: [1 | 1 | 1 | 1 || -0,5 | -0,5 | -0,5 | -0,5]

Первый человек декодируется как 4.8 и -6.06. Его фитнес-функция -9.23073 ... × 10^-40.

Второй индивидуум декодируется как 4 и -2. Его пригодность -4.30104456071396041116767479151655914468678005731098 ... × 10^-13

И теперь вопрос. Фитнес настолько низок, поэтому мы можем рассматривать оба как 0. У вас есть два варианта. Ожидание Годо (возможно, в каком-то поколении родился индивидуализирующий индивид с глобальным минимальным значением). Или вы можете использовать эвристику. Эвристика основана на разделении фитнеса на две ценности, большую физическую форму и малую пригодность. Основная пригодность - это значение функции x. Это значение всегда равно 0, поэтому запуск не может выполнять поиск. Малый фитнес эвристический с целью дать поиск способом. Вы определяете некоторую функцию, например, среднее значение x. Таким образом, незначительная пригодность для индивидуума1 составляет -0,63, а индивидуум2 - 1. Таким образом, индивидуум2 «лучше», и у него будет более высокая вероятность выбора и т. Д.

Незначительный фитнес только дайте свой поиск способом.
Может быть так неправильно? Да, это эвристика. Важная, второстепенная функция назначает предпочтение для лиц с одинаковой главной функцией. Когда основной фитнес отличается, мы используем большую пригодность как ценность для ориентации.

Пример:

Individual1 фитнес: Кафедра: -0,1 | Малая: 3

Individual2 fitness: Major: 0 | Малая: 8

Первый из них лучше из-за большой пригодности.

 Смежные вопросы

  • Нет связанных вопросов^_^