Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР_MatLab.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
757.25 Кб
Скачать

Задание на проведение лабораторной работы.

Данная лабораторная работа представляет собой первую часть исследований систем с fuzzy-регуляторами и носит ознакомительный характер. Предполагается, что студенты вдумчиво рассмотрят различные примеры построения систем с этим типом регуляторов и попытаются улучшить систему в вышеприведенном примере. При проведении данной лабораторной работы необходимо выполнить следующее:

  1. В командной строке Matlab задайте команду sltank. Посмотрите демонстрационный пример регулирования уровня жидкости в резервуаре с помощью fuzzy-регулятора. «Проиграйте» с другим демонстрационным примером juggler. Посмотрите систему регулирования неустойчивого маятника slep, систему регулирования положения шарообразного тела на наклонной доске slbb.

  2. В командной строке Matlab задайте команду fuzzy. При помощи редактора fuzzy-логики попытайтесь построить регулятор, приведенный в рассмотренном примере. Не забудьте сохранить на диске и в рабочей области Matlab разработанный Вами регулятор под каким-либо именем.

  3. Если, например, fuzzy-регулятор сохранен в рабочей области под именем lab_fr, то могут быть весьма полезными такие команды, как plotfis(lab_fr), plotmf(lab_fr, ‘input’,1), plotmf(lab_fr,‘input’,2), plotmf(lab_fr,‘output’,1), fuzzy(lab_fr), mtedit(lab_fr), ruleedit(lab_fr), ruleview(lab_fr), surfview(lab_fr). Проверьте, что делает каждая из этих команд.

  4. В Simulink постройте схему по рис. 9 и, совершенствуя регулятор, добейтесь хотя бы такого качества как показано на рис. 10.

Содержание отчета.

В отчете по лабораторной работе необходимо привести графики функций принадлежности входных и выходной переменной регулятора, правила принятия решения регулятором, структурную схему системы с регулятором и графики переходных процессов в системе с удовлетворительным качеством, а также выводы по работе.

Контрольные вопросы.

  1. Дать понятие нечетких множеств.

  2. Объяснить область применений fuzzy-регуляторов.

  3. Объяснить назначение функций: plotfis, plotmf, mtedit, ruleedit, ruleview, surfview.

Лабораторная работа №8

Тема:

Построение регуляторов на основе нейросетей. Использование инверсной модели объекта в качестве нейрорегулятора.

Цель:

Приобретение практических навыков проектирования и технической реализации регуляторов на основе нейронных сетей (нейрорегуляторов), а также изучение и апробирование на моделях различных способов управления линейными и не линейными объектами.

Краткие теоретические сведения.

Математическое представление модели одиночного нейрона с R входами показано на рис. 11.

Рисунок 11 - Математический нейрон

Вектор-столбец P=[p(1); p(2); … p(R)] представляет собой входы нейрона, b – смещение (базу), вектор-строка W=[w(1,1); w(1,2); … w(1,R)] – весовые коэффициенты, так что на входе нейрона формируется величина a=F(W·p+b). В качестве функции преобразования F в модели нейрона можно использовать любую дифференцируемую функцию. Наиболее часто используемые функции преобразования приведены в таблице 5. Нейронная сеть может содержать S нейронов, непосредственно связанных с входами (первый слой нейронов), один или несколько скрытых слоев и слой нейронов, непосредственно связанных с выходами нейросети. На рисунке 12 показана структура нейросети, в которой имеется два слоя нейронов. В технической литературе такую сеть именуют трехслойным персептроном (чувствительные элементы, формирующие входы Р, образуют еще один слой).

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

Рисунок 12 – Структура трехслойного персептрона

Для практического использования нейросети необходимо выполнение следующих шагов:

  1. инициализация нейросети;

  2. тренировка нейросети;

  3. моделирование нейросети.

В первой части лабораторной работы необходимо изучить средства Matlab, чтобы реализовать эту последовательность.

Таблица 5. Часто используемые функции преобразований.

Обозначение

График

Функции и ее производная

Matlab-

функция

Log-sigmoid

logsig

Tangens-sigmoid

tansig

Lineare

purelin

а). Инициализация нейросети в Matlab осуществляется функцией initff, общий формат которой следующий:

[w1, b1, w2, b2, …] = initff(P,S1,‘F1’,…Sn,‘Fn’)

где Р – вектор входной последовательности сигналов;

Si – количество нейронов в i-м слое;

Fi – функция преобразования у нейронов i-го слоя (logsig, tansig, purelin);

wi – матрица весовых коэффициентов нейронов i-го слоя;

bi – вектор-столбец смещения (базы) нейронов i-го слоя.

Вместо Sn – количество нейронов в выходном слое может быть использован вектор выходной последовательности нейросети Т; в этом случае формат команды будет следующим:

[w1, b1, w2, b2, …] = initff(P,S1,‘F1’,…Т,‘Fn’)

б). Тренировка нейросети осуществляется функциями trainbp, trainbpx, trainlm, наиболее быстро работающей из которых является trainlm, формат которой приведен ниже:

[w1, b1, w2, b2, … TE, TR] = trainlm(w1, b1, F1, w2, b2, F2, … P, T, TP)

