-
Notifications
You must be signed in to change notification settings - Fork 0
/
entre.m
358 lines (344 loc) · 11 KB
/
entre.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
%ear all
%clc
% carga de las variables para la red
tred1=[tred fentre fapre nc 0 0 0 0 0 0 0];
% carga de las variables de las capas ocultas
fc=[tc1 tc2 tc3 tc4 tc5 fc1 fc2 fc3 fc4 fc5 p];
periodo=7; nsal=1;
% parametros para la RNA
parametrosred=[tred1;fc];
% carga del archivo de fiestas
festivos=dlmread('festivos.txt',' ',0,0);
%pesos=dlmread('pesos.txt',' ',0,0);
%close all;
switch parametrosred(1,2)
case 1, fentrena='traingd';
case 2, fentrena='trainlm';
case 3, fentrena='trainrp';
case 4, fentrena='traingdm';
end
if parametrosred(1,3)==1
faprendiza='learngd';
else
faprendiza='learngdm';
end
numerocapas=(parametrosred(1,4));
clear tamanocapa funcion
for a=1:1:numerocapas
tamanocapa(a)=parametrosred(2,a);
funcion(a)=parametrosred(2,5+a);
end
%----------------------------------------------------------------------------------
% Carga la irregularidad de los datos de entrenamiento
pr2=dlmread('irrtot.txt',',');
pr=dlmread('mmaxirent.txt',',');
%--------------------------------------------------------------------
% manejo de la irregularidad de los datos objetivo
t2=dlmread('irregula1.txt',',');
%---------------------------------------------------------------------
% Toma de los datos de entreamiento y preparación
[p,q]=size(pr2);
ttrain=floor(0.8*p);
for i=1:1:ttrain
seriet(i,:)=pr2(i,:); % 80% de los datos usados para el entrenam
pesosseriet(i,:)=pesos1(i,:);
tenden1(i,:)=tenden(i,:);
end
k=1;
clear seriev pesosseriev;
for i=ttrain+1:1:p
seriev(k,:)=pr2(i,:); % resto de los datos de entrenam
pesosseriev(k,:)=pesos1(i,:);
tenden2(k,:)=tenden(i,:);
k=k+1;
end
% normalizacion de la entrada a la RNA
[serieen,minserien,maxserien,serieob,minserieob,maxserieob]=premnmx(seriet,seriev);
seriet1=[serieen pesosseriet]; % se va a entrenar con todos los datos
seriev1=[serieob pesosseriev]; % 20% de los datos del entrenamiento
tsal=size(seriev);
nsal=tsal(1);
% Caracteristicas de las redes neuronales
if parametrosred(1) ==1
tipored='newelm';
red=newelm(minmax(seriet1),[tamanocapa nsal]);
elseif parametrosred(1)==2
tipored='newff';
red=newff(minmax(seriet1),[tamanocapa nsal]);
elseif parametrosred(1)==3
tipored='newcf';
red=newcf(minmax(seriet1),[tamanocapa nsal]);
end
% carga de la función de entrnamiento
red.trainFcn=fentrena;
% icialización de las capas
red.initFcn='initlay';
% se asignan pesos a la capas de acuerdo con ek criterio de Nguyen-Widrow
for i=1:1:numerocapas
red.layers{i}.size=tamanocapa(i);
red.layers{i}.initFcn='initnw';
if funcion(i)==1 red.layers{i}.transferFcn='logsig'; red1.layers{i}.transferFcn='logsig';
elseif funcion(i)==2 red.layers{i}.transferFcn='tansig'; red1.layers{i}.transferFcn='tansig';
else red.layers{i}.transferFcn='purelin'; red1.layers{i}.transferFcn='purelin';
end
end
figure
red.trainParam.epochs = epocas;
red.trainParam.goal = goal;
red.trainParam.lr=lr;
red.performfcn='msereg'; % regularización de la red
minmax(seriet);
% inicialización de la red
red=init(red);
[red,tr1]=train(red,seriet1,seriev1); % datos completos +pesos
%---------------------------------------------------------------------%
% Revisión del comportamiento luego del entrenamiento
epoca=tr1.epoch;
y=sim(red,serieen);
li=min(serie);
y=postmnmx(y,(minserieob),max(maxserieob));
[tendena,mint,maxt]=premnmx(tenden1);
y=mean(y);
t=sim(red,tendena);
figure
tam=size(t2);
%pra=(t2(tam(1),:));
pra=mean(seriev); hold;
plot((pra(:,1:1:tam(2))),'r');
plot(transpose(y(:,1:1:tam(2))),'g');
title('Irregularidades(real(rojo),calculadas por RNA(verde))');
t=postmnmx(mean(t),(min(mint)),max(maxt));
figure
subplot(2,1,1)
plot(pra(:,1:1:tam(2)).*ciclo.*t(:,1:1:tam(2)),'r')
hold;
plot(y(:,1:1:tam(2)).*ciclo.*t(:,1:1:tam(2)),'g')
text(14.5,li+10,vect(1,:));
text(34.5,li+10,vect(2,:));
text(64.5,li+10,vect(3,:)); text(84.5,li+10,vect(4,:));
text(104.5,li+10,vect(5,:));text(130.5,li+10,vect(6,:));
text(154.5,li+10,vect(7,:));
%plot(y1.*ciclo.*t1(:,1:1:tam(2)),'y')
[pra;y(:,1:1:tam(2))];
dlmwrite('resultados.txt',ans,',');
title('Recuperación de la señal (real(rojo),calculadas con pesos(verde))')
ylabel(ulabel);
pra=pra(:,1:1:tam(2)).*ciclo.*t(:,1:1:tam(2));
y=y(:,1:1:tam(2)).*ciclo.*t(:,1:1:tam(2));
e=abs(pra-y(:,1:1:tam(2)));
e1=abs(pra-y(:,1:1:tam(2)))./pra;
larg=tam(2);
mad=(sum(e)/larg);
emc=sqrt(((sum((e).^2))/larg));
mape=(sum(e1)/larg)*100;
dlmwrite('resultadosy.txt',ans,',');
set(gcf,'menubar','none');
set(gcf,'numbertitle','off');
set(gcf,'name','Recuperación de la serie entrenamiento');
set(gcf,'color',[1 1 1]);
set(gcf,'position',[0 25 650 420]);
h1 = uicontrol(gcf, ...
'Units','points', ...
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
'fontname','MS Sans Serif',...
'fontsize',10,...
'HorizontalAlignment','left', ...
'ListboxTop',0, ...
'Position',[63 138.25 297 15.75], ...
'String','Tipo de red', ...
'BackgroundColor',[1 1 1],...
'Style','text', ...
'Tag','StaticText1');
h1 = uicontrol(gcf, ...
'Units','points', ...
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
'fontname','MS Sans Serif',...
'fontsize',10,...
'HorizontalAlignment','left', ...
'ListboxTop',0, ...
'Position',[313 138.25 297 15.75], ...
'String',tipored, ...
'BackgroundColor',[1 1 1],...
'Style','text', ...
'Tag','StaticText1');
h1 = uicontrol(gcf, ...
'Units','points', ...
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
'fontname','MS Sans Serif',...
'fontsize',10,...
'HorizontalAlignment','left', ...
'ListboxTop',0, ...
'Position',[63 123.25 297 15.75], ...
'String','Función de aprendizaje', ...
'BackgroundColor',[1 1 1],...
'Style','text', ...
'Tag','StaticText1');
h1 = uicontrol(gcf, ...
'Units','points', ...
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
'fontname','MS Sans Serif',...
'fontsize',10,...
'HorizontalAlignment','left', ...
'ListboxTop',0, ...
'Position',[313 123.25 297 15.75], ...
'String',faprendiza, ...
'BackgroundColor',[1 1 1],...
'Style','text', ...
'Tag','StaticText1');
h1 = uicontrol(gcf, ...
'Units','points', ...
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
'fontname','MS Sans Serif',...
'fontsize',10,...
'HorizontalAlignment','left', ...
'ListboxTop',0, ...
'Position',[63 108.25 297 15.75], ...
'String','Función de entrenamiento', ...
'BackgroundColor',[1 1 1],...
'Style','text', ...
'Tag','StaticText1');
h1 = uicontrol(gcf, ...
'Units','points', ...
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
'fontname','MS Sans Serif',...
'fontsize',10,...
'HorizontalAlignment','left', ...
'ListboxTop',0, ...
'Position',[313 108.25 297 15.75], ...
'String',fentrena, ...
'BackgroundColor',[1 1 1],...
'Style','text', ...
'Tag','StaticText1');
h1 = uicontrol(gcf, ...
'Units','points', ...
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
'fontname','MS Sans Serif',...
'fontsize',10,...
'HorizontalAlignment','left', ...
'ListboxTop',0, ...
'Position',[63 93.25 297 15.75], ...
'String','Numero de capas (oculta)', ...
'BackgroundColor',[1 1 1],...
'Style','text', ...
'Tag','StaticText1');
h1 = uicontrol(gcf, ...
'Units','points', ...
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
'fontname','MS Sans Serif',...
'fontsize',10,...
'HorizontalAlignment','left', ...
'ListboxTop',0, ...
'Position',[313 93.25 297 15.75], ...
'String',nc, ...
'BackgroundColor',[1 1 1],...
'Style','text', ...
'Tag','StaticText1');
h1 = uicontrol(gcf, ...
'Units','points', ...
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
'fontname','MS Sans Serif',...
'fontsize',10,...
'HorizontalAlignment','left', ...
'ListboxTop',0, ...
'Position',[63 78.25 297 15.75], ...
'String','Desv. abs. de la media (MAD)' , ...
'BackgroundColor',[1 1 1],...
'Style','text', ...
'Tag','StaticText1');
h1 = uicontrol(gcf, ...
'Units','points', ...
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
'fontname','MS Sans Serif',...
'fontsize',10,...
'HorizontalAlignment','left', ...
'ListboxTop',0, ...
'Position',[313 78.25 297 15.75], ...
'String',mad, ...
'BackgroundColor',[1 1 1],...
'Style','text', ...
'Tag','StaticText1');
h1 = uicontrol(gcf, ...
'Units','points', ...
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
'fontname','MS Sans Serif',...
'fontsize',10,...
'HorizontalAlignment','left', ...
'ListboxTop',0, ...
'Position',[373 78.25 30 15.75], ...
'String',ulabel, ...
'BackgroundColor',[1 1 1],...
'Style','text', ...
'Tag','StaticText1');
h1 = uicontrol(gcf, ...
'Units','points', ...
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
'fontname','MS Sans Serif',...
'fontsize',10,...
'HorizontalAlignment','left', ...
'ListboxTop',0, ...
'Position',[63 63.25 297 15.75], ...
'String','Raíz del error medio cuadrado (MSE)', ...
'BackgroundColor',[1 1 1],...
'Style','text', ...
'Tag','StaticText1');
h1 = uicontrol(gcf, ...
'Units','points', ...
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
'fontname','MS Sans Serif',...
'fontsize',10,...
'HorizontalAlignment','left', ...
'ListboxTop',0, ...
'Position',[313 63.25 297 15.75], ...
'String',emc, ...
'BackgroundColor',[1 1 1],...
'Style','text', ...
'Tag','StaticText1');
h1 = uicontrol(gcf, ...
'Units','points', ...
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
'fontname','MS Sans Serif',...
'fontsize',10,...
'HorizontalAlignment','left', ...
'ListboxTop',0, ...
'Position',[373 63.25 30 15.75], ...
'String',ulabel, ...
'BackgroundColor',[1 1 1],...
'Style','text', ...
'Tag','StaticText1');
h1 = uicontrol(gcf, ...
'Units','points', ...
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
'fontname','MS Sans Serif',...
'fontsize',10,...
'HorizontalAlignment','left', ...
'ListboxTop',0, ...
'Position',[63 48.25 297 15.75], ...
'String','Porcentaje de error medio abs. (MAPE)', ...
'BackgroundColor',[1 1 1],...
'Style','text', ...
'Tag','StaticText1');
h1 = uicontrol(gcf, ...
'Units','points', ...
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
'fontname','MS Sans Serif',...
'fontsize',10,...
'HorizontalAlignment','left', ...
'ListboxTop',0, ...
'Position',[313 48.25 297 15.75], ...
'String',mape, ...
'BackgroundColor',[1 1 1],...
'Style','text', ...
'Tag','StaticText1');
h1 = uicontrol(gcf, ...
'Units','points', ...
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
'fontname','MS Sans Serif',...
'fontsize',10,...
'HorizontalAlignment','left', ...
'ListboxTop',0, ...
'BackgroundColor',[1 1 1],...
'Position',[373 48.25 30 15.75], ...
'String','%', ...
'Style','text', ...
'Tag','StaticText1');
presresul