- •Факультет эа кафедра сау
- •Тема: Разработка программного комплекса, реализующего генетический алгоритм определения параметров регулятора электрогидравлического привода
- •Содержание:
- •2.1 Работа генетического алгоритма……………………………………………..5
- •3.1 Структура автономного электрогидравлического привода………………12
- •1. Описание инструментария Genetic Algorithm Toolbox
- •1.2 Оптимизация функций
- •2.Перечень параметров генетического алгоритма и их влияние на качество работы
- •2.1 Работа генетического алгоритма:
- •2.2 Исходное семейство
- •2.3 Создание следующего поколения
- •2.4 Кроссоверные дочерние значения
- •2.5 Мутационные дочерние значения
- •2.6 Условия останова алгоритма
- •3.Описание модели электрогидравлического привода
- •3.1 Структура автономного электрогидравлического привода
- •4. Алгоритм программы для определения параметров адаптивного регулятора
- •5.Выводы:
- •6.Список литературы:
4. Алгоритм программы для определения параметров адаптивного регулятора
В работе были определены параметры генетического алгоритма, обеспечивающие наилучшие результаты оптимизации для выбранной схемы. Были подобраны параметры адаптивного регулятора с помощью генетического алгоритма.
Шаг 1: На вход подаем хромосому. Специальной записью открываем генетический алгоритм
Шаг 2: Записываем в определенной форме знаменатель
Шаг3: Открываем схему и указываем, где будут изменяться параметры
Шаг4: Параметры подобранные генетическим алгоритмом записываем в схему
Шаг5:Ищем ошибку между эталонным выходом и результатами, полученными с помощью генетического алгоритма.
Программа:
function y=my_ga(T)
str=['[' num2str(T) ' ' '1' ']'];
set_param('sxemka/Transfer Fcn', 'Denominator', str)
[a,b,out]=sim('sxemka');
load Y;
y=mean(abs(yout-out));
В данном примере было взято апериодическое звено
Рис.7.Схема апериодического звена
При помощи генетического алгоритма была подобрана постоянная времени звена T. Далее приведено окно интерфейса генетического алгоритма.
Рис.8.Интерфейс генетического алгоритма
Для сравнения результатов были рассмотрены различные варианты оценивания ошибок, сведенные в таблицу:
№
|
Mean(среднее арифметическое) |
Std(среднеквадратическое отклонение)
|
Nanstd (оценка среднеквадратичного отклон.выборки) |
mad(среднее абсолютное отклонение от среднего значения) |
1
|
1,99124
|
2,00066 |
1,97299 |
1.98808 |
2
|
1,99434
|
1,97887 |
1,98162 |
1.98368 |
3
|
1,98764 |
1,9831 |
1,97598 |
1.98801 |
4
|
2,00398 |
1,98849 |
1,94879 |
1.9879 |
5
|
1,98733
|
1,97433 |
1,9844 |
1.99786 |
6 |
1,9637 |
1,98555 |
1,97252 |
1.97608 |
7 |
2,00152 |
1,98073 |
1,98235 |
1.98052 |
8 |
1,98481 |
1,98518 |
1,98356 |
1.98244 |
9 |
1,97535 |
1,98502 |
1,98167 |
1.9835 |
10 |
1,99293 |
1,98189 |
1,97646 |
1.99077 |
Таблица № 1
Как видно из таблицы, генетический алгоритм работает корректно для всех видов рассмотренных ошибок и подбирает оптимальные коэффициенты.
В процессе работы была взята более сложная схема с двумя апериодическими звеньями.
Рис.9. Схема с двумя апериодическими звеньями
Рис.10. Переходный процесс
Программа для схемы с двумя апериодическими звеньями:
function y=my_ga(T)
str1=['[' num2str(T(1)) ' ' '1' ']'];
str2=['[' num2str(T(2)) ' ' '1' ']'];
set_param('sxemka2/Transfer Fcn1','Denominator', str1),
set_param('sxemka2/Transfer Fcn2','Denominator', str2),
[a,b,out]=sim('sxemka2');
load Y;
y=mean(abs(yout(1:800)-out(1:800)));
С помощью генетического алгоритма были подобраны постоянные времени T1 и T2.Были построены графики, по которым видно, что генетический алгоритм подбирает параметры корректно и близкие к исходным из чего следует, что его можно применять для более сложных и реалистичных схем.
Таблица №2
|
Mean(среднее арифметическое)
|
Std(среднеквадратическое отклонение)
|
Nanstd(оценка среднеквадратичного отклон.выборки) |
mad(среднее абсолютное отклонение от среднего значения) |
||||
|
T1 |
T2
|
T1 |
T2 |
T1 |
T2 |
T1 |
T2 |
1
|
2,15866 |
2,82144 |
2,78325 |
2,19525 |
3,1287 |
1,88798 |
2,16566 |
2,8129 |
2
|
2,85226 |
2,12451 |
2,68733 |
2,21497 |
2,9546 |
2,01898 |
2,95846 |
2,2584 |
3
|
2,34015 |
2,61776 |
2,16853 |
2,79612 |
2,9906 |
2,00492 |
3,00258 |
2,15585 |
4
|
2,31597 |
2,65491 |
2,96332 |
2,03892 |
2,13285 |
3,00145 |
3,2499 |
1,78942 |
5
|
2,85226 |
2,12451 |
2,83254 |
2,81649 |
2,0579 |
2,93812 |
2,95186 |
2,25491 |
6 |
2,85226
|
2,12451 |
2,00315 |
2,9895 |
2,94162 |
2,0412 |
3,0584 |
1,87361 |
7 |
1,92793
|
3,09461 |
2,12854 |
2,69258 |
3,06835 |
1,93942 |
2,99749 |
1,99707 |
8 |
2,86954
|
2,12374 |
2,10815 |
2,88774 |
1,97164 |
2,97665 |
2,91766 |
2,15813 |
9 |
2,1568
|
2,7689 |
2,3005 |
2,86329 |
3,06855 |
1,93942 |
3,17888 |
1,84571 |
10 |
2,3031
|
2,67116 |
2,94825 |
2,06585 |
3,0786 |
2,00315 |
3,05844 |
1,98617 |
Далее приведем несколько графиков для сравнения исходных параметров и параметров, которые подобрал генетический алгоритм.
Среднеарифметическое отклонение между эталонным выходом и результатом работы генетического алгоритма:
Рис.11. Переходный процесс
Среднее абсолютное отклонение от среднего значения между эталонным выходов и результатом работы генетического алгоритма:
Рис.12.Переходный процесс
Оценка среднеквадратичного отклонения выборки:
Рис.13 Переходный процесс
Оценка среднеквадратичного отклонения между эталонным выходов и результатом работы генетического алгоритма:
Рис.14 Переходный процесс
Отклонения начальных коэффициентов и коэффициентов, подобранных генетическим алгоритмом практически минимальны, в дальнейшем будем использовать модель электрогидравлического привода, для которого нужно подобрать два коэффициента для его корректной работы.
Схема электрогидравлического привода:
Рис.15 Адаптивный регулятор электрогидравлического привода
Программа, реализующая подбор коэффициентов с помощью генетического алгоритма:
function e=ga1(K)
EGSP_param
str1=['[' num2str((K(1))) ']'];
str2=['[' num2str((K(2))) ']'];
set_param('EGSP_23_01_11/Subsystem2/R2','Gain', str1),
set_param('EGSP_23_01_11/Subsystem2/k','Gain', str2),
sim('EGSP_23_01_11');
e=mean(abs(Um(1:2000)-Y(1:2000)));
Алгоритм программы:
Шаг 1: На вход подаем хромосому. Специальной записью открываем генетический алгоритм
Шаг2: Открываем параметры, которые необходимо записать для корректной работы схемы.
Шаг 3: Записываем в определенной форме знаменатель
Шаг4: Открываем схему и указываем, где будут изменяться параметры
Шаг5: Параметры подобранные генетическим алгоритмом записываем в схему
Шаг 6: Ищем среднеарифметическое отклонение выхода от входа
Полученные результаты записывает в таблицу.
Таблица №3
-
Mean
(средне арифметическое отклонение)
k
R2
1
2.89065
1.94878
2
2.35616
2.17708
3
1.49655
2.66265
4
2.43947
1.40594
5
2.05684
1.13364
6
2.52374
2.15762
7
3.69106
1.68813
8
2.43326
2.46422
9
2.13478
0.61822
10
2.2229
2,76678
Далее приведен график на котором видно ,что генетический алгоритм подбирает практически оптимальные параметры, для корректной работы схемы.
Рис.17. Переходный процесс
В данной работе была написана программа для поиска параметров электрогидравлического привода. Параметр Um-эталонная модель, Y-работа привода с параметрами, которые подобрал генетический алгоритм.
Программа была распараллелена.
Основная программа для запуска моделирования ЭГП
clc
tic;
[x,fval]=ga(@ga1,2)
options = gaoptimset(@ga);
options.PopInitRange=[0;100]
toc;
T=toc
Алгоритм программы:
Шаг 1:. Специальной записью открываем генетический алгоритм
Шаг2: Открываем параметры, которые необходимо записать для корректной работы схемы. Функции генетического алгоритма, которые необходимо настроить.
Шаг3:Записываем необходимые опции для корректной работы генетического алгоритма
Шаг4: Выполнение программы
Весь листинг программ представлен в Приложение 1 и Приложение 2
Алгоритм параллельной программы:
Первая часть программы отвечает за распараллеливание алгоритма на два компьютера.
Шаг 1:. Специальной записью открываем генетический алгоритм
Шаг2: Открываем параметры, которые необходимо записать для корректной работы схемы.
Шаг3:Записываем первый и второй коэффициент, которые будет необходимо подобрать программе
Шаг 4: Прописываем все пути к необходимым нас схемам и коэффициентам которые нужны для правильного результата.
Шаг5:Открываем самую главную схему
Шаг 6:Вычисляем ошибку выхода от входа.
Результат работы параллельной программы и генетического алгоритма:
В результате совместной работы генетического алгоритма и программы распараллеливания с помощью пакета Matlab, были получены два коэффициента, необходимые для корректной работы электрогидравлического привода
Результат работы программы:
x =
2.3672 1.9092