Contents

clear,close all,clc

Cargar valores de entrada y salida del sistema.

load CIP_01_2022.mat
%Identificar la FDT
%Inicializacion de parametros del AG
dmin=[0 -1 -1 -1];
dmax=[1 1 1 1];
Ni=length(r); %N de genes
%Ni=40*Ng; %# de individuos de la poblacion
Ne=2;
Ngen=200*Ni; %# total de generaciones
Pc=0.9;
Tm=1; %tamaño de la mutacion
Pm=1;%Probabilidad de mutacion
%Datos de entrada-salida.
%r
ts=1.2; %periodo de muestreo


tstcp=10;

%y=lsim(gz,r,t);
figure;
plot(t,[r y]);
legend('r','y');
ylim([-2 2]);
drawnow;
data.t=t;
data.y=y;
data.r=r;
data.ts=ts;

Algoritmo genético asociado a la identificación y ordenamiento

tic
[indop,Fop]=agFDT(@fitness,dmin,dmax,Ni,Ne,Ngen,Pc,Pm,Tm,data);
toc
%Ordenamos la poblacion
iop=indop(end,:);
Elapsed time is 53.983220 seconds.

Seleccion del valor de adaptacion optimo

fop=Fop(end)
y;
% resultados
%a=iop(1);b=iop(2);ca=iop(3);c=iop(4);
%gmz=tf([a b],[1 c d],ts)
%gms=d2c(gmz,'zoh')
%ym=lsim(gmz,r,t);
%figure, plot(t, [r y ym]); legend('r(t)', 'y(t)','ym(t)');
%figure, step(gs, gmz), legend('G(s)', 'G(z)');
fop =

    0.9467

Resultados de la funcion de transferencia identificada.

a=iop(1);
b=iop(2);
c=iop(3);
d=iop(4);
gzm=tf([a b],[1 c d],ts)
gsm=d2c(gzm,'zoh') % zoh es mantenedor de orden cero
ym=lsim(gzm,r,t);
gzm =
 
      0.332 z + 0.2659
  ------------------------
  z^2 - 0.3601 z - 0.04523
 
Sample time: 1.2 seconds
Discrete-time transfer function.

Warning: The model order was increased to handle real negative poles. 

gsm =
 
     0.1651 s^2 - 1.03 s + 6.909
  ---------------------------------
  s^3 + 4.511 s^2 + 13.09 s + 6.872
 
Continuous-time transfer function.

Se muestran los resultados de r, y, ym.

figure;
plot(t,[r y ym]); %Se muestran los resultados de r y ym, al mismo tiempo
legend('r(t)','y(t)','ym(t)');
%figure, step(y,gzm)
%legend('gz','gzm');