ОВИ_ЛР_2012
.pdf
Узнаем время затраченное на векторизацию:
elapsed_time =
0.581
Как видно метод векторизации работает на много быстрее.
12.5. Применение генетических алгоритмов для поиска минимума
функции
Найдем минимум функции одной переменной вида:
f (x) 8x 16 123
(x 4)2 .
Напишем M-файл для данной функции и сохраним его в текущей папке под именем ex2.m.
function y = ex2(x)
y=8*x–16–12*((x+4)^(2/3));
Вызовем окно тулбокса с помощью gatool.
В поле fitness function введем имя целевой функции @ex2.
Установим значения параметров ГА: количество особей в популяции равно 10, количество поколений равно 100 (в окне критерия остановки алгоритма), начальный отрезок [–4; 1]. В разделе plots установим флажки для best fitness, best individual, distance и нажмем кнопку start.
В результате завершения процесса в окне final point появится значение переменной x, соответствующее минимуму функции, а в окне status and result можно увидеть найденное минимальное значение целевой функции.
241
Для данной задачи результаты получились следующие:
минимум функции достигается в точке x = –2.99;
значение функции f(–2.99) = –51.999858021760915.
Рис. 12.4. Графический анализ решения
На рис. 12.4 отображается изменение значение целевой функции,
наилучшая особь и расстояния между особями в поколениях. Из данных полученных на рис. 12.4 видно, что, начиная примерно с 80 популяции,
алгоритм сошелся к решению. Особи становятся одинаковыми (расстояние по Хеммингу равно 0) в последних 18 поколениях.
ГА нужно запустить несколько раз, а потом выбрать оптимальное решение. Это связано с тем, что начальная популяция формируется с использованием генератора случайных чисел. Убедиться в правильности решения можно, построив график функции (рис. 12.5).
242
Рис. 12.5. График функции
То же самое можно было бы получить, используя функции gaoptimset и ga. Чтобы посмотреть M-файл выберете в меню File окна
Genetic Algoritm Tool команду Generate M-file, сохраните файл под другим именем и просмотрите код. Для данной задачи получили:
function [x,fval,exitflag,output,population,score] =
ex2q(nvars,PopInitRange_Data,PopulationSize_Data,InitialPo
pulation_Data)
%This is an auto generated M-file from Optimization Tool.
%Start with the default options
options = gaoptimset;
% Modify options setting
options = gaoptimset(options,'PopInitRange',
PopInitRange_Data);
options = gaoptimset(options,'PopulationSize',
PopulationSize_Data);
243
options = gaoptimset(options,'InitialPopulation', InitialPopulation_Data);
options = gaoptimset(options,'Display', 'off');
options = gaoptimset(options,'PlotFcns', { @gaplotbestf @gaplotbestindiv @gaplotdistance }); [x,fval,exitflag,output,population,score] = ...
ga(@ex2,nvars,[],[],[],[],[],[],[],options);
12.6. Применение генетических алгоритмов для поиска максимума
функции
Найдем максимум функции двух переменных вида:
z(x, y) exp(x2 y2 ) sin(x y)..
В диалоговом окне ГА можно решить только задачи минимизации.
Для нахождения максимума функции f(x) следует минимизировать функцию –f(x). Этообъясняется тем, что точка минимума –f(x) является некоторой точкой f(x), в которой достигается максимум.
Напишем M-файл для функции z(x) = –f(x) и сохраним его в текущей папке под именем ex13.m:
function z = ex13(x)
z=–(exp(–x(1)^2–x(2)^2)+sin(x(1)+x(2)));
Вызовем диалоговое окно с помощью gatool.
В поле fitness function введем имя целевой функции @ex13.
Установим значения параметров ГА: количество переменных равное 2,
количество особей в популяции равное 10, количество поколений равное
100 (в окне критерия остановки алгоритма), начальный отрезок [–1; 3]. Для
244
построения графиков в разделе plots установим флажки для best fitness, best individual, distance и нажмем кнопку start.
В результате завершения процесса в окне final point появится значение переменной x, соответствующее минимуму функции, а в окне status and result можно увидеть найденное минимальное значение целевой функции z(x).
Для данной задачи результаты получились следующие:
максимум функции достигается в точке x = 0.46419, y = 0.42406;
значение функции f(0.46419; 0.42406) = 1.449.
Также можно сконструировать другие ГА, моделируя операторы
(выбор родительских пар, кроссинговер, мутация, миграция, отбор особей в новую популяцию, критерии завершения алгоритма) и параметры алгоритма.
Дальнейшее изучение оптимизации с помощью ГА можно продолжить, рассматривая Direct Search Toolbox. Для вызова окна можно в командной строке просто прописать psearchtool.
12.7. Индивидуальные задания
1.По номеру в журнале группы из табл. 12.1 выбрать функцию для исследования экстремумов с помощью ГА в пакете MATLAB.
2.Осуществить поиск минимума и максимума выбранной функции с помощью командной строки и графического интерфейса ГА пакета
MATLAB, используя при этом функции gaoptimset и ga. При этом обосновать выбор всех параметров и критериев остановки работы ГА.
3. Прощитать время, затраченное на поиск экстремумов функции,
при реализации ГА с помощью командной строки пакета MATLAB.
4. Построить график функции для того, чтобы убедиться в правильности найденных с помощью ГА экстремумов.
245
5.Сгенерировать коды M-файлов для каждой задачи поиска экстремумов функции с помощью ГА.
6.Пояснить различие между полученными результатами при многократных запусках ГА во время поиска оптимального решения.
7.Оформите отчет по лабораторной работе.
Таблица 12.1 – Функции для исследования экстремумов с помощью
генетического алгоритма
Номер в |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
журнале |
Название и вид функции для исследования экстремумов |
|||||||||||||||||||
группы |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1, 8, 15 |
Синусоидальная функция: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
f (x) x1 sin4x1 1,1 x2 sin2x2 . |
|
|
||||||||||||||||
|
|
|
|
|
||||||||||||||||
2, 9, 16 |
Функция Растригина: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
f (x) 20 x2 |
x2 |
10 (cos2πx |
cos2πx ) . |
|
|||||||||||||||
|
|
|
||||||||||||||||||
|
|
|
1 |
2 |
|
|
|
|
|
|
1 |
|
|
|
2 |
|
||||
|
Модифицированная функция Растригина: |
|
|
|
|
|
||||||||||||||
3, 10, 17 |
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
f (x) 10n (xi2 |
10 cos2πxi ), для n 2 . |
|
|||||||||||||||||
|
|
|
i 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
Функция Швефеля: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
4, 11, 18 |
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|||
|
f (x) 418,9829n |
(xi sin |
|
|
xi |
|
), для n 2. |
|
||||||||||||
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
i 1 |
|
|
|
|
|
|
|
|
|
|
|
||||
|
Функция Эккли ( n 2 ): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|||
5, 12, 19 |
|
|
|
|
|
1 n |
2 |
|
|
|
|
n |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
f (x) 20 |
e 20 exp 0,2 |
|
|
|
xi |
|
exp |
|
cos2xi . |
||||||||||
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
n i 1 |
|
|
|
|
|
|
n i 1 |
|
|
||||
|
Функция Михалевича: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
6, 13, 20 |
|
|
n |
|
|
|
|
|
ix2 |
|
|
|
|
|
|
|
|
|
||
|
|
|
f (x) (sinxi sin |
|
i |
), для n 2 . |
|
|
||||||||||||
|
|
|
|
|
|
|||||||||||||||
|
|
|
i 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
7, 14, 21 |
Функция Негневицкого: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
f (x) (x |
x3 |
x3)exp(x2 x2 ) (1 x )2 exp(x2 |
(x |
1)2 ) . |
||||||||||||||||
|
||||||||||||||||||||
|
1 |
1 |
2 |
1 |
2 |
|
|
1 |
|
|
|
1 |
2 |
|
||||||
246
ЛАБОРАТОРНАЯ РАБОТА 13
ПРИМЕНЕНИЕ ГЕНЕТИЧЕСКИХ АЛГОРИТМОВ В ЗАДАЧАХ ОПТИМИЗАЦИИ
13.1. Цель лабораторной работы
Получение и закрепление знаний, формирование практических навыков применения генетических алгоритмов к различным задачам оптимизации.
13.2.Краткие сведения из теории
13.2.1.Применение генетических алгоритмов к задаче оптимизации
вычислительной сети
Объектом генетической оптимизации будет служить разветвленная вычислительная сеть (ВС). Основой сети является опорное кольцо, или бэкбон, представляющее собой последовательно соединенные концентраторы. К концентраторам подключаются хосты, которые в свою очередь могут являться маршрутизаторами для подсетей второго уровня.
Каждый хост может быть подключен к любому маршрутизатору. Задачей оптимизации является нахождение такой схемы подключения хостов, при которой трафик на бэкбоне будет минимальным. Расчет трафика на бэкбоне строится на основе статистических данных, накопленных за достаточно большой промежуток времени, позволяющий оценить объем трафика между двумя хостами.
Для оптимизации трафика необходимо решить следующие инженерные задачи:
247
разработать и реализовать систему снятия статистики трафика на бэкбоне, состоящем из концентраторов;
разработать систему представления входных данных для генетического алгоритма (ГА);
разработать и реализовать генетический алгоритм.
<коммутатор/концентратор> – <коммутатор/концентратор>.
В любой ВС имеется т каналов первого типа (по числу узлов) и не более п · (п – 1)/2 – каналов второго типа.
u1 |
s1
s2
u2
q1
s3
u4
s4
u5 |
u5 |
u6 |
s5 |
s6 |
s7
u7 
q2
s8
u8 
q3 |
u9 |
|
s9 |
s10 s11
u10 |
u11 |
Рис. 13.1. Пример ВС с коммутацией
В процессе модернизации ВС изменение топологии представлено следующими действиями: переподключение узлов к другим коммутаторам/концентраторам или прокладка новых каналов связи.
Эффективность каждого нового канала связи оценивается по влиянию на суммарный трафик всех каналов связи. Функцию эффективности
Fl min |
|
|
|
T |
P |
|
|
|
, |
для k 1,...,K. |
|
|
|
|
|||||||
|
|
|
|
k |
k |
|
|
|
|
|
можно пересчитывать многократно для разных вариантов ВС.
Переменная Тk выражает трафик канала k, а переменная Рk выражает максимальную пропускную способность канала. Задача переподключения
249
узлов к другим коммутаторам/концентраторам – это задача разбиения m
рабочих станций на п групп. Для каждой i-й группы имеется ограничение на nimax количества подключенных станций.
Решение задачи переподключения рабочих станций – это процесс направленного перебора вариантов подключения с целью оптимизации.
Размерность задачи велика даже для вычислительной сети среднего размера (до 1000 узлов), поэтому представляется целесообразным решить задачу с помощью генетического алгоритма.
Кодирование решения задачи (хромосомы) может быть следующим.
Вариант разбиения узлов на сегменты, т.е. решение, удобно представлять рядом целых чисел. Пусть все узлы имеют уникальные номера от 1 до m и
упорядочены в соответствии с этими номерами. Позиция i содержит номер коммутатора/концентратора (от 1 до n), к которому подключен узел i.
Пример кодирования топологии ВС, изображенной на рис. 13.1, приведен в табл. 13.1.
Таблица 13.1 – Пример кодирования подключения узов ВС
Коммутатор/концентратор |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
3 |
3 |
3 |
3 |
2 |
Номер узла |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
Для двоичного кодирования номера qi коммутатора/концентратора необходимо: [log2 n] бит, где [] – операция округления в большую сторону.
Для вышерассмотренного примера хромосома с использованием двоичного кодирования приведена в табл. 13.2.
Таблица 13.2 – Хромосома с двоичным кодированием
Хромосома |
01 |
01 |
01 |
01 |
10 |
10 |
10 |
11 |
11 |
11 |
11 |
10 |
Номер гена |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
При таком способе кодирования и при свободном механизме мутаций теоретически возможно появление запрещенных комбинаций,
250
