Дискретно-непрерывная математика. Кн. 0 : Алгоритмы. Ч. Генетические алгоритмы


Vectorize как  On .  Примечание



Download 9,87 Mb.
Pdf ko'rish
bet218/228
Sana20.06.2022
Hajmi9,87 Mb.
#683557
TuriКнига
1   ...   214   215   216   217   218   219   220   221   ...   228
Bog'liq
Algorithms3

Vectorize
как 
On

Примечание.
Для корректного использования опции 
Vectorize
необходимо, что бы функция пригодности допускала 
использованиепроизвольного числа строк. 
С помощью следующего сравнения, выполненного из командной 
строки, можно увидеть эффект увеличения скорости выполнения, 
достигаемого с помощью установки опции 
Vectorize

tic;ga(@rastriginsfcn,20);toc 
elapsed_time = 
4.3660 
options=gaoptimset('Vectorize','on'); 
tic;ga(@rastriginsfcn,20,options);toc 
elapsed_time = 
0.5810 
6.6.16. Минимизация при наличии ограничений с использованием 
функции ga
Пусть необходимо найти минимум простой функции пригодности с 
двумя переменными x1 and x2 


А.Е. Кононюк Дискретно-непрерывная математика 
409 
При условии выполнения следующих нелинейных неравенств и 
ограничений 
Начнем с создания функций пригодности и ограничений. В первую 
очередь, создадим следующий М-файл под именем simple_fitness.m 
function y = simple_fitness(x) 
y = 100 * (x(1)^2 - x(2)) ^2 + (1 - x(1))^2; 
В функции Генетического алгоритма, ga, предполагается, что функция 
пригодности имеет только одно обращение к x, где x имеет столько же 
элементов, что и число переменных решаемой задачи. Функция 
пригодности вычисляет значение функции и возвращает скалярное 
значение в виде одного выходного аргумента y. 
Далее создадим следующий М-файл под именем simple_fitness.m, 
который включал бы в себя вводимые в задачу ограничения 
function [c, ceq] = simple_constraint(x) 
c = [1.5 + x(1)*x(2) + x(1) - x(2); 
-x(1)*x(2) + 10]; 
ceq = []; 
Предполагается, что функция ga имеет функцию ограничений с одним 
входом x, где x имеет столько же элементов, что и число переменных 
решаемой задачи. В функции ограничений вычисляются значения всех 
ограничений типа равенств и неравенств и возвращаются два вектора, 
ceq и c, соответственно. 
Для минимизации функции пригодности, необходимо передать 
указатель функции в функцию пригодности на месте первого аргумент 
функции ga, а так же как определить число переменных на месте 


А.Е. Кононюк Дискретно-непрерывная математика 
410 
второго аргумента. Нижние и верхние границы задаются на месте 
параметров LB и UB соответственно. Кроме того, также необходимо 
передать указатель функции и в функцию нелинейных ограничений. 
ObjectiveFunction = @simple_fitness; 
nvars = 2; % Number of variables 
LB = [0 0]; % Lower bound 
UB = [1 13]; % Upper bound 
ConstraintFunction = @simple_constraint; 
[x,fval] = 
ga(ObjectiveFunction,nvars,[],[],[],[],LB,UB,Constr
aintFunction) 
Warning: 'mutationgaussian' mutation function is 
for unconstrained minimization only;
using @mutationadaptfeasible mutation function. 
Set @mutationadaptfeasible as MutationFcn options 
using GAOPTIMSET. 
Optimization terminated: current tolerance on f(x) 
1e-007 is less than options.TolFun 
and constraint violation is less than 
options.TolCon. 
x = 
0.8122 12.3122 
fval = 
1.3578e+004 
Примечание для задачи минимизации при наличии ограничений 
функция ga изменила мутационную функцию на новую 
@mutationadaptfeasible. Принимаемая по умолчанию функция мутации 
@mutationgaussian подходит только для задач минимизации без 
наличия ограничений 
Решатель Генетического алгоритма обращается с линейными 
ограничениями и границами несколько отличным образом по 
сравнению со случаем с нелинейными ограничениями. Все линейные 


