Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Глущенко_laba3

.doc
Скачиваний:
62
Добавлен:
16.04.2015
Размер:
144.38 Кб
Скачать

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

Изучение принципов динамического обучения нейронных сетей на примере решения задачи управления

Цель работы: создать нейронную сеть (НС), реализовать ее и алгоритм ее обучения в виде s-функции и интегрировать полученную систему в схему управления нагревательной печью.

Теоретическое введение

В настоящее время в промышленности в целом и в горно-металлургической отрасли в частности (особенно в России) несмотря на большое количество разработок в области адаптивного и оптимального регулирования управление технологическими процессами в подавляющем большинстве случаев осуществляется с помощью ПИД регуляторов [1] (рис.1). Однако системы управления, построенные на таких принципах, являются детерминированными и не учитывают нелинейность реальных объектов управления в указанной области. Это приводит к снижению качества регулирования, увеличению времени и затрат на производство продукции.

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

На этапе первичной автоматизации производств учет такого рода нелинейностей не являлся критичным, поскольку сам факт внедрения ПИД регуляторов и микроконтроллерной техники позволял добиться значительного экономического эффекта. Однако на сегодняшний день достигнута зона насыщения логистической кривой развития АСУ [1], и обычная замена компьютеров на более мощные уже не приносит желаемого эффекта. Тем самым возникает необходимость учета нелинейностей объектов управления.

Рис.1 Схема управления на основе ПИД регулятора

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

Для решения подобного рода задач в последнее время достаточно часто применяются нейронные сети. Это связано с тем, что нейронные сети обладают универсальными аппроксимационными свойствами и способностью к обучению, что придает адаптивные свойства нейросетевым системам управления.

Наиболее простой в реализации является последовательная схема нейроуправления [2] (рис.2). В рамках такой схемы нейронная сеть заменяет используемый регулятор и выдает управляющее воздействие на исполнительный механизм.

Рис.2. Схема последовательного нейросетевого управления, где y* - сигнал задания, y – выход объекта, e – ошибка по заданию, u – управляющее воздействие

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

Для этих целей применим метод обратного распространения ошибки.

Коррекция всех весовых коэффициентов:

(1)

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

Для выходного слоя:

(2)

- выходной сигнал нейрона номер j в выходном слое, - ожидаемый выходной сигнал на данном слое, - значение производной функции активации текущего слоя для данного нейрона.

Для остальных слоев:

(3)

Корректировка весовых коэффициентов:

(4)

Для моделирования в matlab simulink необходимо создать s-функцию, реализующую нейронную сеть и метод ее обучения, а затем указать имя этой функции в соответствующем блоке S-function.

S-функция в общем виде представляет собой набор подфункций:

% объявление s-функции, изменения не требует

function [sys,x0,str,ts,simStateCompliance] = sfuntmpl(t,x,u,flag)

switch flag,

case 0,

[sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes;

case 1,

sys=mdlDerivatives(t,x,u);

case 2,

sys=mdlUpdate(t,x,u);

case 3,

sys=mdlOutputs(t,x,u);

case 4,

sys=mdlGetTimeOfNextVarHit(t,x,u);

case 9,

sys=mdlTerminate(t,x,u);

otherwise

DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag));

end

% инициализация s-функции, здесь следует указать количество входов и выходов s-функции

function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes

sizes = simsizes;

sizes.NumContStates = 0;

sizes.NumDiscStates = 0;

sizes.NumOutputs = 1; % количество выходов

sizes.NumInputs = 6; % количество входов

sizes.DirFeedthrough = 1;

sizes.NumSampleTimes = 1; % at least one sample time is needed

sys = simsizes(sizes);

x0 = [];

str = [];

ts = [1 0];

simStateCompliance = 'UnknownSimState';

% не требует изменений

function sys=mdlDerivatives(t,x,u)

sys = [];

% не требует изменений

function sys=mdlUpdate(t,x,u)

sys = [];

% в этой части указывается код, определяющий логику работы s-функции

