Составители:
Рубрика:
221
F2(i) = test(x2(i)); % новое значение целевой функции
Fd(i) = F2(i) – F1; % приращение целевой функции
P(i) = 0;
if Fd(i) < 0 x1 = x2(i); F1 = F2(i); elseif Fd(i) >= 0 P(i) = 1/exp(Fd(i)/K*Tm);
end;
if P(i) > rand(1) x1=x2(i); % обновление точки поиска
F1 = F2(i); % обновление целевой функции
end;
Tm=Tm–2.5; % уменьшение искусственной температуры
end;
>> figure; plot(x2); grid; % график текущей точки поиска
>> figure; plot(F2); grid; % график текущего значения целе-
вой функции
>> figure; plot(Fd); grid; % график приращения целевой
функции
В примере использована следующая тестовая функция:
function s=test1(x)
s=20+x.^2+10.*(cos(2*pi.*x))
end
Границы поиска определяются заранее: x ∈ [– 10, 10].
8.4. Генетический алгоритм
Генетический алгоритм (ГА) использует базовые представле-
ния об эволюции как о циклическом процессе смены популяций,
в котором наибольшее потомство дают наиболее приспособленные
особи, а новые свойства индивидуумов возникают при мутациях.
Популяция состоит из хромосом, кодирующих решение некоторой
задачи оптимизации.
Достаточно подробное изложение принципов использования ГА
в MatLab можно найти в [51]. MatLab имеет в своем составе паке-
ты расширения (toolbox) Simulink и Control System toolbox. Пакет
Simulink позволяет моделировать сложные нелинейные объекты
управления и строить ИМ, учитывающие все значимые особенности
объекта. Однако стандартные процедуры синтеза в Control System
toolbox, такие, как частотный или модальный синтез, ориентиро-
ваны на линейные системы. Синтез нелинейных систем управле-
ния (нейроконтроллеров) в общем случае связан с необходимостью
оптимизации параметров регулятора.
Страницы
- « первая
- ‹ предыдущая
- …
- 219
- 220
- 221
- 222
- 223
- …
- следующая ›
- последняя »