Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЗ Коваль, 8391..docx
Скачиваний:
6
Добавлен:
09.02.2015
Размер:
1.77 Mб
Скачать

Объект управления (оу).

Для решения необходимых задач в качестве ОУ рассмотрим робот-манипулятор, целью которого является перемещение в заданную точку. На рисунке 1 представлен двухзвенный робот-манипулятор.

Следующая математическая модель описывает процесс перемещения манипулятора:

(1)

(

, (4)

Где,

[ɷ1, ɷ2] - Угловая скорость звеньев [1,2].

α – угол локтя.

θ - Угол звена 1 по отношению к своему первоначальному положению.

[Q1, Q2] - механизм автоматического управления крутящего момента на [плечо, локоть].

[m1 m2] - массы [звено 1, звено 2 + масса нагрузки].

[l1, l2] – длины звена 1 и 2.

а - расстояние от локтя до центра масс [звена 2+ массы нагрузки].

J11 = J1 + m2 (l1)2,

J1 – момент инерции звена 1 к плечу.

J12 = m2l1a ,

J22 – момент инерции (звена 2 + массы нагрузки) к локтю.

Удобно, для численного интегрирования, представить уравнения 1 и 2 в виде:

где,

Выведем из имеющихся уравнений (5) и (6) функцию для обучения нейронной сети, при условии, что Q1=Q2=0.

На рисунке 2 представлена модельОУ, построенная в среде Matlab/Simulink.

Рисунок 2 - Модель ОУ.

2. Моделирование оу с помощью инс.

Многослойная нейронная сеть, являющаяся одной из базовых архитектур нейронных сетей, представлена на рисунке 4. В каждом слое может быть различное количество элементов. Нейроны выходного слоя принимают синоптические сигналы от нейронов предыдущего слоя. Нейроны в пределах одного слоя не соединяются между собой.

Рисунок 3 – Статическая многослойная нейронная сеть

Моделирование инс.

Двумя основными этапами моделирования ИНС являются: создание структуры ИНС и её обучение.

Для создание структуры ИНС была написана функция «makenn».

М-файл «makenn_new» - создает структуру нейронной сети.

function [fnn, w, wtxt] = makenn_new(x,Ny,N1)

% С помощью функции получаем зависимость У от Х

% x = имена входов нейронной сети

% Ny = количество выходов

% N1 = число нейронов первого слоя

% fnn = функция расчета выхода сети

% w = вектор имен параметров нейронной сети

%% Расчет выхода первого слоя f1nn

%вход - вектор х, выход - вектор y1

nx1 = size(x(:),1);

w = cell(1,N1*nx1);%{}

y1(1:N1) = sym('0');%zeros(N1,1);

k = 1;

for i = 1 : N1

%вход Х от 1 до Nx

%выход y1 i-тое

%добавляем смещение w1i0

w1i0 = ['w1'int2str(i) '0'];

s = sym(w1i0);

%w{end + 1} = w1i0;

w{k} = s;

wtxt{k} = w1i0;

k = k + 1;

for j = 1 : nx1

%обозначим параметр настройки сети,

%соответствующий весу j-того входа в i-том нейроне

%первогослоя w1ij

w1ij = ['w1'int2str(i) int2str(j)];

%w{end + 1} = w1ij;

w{k} = sym(w1ij);

wtxt{k} = w1ij;

k = k + 1;

s = s + x(j) * sym(w1ij);

end

%выход i-того нейрона первого слоя

y1(i) = 1/(1+exp(-s));

end

ny1 = size(y1(:),1);

fori = 1 : Ny

w2i0 = ['w2'int2str(i) '0'];

s = sym(w2i0);

w{end + 1} = s;

wtxt{end + 1} = w2i0;

for j = 1 : ny1

%обозначим параметр настройки сети,

%соответствующий весу j-того входа в i-том нейроне

%первогослоя w1ij

w2ij = ['w2'int2str(i) int2str(j)];

w{end + 1} = sym(w2ij);

wtxt{end + 1} = w2ij;

s = s + y1(j) * w{end};

end

%выход i-того нейрона выходного слоя

fnn(i) = s;%

end

end

Основным требование обучения является наличие эталонной выборки обучения. Для этого сформируем эталонную матрицу входа (Xw(строки – входные переменные, столбцы - выборка)) и выхода(Yw):

(11)

(12)

Ключевыми вариационными параметрами при настройке являются параметры, отвечающие:

  • за количество итераций обучения:

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

  • за количество нейронов в первом слое:

Данный параметр аналогичен с предыдущим: чем больше, тем лучше.

  • за коэффициент гамма

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

Чтобы проверить работоспособность алгоритма обучения нейронной сети, в качестве примера взяли функцию :

Построим функцию ОУ.

J11=7/3;

J12=3/2;

J22=4/3;

w2=0;

a=[-1:0.1:1]

w1=[0.1:0.1:2]

[X,Y]=meshgrid(a,w1);

delta=J11.*J22-J12.*J12.*cos(X).*cos(X);

f=(J12.^2*sin(X).*(cos(X).*Y.^2))./delta

surf(X,Y,f);

xlabel('a')

ylabel('w1')

zlabel('f(a,w1)')

title('График функции для аппроксимации')

График функции, которую необходимо аппроксимировать представлен на рисунке 4.

Рисунок 4 – График функции ОУ.

Для обучения функции написан m-файл «Approx.m».

clear all

close all

clc

global dfdw

syms x1 x2 g1 c1;

x = [x1 x2];

syms y1;

y = [y1];

z = 1; % количество выходов (размер вектора у)

[fnn,w,wtxt] = makenn_new(x,z,5); % Создаем структуру, 5- количество нейронов в слое

for i = 1 : size(w(:),1)

wv(i) = w{i};

end

dfdw = jacobian(fnn,wv(:));

% функция обучения

n=50;%количество итераций

gamma=0.01;

xw=[-5:4:4 ; -3:4:6]% выборка

m=size(xw(1,:),2);% количество выборок

yw=[(xw(1,:).*xw(1,:).*xw(2,:))] % здесь задается функция аппроксимации

W=randn(size(w));%начальные условия алгоритма настройки

for j = 1:n % по шагам итерации

gradEsj=0;

Es(j)=0;

OtnEs(j)=0;

for i = 1:m % количество выборок, по выборкам бегаем

% здесь расчитывается выход нейронной сети

fnni = double(subs(fnn,[{x(1),x(2)} w],[{xw(1,i),xw(2,i)} num2cell(W)]));

dfdw1i = double(subs(dfdw(1,:),[{x(1),x(2)} w],[{xw(1,i),xw(2,i)} num2cell(W)]));

gradEsj = gradEsj + (fnni-yw(1,i))*dfdw1i;

Es(j)=Es(j)+0.5*(fnni-yw(1,i))^2; %расчетошибки

if yw(1,i)~=0

OtnEs(j)=OtnEs(j)+(abs(fnni-yw(1,i)))/yw(1,i);

end

end

OtnEs(j)=OtnEs(j)/m;

OtnEs(end)

Es(j)

W=W-gamma*gradEsj;

j

end

fnni_final =subs(fnn,w,num2cell(W));

Эмпирическим путем было получено, что при gamma равной 0.1 ошибка настройки стоит в одних и тех же пределах, так и не достигнув экстремума. Таким образом, можно сделать вывод, что параметр gamma должен быть меньше 0.1.

На рисунке 5 изображен график абсолютной ошибки. График относительной ошибки представлен на рисунке 6.

Рисунок 5 – График абсолютной ошибки аппроксимации при 50 итерациях

Рисунок 6- График относительной ошибки аппроксимации при 50 итерациях.

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

Поверхность, полученная в результате аппроксимации нелинейной функции ИНС за 50 итераций, представлена на рисунке 7.

Рисунок 7 – Поверхность аппроксимированная ИНС

Совместим истинную поверхность и поверхность, полученную на базе ИНС. На рисунке 8 представлен график поверхностей, полученных путем наложения, при обучении ИНС за 50 итераций.

Рисунок 8– Совмещение поверхностей при 50 итерациях

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

Далее был проведен эксперимент в увеличении количества итераций до 500, 1000 и 3000.

График изменения абсолютной ошибки представлен на рисунке 9. График изменения относительной ошибки на рисунке 10.

Рисунок 9. – График изменения абсолютной ошибки аппроксимации. Число итераций 3000.

Рисунок 10– График изменения относительной ошибки аппроксимации. Число итераций 3000.

Рисунок 11 – Поверхность аппроксимированная ИНС при 500 итерациях.

Рисунок 12- Графики совмещения поверхностей за 500 итераций.

Рисунок 13- Поверхность аппроксимированная ИНС за 1000 итераций.

Рисунок 14 – Графики совмещения поверхностей при 1000 итерациях.

Рисунок 15– Поверхность аппроксимированная ИНС за 3000 итераций.

Рисунок 16 – Графики совмещения поверхностей при 3000 итерациях.

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

Как видно из графика 16 при 3000 итераций идеальная поверхность, и аппроксимируемая все больше приближаются друг к другу, а из рисунка 10- график относительной ошибки уменьшается и стремится к нулю Из этого делаем вывод, что алгоритм обучения нейронной сети работает правильно.

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