function sys=mdlOutputs(t,x,u)

sys = [];

% не требует изменений

function sys=mdlGetTimeOfNextVarHit(t,x,u)

% не требует изменений

sampleTime = 1; % Example, set the next hit to be one second later.

sys = t + sampleTime;

% не требует изменений

function sys=mdlTerminate(t,x,u)

sys = [];

Ход работы.

  1. Создание нейронной сети

net=newff([0 300;0 300;0 300;0 300;0 100],[15 1],{'tansig','purelin'});

IW=net.iw{1};

LW=net.lw{2};

B1=net.b{1};

B2=net.b{2};

net – нейронная сеть, IW – матрица весовых коэффициентов для скрытого слоя, LW – матрица весовых коэффициентов для выходного слоя, B1 – вектор смещений для скрытого слоя, B2 – вектор смещений для выходного слоя.

Переменные, объявленные внутри s-функции, являются локальными для нее. Переменные, касающиеся нейронной сети (указанные выше), должны храниться в рабочей области Matlab и быть доступными для s-функции на каждом шаге моделирования.

Для этих целей при объевлении переменных перед из имененм пишется идентификатор global.

global net IW LW B1 B2;

net=newff([0 300;0 300;0 300;0 300;0 100],[15 1],{'tansig','purelin'});

IW=net.iw{1};

LW=net.lw{2};

B1=net.b{1};

B2=net.b{2};

Результатом является необученная нейронная сеть. Теперь следует реализовать алгоритм ее обучения.

2) Реализация s-функции

Пример реализации нейронной сети в разделе mdlOutputs (без обучения).

% в этой части указывается код, определяющий логику работы s-функции

function sys=mdlOutputs(t,x,u)

global IW LW B1 B2;

global HO LO;

P=[u(1) u(2) u(3) u(4) u(6)];

HO=tansig(P*IW'+B1');

LO=purelin(HO*LW'+B2);

%

% здесь следует вставить реализацию метода обратного распространения ошибки

%

sys = [LO];

В переменной u хранится вектор входов в s-функцию, получаемый с помощью блока mux Количество элементов вектора совпадает с количеством входных сигналов.

В векторе sys указываются последовательно выходы нейронной сети. Выходы должны быть скалярами. Количество входов и выходов должно совпадать с количеством, указанным в секции mdlInitializeSizes в переменных sizes.NumOutputs, sizes.NumInputs.

Выход LO будет сигналом управления для объекта управления.

Затем следует реализовать алгоритм обратного распространения ошибки, используя матричное исчисление. Для каждой функции активации в библиотеках Matlab реализована соответствующая функция вычисления производной: dtansig, dlogsig. Для линейной функции активации производная равна 1.

Далее необходимо реализовать схему управления.

3) Реализация схемы управления

Рис.3. Реализация последовательной схемы нейроуправления

Задание представляет собой последовательность ступеней, реализованную с помощью блоков step (100->300->200->400 градусов). Каждый новый step активизируется через 50000 шагов моделирования после предшествующего.

Рис.4. Реализация блока задания

На нейронную сеть следует подавать задание, задержанные сигналы по выходу объекта и задержанный сигналы из канала управления. Шаг задержки и шаг моделирования – 1с.

Задержка на объекте – 63 с. Saturation приводит сигнал в интервал от 0 до 100. Ошибка в канал управления – 0.5.

4) Проведение моделирования

В результате моделирования выход объекта управления должен повторять задание.

Рис.5. Результаты моделирования

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

  1. Создать нейронную сеть, s-функцию, реализовать метод обратного распространения ошибок, собрать схему для моделирования.

  2. Задать начальные условия для моделирования и провести моделирование. Результаты представить в отчете.

  3. Увеличить амплитуду ошибки в канале управления в 10 раз и провести моделирование. Результаты представить в отчете.

  4. Внести в объект управления нелинейную составляющую и провести моделирование. Результаты представить в отчете.

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

  6. Подготовить отчет о выполненной работе.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]