Modelos, Control y Sistema de Visión

Central     Modelos     Control     Visión     Aplicaciones     Mapa del sitio     Publicaciones     Sobre el autor      

Ejemplos de múltiples salidas en una capa

 

Ejemplo I: Obtener el modelo de la planta III

 

% Estructura de entrada-salida:

% Se pretende crear un modelo de la forma

% y1(t)= f1[y1(t-1), y2(t-1), y1(t-2), y2(t-2),

%              u1(t), u2(t)]
% y2(t)= f2[y1(t-1), y2(t-1), y1(t-2), y2(t-2),

%              u1(t), u2(t)]

% Se generan los datos utilizando el modelo
% Se crean las matrices para la red
>> x=xudx(:,1:6)';

>> y=xudx(:,7:8)';

% Se determinan los intervalos de entrada

>> interv=minmax(x);

% Se define el número de salidas

>> numsal=2;

% Se define el factor de aprendizaje

>> fa=0.01;

% Se define el filtro lineal

>> net=newlin(interv, numsal, [0], fa);

% Se verifica número de entradas

>> net.inputs{1}

size: 6

% Se verifica número de salidas

>> net.outputs{1}

size: 2

% Se verifica valor de los pesos, que debe ser:

% IW=[numsal,nument]=[2, 6] y

% b=[1,numsal]=[0, 2]

>> net.IW{1}
ans =
0 0 0 0 0 0
0 0 0 0 0 0

>> net.b{1}
ans =
0
0

% Se realizará procesamiento por lotes (train)

>>net.trainParam.epochs = 5000;   % Épocas

>>net.trainParam.goal = 0.01;        % Error deseado

>> net.trainFcn='traingd';              % Entrenamiento 

                                                % por gradiente

 % Se entrena la red

>> net = train(net,x,y);

% Se visualizan resultados

>> ynet=sim(net,x)';

>> y=y';

>> plot(y(:,1))          % Salida 1
>> hold on
>> plot(ynet(:,1),'g')

% Incluyendo el error:

% >> err1=y(:,1)-ynet(:,1); plot(err1);

% >> err2=y(:,2)-ynet(:,2); plot(err2);

% Se verifican los parámetros del filtro

>> net.IW{1}
1.1120 0.4014 -0.6451 -0.3868 1.4313 -0.6267
-0.1575 -0.2305 -0.0873 0.2244 0.8708 0.5734

>> net.b{1}
-0.1135
0.0705

% Núcleo estimador identificado 

% y1(t)= 1.11y1(t-1)+0.4y2(t-1)-0.6y1(t-2)

%           -0.3y2(t-2)+1.4u1(t)-0.6u2(t)-0.11

% y2(t)= -0.1y1(t-1)-0.2y2(t-1)-0.08y1(t-2)

%           +0.2y2(t-2)+0.8u1(t)-0.5u2(t)+0.07

    

 

 

 

 

  

  

Ejemplo II: Obtener el modelo de la planta IV

 

% Estructura de entrada-salida:

% Se pretende crear un modelo de la forma

% y1(t)= f1[y1(t-1), y2(t-1), u1(t-1), u1(t), u2(t)]
% y2(t)= f2[y1(t-1), y2(t-1), u1(t-1), u1(t), u2(t)]
% Se generan los datos utilizando el modelo

% Se crean las matrices para la red
>> x=xudx(:,1:5)';
>> y=xudx(:,6:7)';

% Se determinan los intervalos de entrada

>> interv=minmax(x);

% Se define el número de salidas

>> numsal=2;

% En este caso se cambia la función de activación

% de la capa 1 (2 neuronas)

>> funact={'logsig'};

% Se define la red, entrenamiento: gradiente

>>net=newff(interv, numsal, funact, 'traingd'); 

% Forma actualizada de llamar la función

>> net=newff(x, y, numsal, funact, 'traingd');

% Se verifica los parámetros de entrenamiento

>> net.trainParam
epochs: 100
goal: 0
lr: 0.0100
max_fail: 5
min_grad: 1.0000e-010
show: 25
time: Inf

% Se alteran algunos de ellos

>>net.trainParam.epochs = 20000;   % Épocas

>>net.trainParam.goal = 0.001;        % Error deseado

>>net.trainParam.lr = 0.1;               % fa inicial

% Se entrena la red, alterando parámetros

% de entrenamiento según resultados

>> net = train(net,x,y);

% Se visualizan resultados basado en:

>> ynet=sim(net,x)';

>> y=y';

% Para ver los errores

>> error=y-ynet

% Se verifican los parámetros del filtro

>> net.IW{1}
1.0186 -0.0079 -0.4359 0.4366 -0.0135
-0.2747 1.2254 -0.3004 0.3061 0.0069

>> net.b{1}
-0.0017
-0.0201

% La función de salida es la equivalente de evaluar el

% anterior filtro lineal con ganancia como argumento

% de la función logsig.