А.Е. Кононюк Дискретно-непрерывная математика 
411 
ограничения и границы выполняются по всему ходу оптимизации. 
Однако функция ga применительно к части поколений может и не 
соблюдать все необходимые нелинейные ограничения. Как только ga 
будет сходиться к некоему решению, то и нелинейные ограничения 
будут выполняться в этом случае. 
Функция ga использует функции мутации и кроссовера в каждом 
поколении для новых индивидуализированных объектов. Функция ga 
выполняет все линейные и связанные ограничения при помощи 
функций мутации и кроссовера, которые генерируют только 
допустимые точки. Например, в предыдущем обращении к команде ga, 
принимаемая по умолчанию функция мутации mutationguassian не 
соблюдает линейные ограничения и, таким образом, вместо нее 
используется функция мутации mutationadaptfeasible. Если принимать 
произвольную функцию мутации, то эта произвольная функция 
мутации должна генерировать только такие точки, которые являются 
допустимыми относительно линейных ограничений и пределов. Все 
кроссоверные функции данного инструментария генерируют такие 
точки, которые удовлетворяют линейным ограничениям и пределам за 
исключением случая с выбором функции crossoverheuristic. 
С помощью функции gaoptimset зададим mutationadaptfeasible в 
качестве функции мутации для выбранной задачи минимизации
options = 
gaoptimset('MutationFcn',@mutationadaptfeasible); 
Далее запустим решатель ga.
[x,fval] = 
ga(ObjectiveFunction,nvars,[],[],[],[],LB,UB,Constr
aintFunction,options) 
Optimization terminated: current tolerance on f(x) 
1e-007 is less than options.TolFun 
and constraint violation is less than 
options.TolCon. 
x = 


А.Е. Кононюк Дискретно-непрерывная математика 
412 
0.8122 12.3122 
fval = 
1.3578e+004 
Теперь с помощью функции gaoptimset построим структуру опций, 
которая будет отбирать функции для двух графических зависимостей. 
Первой функцией графической зависимости будет gaplotbestf, которая 
отображает наилучшую и среднюю оценку семества для каждого 
поколения. Второй функцией графической зависимости будет 
gaplotmaxconstr, которая отображает максимальное нарушение 
заданного ограничения в виде нелинейных ограничений для каждого 
поколения. Так же имеется возможность с помощью опции 'Display' 
получить визуализацию прогресса алгоритма путем отображения 
информации в окне команд. 
options = 
gaoptimset(options,'PlotFcns',{@gaplotbestf,@gaplot
maxconstr},'Display','iter'); 
Перезапустим решатель ga, что даст:
[x,fval] = 
ga(ObjectiveFunction,nvars,[],[],[],[],LB,UB,Constr
aintFunction,options) 
Best max
Stall 
Generation f-count f(x) constraint
Generations 
1 849 14915.8 0 0 
2 1567 13578.3 0 0 
3 2334 13578.3 0 1 
4 3043 13578.3 0 2 
5 3752 13578.3 0 3 
Optimization terminated: current tolerance on f(x) 
1e-009 is less than options.TolFun 


А.Е. Кононюк Дискретно-непрерывная математика 
413 
and constraint violation is less than 
options.TolCon. 
x = 
0.8122 12.3123 
fval = 
1.3578e+004 
Имеется возможность с помощью опции InitialPopulation задать 
стартовую точку минимизации для функции ga. Таким образом, 
функция ga будет использовать индивидуализированный объект из 
опции InitialPopulation в качестве стартовой точки минимизации при 
наличии ограничений. 
X0 = [0.5 0.5]; % Start point (row vector) 


А.Е. Кононюк Дискретно-непрерывная математика 
414 
options = 
gaoptimset(options,'InitialPopulation',X0); 
Далее перезапустим решатель ga.
[x,fval] = 
ga(ObjectiveFunction,nvars,[],[],[],[],LB,UB,Constr
aintFunction,options) 
Best max
Stall 
Generation f-count f(x) constraint
Generations 
1 965 13579.6 0 0 
2 1728 13578.2 1.776e-015 0 
3 2422 13578.2 0 0 
Optimization terminated: current tolerance on f(x) 
1e-007 is less than options.TolFun 
and constraint violation is less than 
options.TolCon. 
x = 
0.8122 12.3122 
fval = 
1.3578e+004 

Download 9,87 Mb.

Do'stlaringiz bilan baham:
1   ...   214   215   216   217   218   219   220   221   ...   228




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish