Вы находитесь на странице: 1из 7

Министерство образования и науки Российской Федерации

Федеральное государственное автономное образовательное


учреждение высшего образования

«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ
ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

Институт кибернетики
Направление подготовки: «Мехатроника и робототехника»
Кафедра систем управления и мехатроники

Генетические алгоритмы в MatLab.


Отчет по лабораторной работе №6
по курсу «Метода искусственного интеллекта в мехатронике и
робототехнике»
Вариант 4

Выполнил: студент гр. 8ЕМ81 Григоришин И.С.


Подпись Дата

Принял: ассистент СУМ. Беляев А.C.


Подпись Дата

Томск – 2018
Цель работы: изучение основ работы с Genetic Algorithm ППП MatLAB
7.8, исследование экстремумов функций с помощью генетических алгоритмов.
Задание 1:
Найти минимум функции одной переменной по варианту любым
известным способом:

𝑓(𝑥) = √3 + 𝑥 2 + 3 cos(𝑥).
Исследовать функцию с помощью генетических алгоритмов. Сравнить
полученные результаты.
Провести эксперимент при различном размере начальной популяции:
10, 50, 300, 800. Для каждого из этих значений принять следующие операторы
отбора родительских особей: Stochastic uniform, Uniform, Roulette.
Сделать выводы о том, как влияет размер исходной популяции н
результаты, а также какое влияние вносят различные операторы отбора
родительских особей. Привести графическое решение, найденное с помощью
генетических алгоритмов, которое соответствует максимально точному
найденному решению. Объяснить каким образом влияют операторы отбора
родительских особей на результаты.
Задание 2:
Найти минимум функции двух переменных любым известным
способом. Провести исследование этой функции с помощью генетических
алгоритмов и заполнить таблицу, изменяя вероятность скрещивания и размер
начальной популяции. Выбрать оператор мутации по Гауссу, вероятность
мутации принять равным по умолчанию 1.0.
По результатам проведенных экспериментов сделать вывод о том, при
каком соотношении вероятности скрещивания к мутации результаты
максимально точны. Привести графическое решение, найденное с помощью
генетических алгоритмов, которое соответствует максимально точному
найденному решению.

2
Целевая функция двух переменных для варианта:
2

𝑓(𝑥) = 10𝑛 + ∑(𝑥𝑖2 − 10 ∗ cos⁡(2𝜋𝑥𝑖 )).


𝑖=1

Решение задания 1:
Первым этапом является нахождение минимума функции 𝑓(𝑥) =
√3 + 𝑥 2 + 3 cos(𝑥) любым известным способом.
Для этого построим график функции, изображенный на рисунке 1 с
областью определения 𝑥 = [−10; 10] с шагом 0.001. Как можно заметить,
функция имеет два глобальных минимума.

Рисунок 1 – График исследуемой функции.


Для вычисления минимумов необходимо создать М-файл с
определением данной функции:

Далее, используя встроенную в математический пакет MatLAB


функцию fminbnd(@funcOneVar, -10.0, 10.0), был найден левый относительно
нуля минимум функции. Очевидно, что данная функция является
симметричной, из чего следует, что второй минимум отличается знаком.

3
Таким образом, представленная в варианте функция одной переменной
имеет два минимума: -2.8527, 2.8527.
Вторым этапом задания является анализ функции с помощью
генетических алгоритмов, представленных в математическом пакете MatLAB.
В таблице 1 представлены результаты экспериментов.
Таблица 1 – Результаты экспериментов, проводимых с функцией
Начальная популяция
Операторы 10 50 300 800
Stochastic Uniform 2.831 -2.842 -2.853 -2.853
Uniform -2.828 2.825 -2.855 2.853
Roulette 2.845 2.866 2.854 -2.854

Как можно заметить, уже при численности начальной популяции


равной 300, генетический алгоритм на основании оператора выбора Stochastic
Uniform достиг наилучшего результата. Графики полученных результатов для
данного эксперимента представлены на рисунке 2.

Рисунок 2 – Наилучшее решение


4
Решение задания 2:
Первым этапом является нахождение минимума функции
𝑓(𝑥) = 10𝑛 + ∑2𝑖=1(𝑥𝑖2 − 10 ∗ cos⁡(2𝜋𝑥𝑖 )) любым известным способом.
Для этого построим график функции, изображенный на рисунке 3 с
областью определения 𝑥 = [−100; 100], 𝑦 = [−100; 100] с шагом 0.1. Как
можно заметить, функция имеет два глобальных минимума.

Рисунок 3 – График исследуемой функции.


Для вычисления минимумов необходимо создать М-файл с
определением данной функции:

Далее, используя встроенную в математический пакет MatLAB


функцию fminsearch (@funcOneVar, [0 0]), минимум функции.

Таким образом, представленная в варианте функция двух переменных


имеет минимум в точке [0; 0].

5
Вторым этапом задания является анализ функции с помощью
генетических алгоритмов, представленных в математическом пакете MatLAB.
В таблице 2 представлены результаты экспериментов.
Таблица 2 – Результаты экспериментов
Размер начальной популяции
Вероятность 10 50 100 500 1000
кроссовера
𝑥1 = −2.123 𝑥1 = 1.825 𝑥1 = 0.008 𝑥1 = 0.021 𝑥1 = 0.008
1.0
𝑥2 = −0.971 𝑥2 = −0.017 𝑥2 = 0.064 𝑥2 = −0.04 𝑥2 = −0.998
𝑥1 = 0.086 𝑥1 = −1.114 𝑥1 = −0.003 𝑥1 = 0 𝑥1 = 0.006
0.8
𝑥2 = 0.917 𝑥2 = 0.061 𝑥2 = −0.001 𝑥2 = −0.001 𝑥2 = 0
𝑥1 = 1.022 𝑥1 = 0.01 𝑥1 = 0.002 𝑥1 = −0.011 𝑥1 = −0.001
0.6
𝑥2 = 0.977 𝑥2 = 0.002 𝑥2 = 0.012 𝑥2 = −0.007 𝑥2 = 0.004
𝑥1 = −1.057 𝑥1 = −0.012 𝑥1 = 0.005 𝑥1 = 0.002 𝑥1 = 0.025
0.3
𝑥2 = 1.942 𝑥2 = −0.025 𝑥2 = 0.008 𝑥2 = −0.0 𝑥2 = 0.012
𝑥1 = −0.874 𝑥1 = 0.957 𝑥1 = −0.05 𝑥1 = −0.021 𝑥1 = 0.997
0.0
𝑥2 = −0.072 𝑥2 = −0.004 𝑥2 = −0.034 𝑥2 = 0.044 𝑥2 = −0.041

Наилучшим решением является эксперимент с вероятностью


кроссовера 0.8 и размером начальной популяции 500 особей. На рисунке 4
представлены подробные результаты для данного эксперимента.

Рисунок 4 – Результаты для наилучшего эксперимента


6
Вывод: во время выполнения заданий лабораторной работы были
получены навыки работы с прикладным пакетом Genetic Algorithm
математического пакета MatLAB.
Помимо этого, были улучшены теоретические и практические знания
относительно генетических алгоритмов и проведения экспериментов на их
основе.
Был проведен ряд экспериментов по определению минимумов для
функций одной и двух переменных. Подробно рассмотрены операторы отбора
родительских особей. Произведен анализ и выбор самой результативной
комбинации для экспериментов, зависимых от вероятности кроссовера и
размера начальной популяции.