Генетический алгоритм
2. Создать начальную популяцию
· (Начало цикла)
1. Размножение (скрещивание)
2. Мутирование
3. Вычислить значение целевой функции для всех особей
4. Формирование нового поколения (селекция)
5. Если выполняются условия останова, то (конец цикла), иначе (начало цикла).
2.1 Создание начальной популяции
Перед первым шагом нужно
случайным образом создать начальную популяцию; даже если она окажется совершенно неконкурентоспособной, генетический алгоритм все равно достаточно быстро переведет ее в жизнеспособную популяцию. Таким образом, на первом шаге можно особенно не стараться сделать слишком уж приспособленных особей, достаточно, чтобы они соответствовали формату особей популяции, и на них можно было подсчитать функцию приспособленности (Fitness). Итогом первого шага является популяция H, состоящая из N особей.
2.2 Размножение (Скрещивание)
Размножение в генетических алгоритмах обычно половое — чтобы произвести потомка, нужны несколько родителей, обычно два.
Размножение в разных алгоритмах определяется по-разному — оно, конечно, зависит от представления данных. Главное требование к размножению — чтобы потомок или потомки имели возможность унаследовать черты обоих родителей, «смешав» их каким-либо способом.
Почему особи для размножения обычно выбираются из всей популяции H, а не из выживших на первом шаге элементов H0 (хотя последний вариант тоже имеет право на существование)? Дело в том, что главный бич многих генетических алгоритмов — недостаток разнообразия (diversity) в особях. Достаточно быстро выделяется один-единственный генотип, который представляет собой локальный максимум, а затем все элементы популяции проигрывают ему отбор, и вся популяция «забивается» копиями этой особи. Есть разные способы борьбы с таким нежелательным эффектом; один из них — выбор для размножения не самых приспособленных, но вообще всех особей.
2.3 Мутации
К мутациям относится все то же самое, что и к размножению: есть некоторая доля мутантов m, являющаяся параметром генетического алгоритма, и на шаге мутаций нужно выбрать mN особей, а затем изменить их в соответствии с заранее определенными операциями мутации.
2.4 Отбор
На этапе отбора нужно из всей популяции выбрать определенную ее долю, которая останется «в живых» на этом этапе эволюции. Есть разные способы проводить отбор. Вероятность выживания особи h должна зависеть от значения функции приспособленности Fitness(h). Сама доля выживших s обычно является параметром генетического алгоритма, и ее просто задают заранее. По итогам отбора из N особей популяции H должны остаться sN особей, которые войдут в итоговую популяцию H'. Остальные особи погибают.
3. Применение генетических алгоритмов
Генетические алгоритмы применяются для решения следующих задач:
1. Оптимизация функций
2. Оптимизация запросов в базах данных
3. Разнообразные задачи на графах (задача коммивояжера, раскраска, нахождение паросочетаний)
4. Настройка и обучение искусственной нейронной сети
5. Задачи компоновки
6. Составление расписаний
7. Игровые стратегии
8. Теория приближений
9. Искусственная жизнь
10. Биоинформатика (фолдинг белков)
4. Пример тривиальной реализации на C++
Поиск в одномерном пространстве, без скрещивания. # include <iostream># include <algorith># include <numeric> int main(){using namespace std;srand((unsigned)time(NULL));const int N = 1000;int a[N];//заполняем нулямиfill(a, a+N, 0);for (;;){//мутация в случайную сторону каждого элемента:for (int i = 0; i < N; ++i)if (rand()%2 == 1)a[i] += 1;elsea[i] -= 1;//теперь выбираем лучших, отсортировав по возрастанию .sort(a, a+N);// . и тогда лучшие окажутся во второй половине массива.//скопируем лучших в первую половину, куда они оставили потомство, а первые умерли:copy(a+N/2, a+N, a /*куда*/);//теперь посмотрим на среднее состояние популяции. Как видим, оно всё лучше и лучше.cout << accumulate(a, a+N, 0) / N << endl;}} Книги
· Емельянов В. В., Курейчик В. В., Курейчик В. М. Теория и практика эволюционного моделирования. — М: Физматлит, 2003. — С. 432. — ISBN 5-9221-0337-7
· Курейчик В. М., Лебедев Б. К., Лебедев О. К. Поисковая адаптация: теория и практика. — М: Физматлит, 2006. — С. 272. — ISBN 5-9221-0749-6
· Гладков Л. А., Курейчик В. В., Курейчик В. М. Генетические алгоритмы: Учебное пособие. — 2-е изд — М: Физматлит, 2006. — С. 320. — ISBN 5-9221-0510-8
· Гладков Л. А., Курейчик В. В, Курейчик В. М. и др. Биоинспирированные методы в оптимизации: монография. — М: Физматлит, 2009. — С. 384. — ISBN 978-5-9221-1101-0
· Рутковская Д., Пилиньский М., Рутковский Л. Нейронные сети, генетические алгоритмы и нечеткие системы = Sieci neuronowe, algorytmy genetyczne i systemy rozmyte. — 2-е изд — М: Горячая линия-Телеком, 2008. — С. 452. — ISBN 5-93517-103-1
Ссылки
-Научные статьи по генетическим алгоритмам
-Реализация генетического алгоритма для .NET Framework 2.0
-Проект CuberGA — расширяемый framework для реализации генетических алгоритмов
· Эволюционные вычисления
· Генетические алгоритмы
· Генетические алгоритмы
· Решение Диофантова уравнения
· Подборка статей по теме Генетические алгоритмы
· Основные операции генетического алгоритма
· Использование генетических алгоритмов в проблеме автоматического написания программ
· Реализация генетических алгоритмов в среде MATLAB v6.12
· Сергей Николенко. Генетические алгоритмы (слайды) — лекция № 4 из курса «Самообучающиеся системы»
· geneticprogramming.us
· Обзор методов эволюции нейронных сетей
· Генерирование автоматов состояний с помощью ГА
· Субботін С. О., Олійник А. О., Олійник О. О. Неітеративні, еволюційні та мультиагентні методи синтезу нечіткологічних і нейромережних моделей: Монографія / Під заг. ред. С. О. Субботіна. — Запоріжжя: ЗНТУ, 2009. — 375 с.(укр.)
· A Field Guide to Genetic Programming. — Lulu.com, freely available from the internet, 2008. — ISBN 978-1-4092-0073-4
· Special Interest Group for Genetic and Evolutionary Computation (former ISGEC)(англ.)
· JAGA (Java API for Genetic Algoriths) — Extensible and pluggable open source API for implementing genetic algoriths and genetic programming applications in Java(англ.)
· IlliGAL (Illinois Genetic Algoriths Laboratory) Home Page(англ.)
· Evolutionary Computation Laboratory at George-Mason University(англ.)
· GENITOR Research Group (CS, Colorado)(англ.)
· Evolutionary and Adaptive Systems (EASy) at Sussex(англ.)
· Genetic Algoriths Articles(англ.)
· Evolutionary Algoriths Research Group at University of Dortmund(англ.)
· Evolutionary Digest Archive(англ.)
· GAUL: Genetic Algorith Utility Library — нетривиальная обобщенная свободная реализация GA(англ.)
· Очень большая подборка статей по использованию генетических алгоритмов в задачах многокритериальной оптимизации(англ.)
Другие рефераты на тему «Программирование, компьютеры и кибернетика»:
Поиск рефератов
Последние рефераты раздела
- Основные этапы объектно-ориентированного проектирования
- Основные структуры языка Java
- Основные принципы разработки графического пользовательского интерфейса
- Основы дискретной математики
- Программное обеспечение системы принятия решений адаптивного робота
- Программное обеспечение
- Проблемы сохранности информации в процессе предпринимательской деятельности