Решение задачи оптимизации методом генетического алгоритма
Понятие генетического алгоритма и механизм минимизации функции многих переменных. Построение графика функции и ее оптимизация. Исследование зависимости решения от вида функции отбора родителей для кроссинговера и мутации потомков, анализ результатов.
Рубрика | Математика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 04.05.2015 |
Размер файла | 404,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
КОНТРОЛЬНАЯ РАБОТА
Решение задачи оптимизации методом генетического алгоритма
Введение
алгоритм переменная кроссинговер
В процессе выполнения данной контрольной работе была написана программа Matlab, основной задачей которой является проведение условной минимизации заданной функции нескольких переменных на основе применения генетического алгоритма (ГА). Генетический алгоритм был реализован по уравнениям и данным, заданным согласно варианту. Также была реализована настройка ГА встроенной функцией gaoptimset. Результат был сравнен с результатом написанной программы. Также были проведены исследования работы ГА с необходимыми графическими иллюстрациями в соответствии с вариантом.
1. Постановка задачи
Цель работы.
Научиться реализовывать условную минимизацию заданной функции нескольких переменных на основе применения генетического алгоритма (ГА) в среде Matlab, научиться реализовывать алгоритм, не используя окно тулбокса, настраивать ГА встроенной функцией MATLAB gaoptimset и исследовать работу ГА, реализуя различные графики, диаграммы, таблицы.
Задание на контрольную работу.
1) Провести условную минимизацию заданной функции нескольких переменных на основе применения генетического алгоритма (ГА), программно реализованного в Matlab (использовать только стандартную функцию).
2) Составить программу решения задачи в Matlab в виде m-файла, не используя окно тулбокса.
3) Для настройки ГА использовать функцию gaoptimset. Все задаваемые опции прописать в разработанной программе явным образом.
4) Провести исследования работы ГА с необходимыми графическими иллюстрациями в соответствии с вариантом.
Индивидуальное задание.
Вариант №24.
5) Дана следующая функция:
1) Построить график заданной функции при n = 2. Определить визуально, имеет ли данная функция глобальный минимум.
2) Провести оптимизацию заданной функции в Matlab (с помощью генетического алгоритма): найти глобальный минимум.
3) Для решения задачи составить программу в среде Matlab (m-файл).
4) Результат определить как среднее по 20 решениям.
5) В отчете отразить ход решения задачи:
- представить график средних и наилучших по поколениям значений целевой функции;
- провести исследование зависимости решения от вида функции отбора родителей для кроссинговера и мутации потомков.
2. Теоретические сведения
2.1 Понятие генетического алгоритма
Генетические алгоритмы - это адаптивные методы поиска, которые в последнее время используются для решения задач оптимизации. В них используются как аналог механизма генетического наследования, так и аналог естественного отбора. При этом сохраняется биологическая терминология в упрощенном виде и основные понятия линейной алгебры. Основной идеей генетических алгоритмов является организация «борьбы за существование» и «естественного отбора» среди этих пробных решений.
Рассмотрим принципы работы генетических алгоритмов на максимально простом примере. Пусть требуется найти глобальный минимум функции на отрезке [0; 7]. На этом отрезке функция принимает минимальное значение в точке x = 1. Очевидно, что в точке x = 6 функция попадает в локальный минимум. Если для нахождения глобального минимума использовать градиентные методы, то в зависимости от начального приближения можно попасть в данный локальный минимум.
Рассмотрим на примере данной задачи принцип работы генетических алгоритмов. Для простоты положим, что x принимает лишь целые значения, т.е. x ? {0, 1, 2, 3, 4, 5, 6, 7}. Это предположение существенно упростит изложение, сохранив все основные особенности работы генетического алгоритма. Выберем случайным образом несколько чисел на отрезке [0; 7]: {2, 3, 5, 4}. Запишем пробные решения в двоичной форме: {010, 011, 101, 100}. Поскольку генетические алгоритмы используют биологические аналогии, то и применяющаяся терминология напоминает биологическую. Так, одно пробное решение, записанное в двоичной форме, мы будем называть особью или хромосомой, а набор всех пробных решений - популяцией. Как известно, принцип естественного отбора заключается в том, что в конкурентной борьбе выживает наиболее приспособленный. В нашем случае приспособленность особи определяется целевой функцией: чем меньше значение целевой функции, тем более приспособленной является особь, т.е. пробное решение, использовавшееся в качестве аргумента целевой функции.
Теперь приступим к процессу размножения: попробуем на основе исходной популяции создать новую, так чтобы пробные решения в новой популяции были бы ближе к искомому глобальному минимуму целевой функции. Для этого сформируем из исходной популяции брачные пары для скрещивания. Поставим в соответствие каждой особи исходной популяции случайное целое число из диапазона от 1 до 4. Будем рассматривать эти числа как номера членов популяции. При таком выборе какие-то из членов популяции не будут участвовать в процессе размножения, так как образуют пару сами с собой. Какие-то члены популяции примут участие в процессе размножения неоднократно с различными особями популяции. Процесс размножения (рекомбинация) заключается в обмене участками хромосом между родителями. Например, пусть скрещиваются две хромосомы 111111 и 000000. Определяем случайным образом точку разрыва хромосомы, пусть, это будет 3: 111|111 000|000. Теперь хромосомы обмениваются частями, стоящими после точки разрыва, и образуют двух новых потомков: 111000 и 000111.
Следующим шагом в работе генетического алгоритма являются мутации, т.е. случайные изменения полученных в результате скрещивания хромосом. Пусть вероятность мутации равна 0,3. Для каждого потомка возьмем случайное число на отрезке [0; 1], и если это число меньше 0,3, то инвертируем случайно выбранный ген (заменим 0 на 1 или наоборот).
Как видно на примере, мутации способны улучшить (первый потомок) или ухудшить (четвертый потомок) приспособленность особи-потомка. В результате скрещивания хромосомы обмениваются «хвостами», т.е. младшими разрядами в двоичном представлении числа. В результате мутаций изменению может подвергнуться любой разряд, в том числе, старший. Таким образом, если скрещивание приводит к относительно небольшим изменениям пробных решений, то мутации могут привести к существенным изменениям значений пробных решений.
Теперь из четырех особей-родителей и четырех полученных особей потомков необходимо сформировать новую популяцию. В новую популяцию отберем четыре наиболее приспособленных особей из числа «старых» особей и особей-потомков.
В результате получим новое поколение. Получившуюся популяцию можно будет вновь подвергнуть кроссинговеру, мутации и отбору особей в новое поколение. Таким образом, через несколько поколений мы получим популяцию из похожих и наиболее приспособленных особей. Значение приспособленности наиболее «хорошей» особи (или средняя приспособленность по популяции) и будет являться решением нашей задачи. Следуя этому, в данном случае, взяв наиболее приспособленную особь 001 во втором поколении, можно сказать, что минимумом целевой функции является значение ?5,42, соответствующее аргументу x = 1. Тем самым попадания в локальный минимум удалось избежать! На данном примере разобран вариант простого генетического алгоритма. При дальнейшем использования ГА к разным задачам возможно моделирование основных операторов алгоритма.
2.2 Понятие минимизации функции многих переменных
Градиентом дифференцируемой функции f(x) в точке х[0] называется n-мерный вектор f (x[0]), компоненты которого являются частными производными функции f(х), вычисленными в точке х[0], т.е. f' (x[0]) = (дf (х[0])/дх1, …, дf (х[0])/дхn)T.
Этот вектор перпендикулярен к плоскости, проведенной через точку х[0], и касательной к поверхности уровня функции f(x), проходящей через точку х[0].В каждой точке такой поверхности функция f(x) принимает одинаковое значение. Приравнивая функцию различным постоянным величинам С0, С1,…, получим серию поверхностей, характеризующих ее топологию.
Вектор-градиент направлен в сторону наискорейшего возрастания функции в данной точке. Вектор, противоположный градиенту (-f' (х[0])), называется антиградиентом и направлен в сторону наискорейшего убывания функции. В точке минимума градиент функции равен нулю. На свойствах градиента основаны методы первого порядка, называемые также градиентным и методами минимизации. Использование этих методов в общем случае позволяет определить точку локального минимума функции.
Очевидно, что если нет дополнительной информации, то из начальной точки х[0] разумно перейти в точку х, лежащую в направлении антиградиента - наискорейшего убывания функции. Выбирая в качестве направления спуска р[k] антиградиент - f' (х[k]) в точке х[k], получаем итерационный процесс вида х [k+1] = x[k] - akf' (x[k]), аk > 0; k=0, 1,…
В координатной форме этот процесс записывается следующим образом:
xi[k+1]=хi[k] - akf (x[k]) /xi; i = 1,…, n; k= 0, 1, 2,…
В качестве критерия останова итерационного процесса используют либо выполнение условия малости приращения аргумента || x [k+l] - x[k] || <= e, либо выполнение условия малости градиента|| f' (x[k+l]) || <= g. Здесь e и g - заданные малые величины.
Возможен и комбинированный критерий, состоящий в одновременном выполнении указанных условий. Градиентные методы отличаются друг от друга способами выбора величины шага аk. При методе с постоянным шагом для всех итераций выбирается некоторая постоянная величина шага. Достаточно малый шаг аk обеспечит убывание функции, т.е. выполнение неравенства f (х[k+1]) = f (x[k] - akf' (x[k])) < f (x[k]).
Однако это может привести к необходимости проводить неприемлемо большое количество итераций для достижения точки минимума. С другой стороны, слишком большой шаг может вызвать неожиданный рост функции либо привести к колебаниям около точки минимума (зацикливанию). Из-за сложности получения необходимой информации для выбора величины шага методы с постоянным шагом применяются на практике редко. Более экономичны в смысле количества итераций и надежности градиентные методы с переменным шагом, когда в зависимости от результатов вычислений величина шага некоторым образом меняется.
3. Решение задания
3.1 Построение графика функции
График заданной функции представлен на рисунке 3.1.
Рис. 3.1 - График заданной функции
3.2 Оптимизация заданной функции
В процессе оптимизации целевой функции в командном окне Matlab отображается информация о следующих параметрах (рис. 3.2):
- номере поколения и количестве вычислений значений целевой функции;
- наилучших значениях целевой функции;
- среднем значении целевой функции;
- количестве вычислений в рамках одного поколения;
- причины завершения расчета.
Рисунок 3.2 - Текущая информация о параметрах
3.3 Отражение хода решения задачи
В результате решения задачи оптимизации заданной функции искомые xi стремятся к значениям, показанным на рис. 3.2.
Результаты решения (значения целевой функции) представлены в таблице 3.1.
n=2 |
||
-27 |
В процессе решения выводится график средних и наилучших по поколениям значений целевой функции (рис. 3.3).
Рис. 3.3 - График средних и наилучших по поколениям значений целевой функции
3.4 Исследование зависимости решения от вида функции отбора родителей для кроссинговера и мутации потомков
Для проведения исследования задавались различным видом функции отбора родителей для кроссинговера и мутации потомков:
1) @selectionremainder;
2) @selectionuniform;
3) @selectionstochunif;
4) @selectionroulette;
5) @selectiontournament.
Результаты расчетов представлены на рисунке 3.4.
Рис. 3.4 - График зависимости решения от вида функции отбора родителей для кроссинговера и мутации потомков
Как видно из графика, значение целевой функции с изменением вида функции отбора родителей для кроссинговера и мутации потомков увеличивается.
Вывод
В процессе выполнения данной контрольной работы была реализована программа Matlab, основной задачей которой является проведение условной минимизации заданной функции нескольких переменных на основе применения генетического алгоритма (ГА). Генетический алгоритм был реализован по уравнениям и данным, заданным согласно варианту. Также была реализована настройка ГА встроенной функцией gaoptimset. Результат был сравнен с результатом написанной программы. Также были проведены исследования работы ГА с необходимыми графическими иллюстрациями в соответствии с вариантом.
Список литературы
1) Акулич И.Л. Математическое программирование в примерах и задачах. - М.: Изд. «Высшая школа», 1986.
2) Гершкович Ю.Б. Методы оптимизации и их применение для управления процессами в нефтяной промышленности. - М.: МИНГ им. И.М. Губкина, 1988.
3) Моисеев Н.Н., Иванилов Ю.П. Методы оптимизации. - М.: Наука, 1978.
4) Новгородцев А. Расчет электрических цепей в «MATLAB». - Спб.: Питер, 2004.
Приложение
Текст программы
Файл a2.m
N = 20;
nvars = 2;% число переменных x
Xmin(1) = -30;
Xmax(1) = 30;
Xmin(2) = -10;
Xmax(2) = 10;
% построение графика функции 2-х переменных
if nvars == 2
dx1 = (Xmax(1) - Xmin(1))/49;
dx2 = (Xmax(2) - Xmin(2))/49;
x1 = Xmin(1):dx1: Xmax(1);
x2 = Xmin(2):dx2: Xmax(2);
n1 = length(x1);
n2 = length(x2);
for i=1:1:n1
for j=1:1:n2
Y (i, j) = 2*x1 (i)^2-4*x1 (i)^4+1/2*x1 (i)^6+x1 (i)^2*x2 (j)^2;
end
end
surfc (x1, x2, Y), grid on;
xlabel('x1');
ylabel('x2');
zlabel ('f(x)');
end
for i1=1:1:5
switch i1
case 1,
SF = @selectionremainder;
case 2,
SF = @selectionuniform;
case 3,
SF = @selectionstochunif;
case 4,
SF = @selectionroulette;
case 5,
SF = @selectiontournament;
end
PIR = [Xmin; Xmax];
options = gaoptimset;
options = gaoptimset (options, 'PopInitRange', PIR);
options = gaoptimset (options, 'PopInitRange', []);
options = gaoptimset (options, 'PopulationSize', 100);
options = gaoptimset (options, 'EliteCount', 5);
options = gaoptimset (options, 'CrossoverFraction', 0.8);
options = gaoptimset (options, 'ParetoFraction', 0.05);
options = gaoptimset (options, 'MigrationDirection', 'both');
options = gaoptimset (options, 'MigrationInterval', 1);
options = gaoptimset (options, 'MigrationFraction', 1);
options = gaoptimset (options, 'Generations', 100);
options = gaoptimset (options, 'TimeLimit', 400);
options = gaoptimset (options, 'FitnessLimit', - Inf);
options = gaoptimset (options, 'StallGenLimit', 50);
options = gaoptimset (options, 'StallTimeLimit', 600);
options = gaoptimset (options, 'TolFun', 1e-6);
options = gaoptimset (options, 'TolCon', 1e-6);
options = gaoptimset (options, 'InitialPopulation', []);
options = gaoptimset (options, 'InitialScores', []);
options = gaoptimset (options, 'InitialPenalty', []);
options = gaoptimset (options, 'PenaltyFactor', []);
options = gaoptimset (options, 'CreationFcn', @gacreationuniform);
options = gaoptimset (options, 'FitnessScalingFcn', @fitscalingrank);
options = gaoptimset (options, 'SelectionFcn', SF);
options = gaoptimset (options, 'CrossoverFcn', {@crossoverheuristic, 1.2});
options = gaoptimset (options, 'MutationFcn', @mutationadaptfeasible);
options = gaoptimset (options, 'DistanceMeasureFcn', []);
options = gaoptimset (options, 'HybridFcn', []);
options = gaoptimset (options, 'Display', 'iter');
options = gaoptimset (options, 'PlotFcns', {@gaplotbestf});
options = gaoptimset (options, 'PlotInterval', 1);
for k=1:1:N
[X (k,:), FVal(k)]=ga (@ex95, nvars, [], [], [], [], Xmin, Xmax, [], options);
end
F(i1) = mean(FVal),
for j=1:1:nvars
X_(i1, j) = mean (X(:, j));
end
X_(i1,:),
End
figure(3);
plot (1:1:i1, F), grid on;
Файл ex95.m
function y = ex95 (x)
x(1)^2-12*x(1)+11+10*cos (pi/2*x(1))+8*sin (5*pi*x(1)) - 1/sqrt(5)*exp (-1*((x(1) - 0.5)^2)/2);
end
Размещено на Allbest.ru
Подобные документы
Методы условной и безусловной нелинейной оптимизации. Исследование функции на безусловный экстремум. Численные методы минимизации функции. Минимизация со смешанными ограничениями. Седловые точки функции Лагранжа. Использование пакетов MS Excel и Matlab.
лабораторная работа [600,0 K], добавлен 06.07.2009Математическая задача оптимизации. Минимум функции одной и многих переменных. Унимодальные и выпуклые функции. Прямые методы безусловной оптимизации и минимизации, их практическое применение. Методы деления отрезка пополам (дихотомия) и золотого сечения.
курсовая работа [2,0 M], добавлен 26.08.2009Методы нахождения минимума функции одной переменной и функции многих переменных. Разработка программного обеспечения вычисления локального минимума функции Химмельблау методом покоординатного спуска. Поиск минимума функции методом золотого сечения.
курсовая работа [95,1 K], добавлен 12.10.2009Нахождение экстремумов функций методом множителей Лагранжа. Выражение расширенной целевой функции. Схема алгоритма численного решения задачи методом штрафных функций в сочетании с методом безусловной минимизации. Построение линий ограничений.
курсовая работа [259,9 K], добавлен 04.05.2011Понятия зависимой, независимой переменных, области определения функции. Примеры нахождения области функции. Примеры функций нескольких переменных: линейная, квадратическая, функция Кобба-Дугласа. Построение графика и линии уровня функции двух переменных.
презентация [104,8 K], добавлен 17.09.2013Решение системы уравнений методом Гаусса и с помощью встроенной функции; матричным методом и с помощью вычислительного блока Given/Find. Нахождение производных. Исследование функции и построение её графика. Критические точки и интервалы монотонности.
контрольная работа [325,8 K], добавлен 16.12.2013Составление таблицы значений функции алгебры логики и нахождение всех существенных переменных. Связный ориентированный и взвешенный граф. Построение функции полиномом Жегалкина. Текст программы для алгоритма Дейкстры. Определение единиц и нулей функции.
контрольная работа [43,2 K], добавлен 27.04.2011Функция многих переменных. Предел и непрерывность функции многих переменных. Частные производные. Дифференцируемость функции. Производная в направлении. Градиент. Локальные экстремумы. Интегральное исчисление функций. Неопределённный интеграл.
курс лекций [309,0 K], добавлен 08.04.2008Многие переменные, минимизация их функций. Точки максимума и минимума называются точками экстремума функции. Условия существования экстремумов функции многих переменных. Квадратичная форма, принимающая, как положительные, так и отрицательные значения.
реферат [70,2 K], добавлен 05.09.2010Рассмотрение эффективности применения методов штрафов, безусловной оптимизации, сопряженных направлений и наискорейшего градиентного спуска для решения задачи поиска экстремума (максимума) функции нескольких переменных при наличии ограничения равенства.
контрольная работа [1,4 M], добавлен 16.08.2010