где Р – вектор входной последовательности сигналов;

Fi – функция преобразования у нейронов i-го слоя (logsig, tansig, purelin);

wi – матрица весовых коэффициентов нейронов i-го слоя;

bi – вектор-столбец смещения (базы) нейронов i-го слоя.

T – вектор выходной последовательности нейросети;

– вектор строка параметров тренировки:

ТР(1) – число итераций между выводимыми на экран; по умолчанию 25.

ТР(2) – максимальное количество итераций; по умолчанию 1000.

ТР(3) – желаемая сумма квадратов ошибки между выводом сети и

вектором цели; по умолчанию 0,02.

ТР(4) – минимальное значение градиента; по умолчанию 0,0001.

ТР(5) – начальное значение параметра тренировки MU;

по умолчанию 0,001.

ТР(6) – коэффициент увеличения MU; по умолчанию 10.

ТР(7) – коэффициент уменьшения MU; по умолчанию 0,1.

ТР(8) – максимальное значение MU; по умолчанию 1е 10.

При тренировке сети, как правило, приходится задавать только первые три значения вектора ТР, а остальные значения устанавливаются по умолчанию.

в). Моделирование нейросети проводится на проверочной последовательности входных сигналов, для которых известна выходная последовательность сети Т, с целью проверки соответствия выхода сети вектору цели. Этот шаг выполняется функцией simuff, общий формат которой приведен ниже:

[A1, A2, …] = simuff(P,w1,b1,‘F1’,…wn,bn,‘Fn’)

где A1, A2 – вектора выходных последовательностей нейронных слоев.

Пример получения модели объекта в виде нейрональной сети.

Пусть объект описывается нелинейными дифференциальными уравнениями следующего вида:

В данном случае вообще-то неважно, как представлен объект. Важно, что у него есть вход u и выход y, и они могут быть как-то измерены и записаны. Входной сигнал u сформируем следующим образом:

>> T=0:.1:80; U=prs(length(T),.1,.98);

Simulink модель объекта представлена на рис. 13.

В результате моделирования получаем запись выхода объекта у. Поскольку объект описывается дифференциальными уравнениями третьего порядка, его нейрональную модель будем отыскивать в виде y(k)=f(y(k-1), y(k-2), u(k), u(k-1)). Другими словами, входами нейросети должны быть y(k-1), y(k-2), u(k), u(k-1), а ее входом – y(k).

Рисунок 13-Модель нелинейной системы

% формируем вектор входной последовательности Р

>> u1=u;

>> u2=[0;u(1:length(u)-1)];

>> f1=[0;y(1:length(y)-1)];

>> f2=[0;0;y(1:length(y)-2)];

>> P=[u1’;u2’;f1’;f2’];

% формируем вектор выходной последовательности Т

>> T=y’;

% Инициализация нейросети

>> [w1,b1,w2,b2] = initff(P,6,‘tansig’,1,‘purelin’);

% Задаем параметры тренировки

>> tp=[10 300 1e-6];

% Тренируем сеть…

>> [w1,b1,w2,b2] = trainlm(w1,b1,‘tansig’,w2,b2,‘purelin’,P,T,tp);

% После тренировки осуществляется контроль на тренировочных данных

>> ynn = simuff(P,w1,b1,‘tansig’,w2,b2,‘purelin’);

>> plot(t,ynn,’r’,t,y,’k’);

% … и обязательно проведение контроля на проверочных данных

% Для этого сформируем новую входную последовательность, промоделируем

% систему с целью поучения выходных данных, и проверим, что выдаст нейросеть.

>> T=0:.1:80; U=prs(length(T),.1,.98);

% …и моделируем объект. После чего –

>> u1=u;

>> u2=[0;u(1:length(u)-1)];

>> f1=[0;y(1:length(y)-1)];

>> f2=[0;0;y(1:length(y)-2)];

>> P=[u1’;u2’;f1’;f2’];

>> ynn = simuff(P,w1,b1,‘tansig’,w2,b2,‘purelin’);

>> plot(t,ynn,’r’,t,y,’k’)

На рисунке 14 представлены графики отклика объекта и нейросети на одну и ту же выходную последовательность u(t).

Рисунок 14 - Отклик нейросети и объекта управления на заданное управление u(t)

Инверсивная модель объекта. С помощью нейросети удается получить инверсную модель объекта, т.е. нейросеть, выходом которой является управляющее воздействие u(k), необходимое для получения наперед заданного значения регулируемой величины y(k+1):

u(k)=g(y(k+1), y(k), y(k-1), …, y(k-n+1), u(k-1), …, u(k-m)).

При тренировке нейросети и использовании инверсной модели объекта как регулятора в качестве y(k+1) принимают задающее воздействие r(k+1) как показано на рис. 15.

Задание на лабораторную работу. Для одного из объектов управления, заданных нижеприведенными уравнениями, построить прямую и инверсную модели на основе нейросетей. Проверить качество регулирования объекта для случая использования инверсной модели как регулятора.

Для моделирования объекта используйте Simulink-модель, причем решение уравнений необходимо проводить с фиксированным шагом, равным периоду дискретности Т0 = 0.1…0.4с.

Рисунок 15 - Инверсная модель в качестве регулятора