Applicazione Di Una Rete Neurale

  • Uploaded by: Emanuele
  • 0
  • 0
  • October 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Applicazione Di Una Rete Neurale as PDF for free.

More details

  • Words: 1,375
  • Pages: 7
Esercizi del corso di Reti Neurali per il Controllo: Esercizio2

Emanuele Duca 10

ESERCIZIO 2 1. Introduzione Lo scopo di questo secondo esercizio è quello di prevedere, tramite l’utilizzo di una rete neurale, il consumo (MW/h) di energia di una città del quale viene fornita una mappa di campioni stimata per 25 lunedì successivi nell’arco delle 24 ore. Avremo quindi una tabella costituita da 25 righe e 24 colonne con cui addestreremo e valideremo la rete neurale. Riportiamo i dati forniti dall’esercizio: ma=[ 139 131 152 149 148 144 144 139 158 146 154 150 163 154 164 156 178 169 199 195 205 194 211 196 223 213 227 219 223 217 228 209 239 230 235 228 229 213 225 217 220 213 210 206 220 217 214 209 210 200 ];

122 143 141 135 140 145 152 153 166 180 185 186 207 216 206 212 225 218 211 214 207 197 215 205 199

123 147 142 133 141 151 152 143 112 188 176 187 196 211 197 205 203 209 209 196 203 211 214 204 197

139 156 148 140 144 157 155 161 172 180 187 191 199 213 199 200 202 210 208 205 203 214 212 202 199

157 166 170 162 165 171 175 180 183 196 199 201 212 209 203 213 205 215 211 210 207 213 215 209 209

188 199 208 195 211 215 222 207 221 223 229 234 225 216 211 213 208 217 220 209 210 216 210 218 224

239 258 257 262 270 257 251 250 256 256 251 247 249 222 238 233 230 246 230 219 226 228 219 234 253

256 272 265 270 279 278 279 278 270 269 267 285 259 230 268 266 256 258 261 245 252 253 252 257 279

265 271 258 270 282 273 269 276 266 269 282 272 281 223 272 274 276 287 276 273 276 277 275 289 290

213 256 255 255 270 254 269 260 262 279 263 333 274 219 283 287 277 282 252 279 292 277 275 289 285

229 241 223 238 257 242 249 239 252 262 253 279 271 210 271 276 281 286 278 275 272 274 272 279 279

218 220 214 217 226 220 234 221 234 245 239 256 256 212 259 266 265 292 273 255 263 264 269 275 257

205 209 206 208 223 223 222 215 237 247 248 259 257 197 261 265 266 243 260 265 268 263 253 268 256

195 208 201 209 228 227 222 211 240 246 241 273 263 209 264 273 278 275 268 266 270 267 268 278 264

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2

198 211 205 218 225 229 218 208 237 249 239 272 282 199 266 276 264 274 266 267 256 264 271 273 264

197 218 209 220 217 230 223 212 233 243 226 272 253 196 254 272 265 266 259 258 253 253 265 257 261

214 213 209 218 224 228 217 207 226 230 237 256 248 194 241 247 241 242 247 244 232 236 240 260 240

253 262 255 256 253 261 259 239 251 262 251 260 248 215 252 267 248 242 212 243 229 236 231 262 258

237 297 279 281 288 283 299 287 302 305 289 307 320 267 302 305 303 302 296 292 288 257 273 298 300

273 272 274 276 286 279 283 266 294 297 302 315 306 283 298 311 310 310 313 304 297 302 299 306 318

245 254 254 254 270 266 273 247 283 294 280 299 288 275 297 320 300 311 307 307 297 296 294 306 281

199 220 207 220 217 223 235 199 248 263 265 256 286 253 283 281 284 280 276 277 267 276 275 275 265

158 180 167 186 185 192 192 174 203 225 226 234 237 219 254 257 259 251 251 239 241 242 237 232 234

Emanuele Duca 10

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2

Emanuele Duca 11

2. Realizzazione Come si può notare i consumi contengono valori elevati, quindi al fine di evitare la saturazione dei neuroni è necessario convertire i dati mediante la funzione mapstd la quale opera una scalatura dei parametri operando sulla media (posta pari a 0) e sulla deviazione standard ( posta pari ad 1). La variabile creata sarà quindi utilizzata dalla rete; rammentando tuttavia lo scopo dell’esercizio ovvero un plot di stima dei consumi in MH/h appare chiaro l’utilizzo nella fase finale del progetto di una funzione inversa per riportare i dati alle loro dimensioni di partenza. Per fare ciò è sufficiente specificare in mapst il parametro ‘reverse’ in modo tale da ottenere la denormalizzazione voluta: % normalizzazione dati [ma,data]=mapstd(ma); %denormalizzazione dati ma4=mapstd('reverse',ma4,data);

Successivamente viene realizzata la rete da utilizzare, tenendo in considerazione in questo caso la volontà di avere in ingresso due lunedì consecutivi casuali piuttosto che i primi due, questo è stato possibile mediante il comando randint : %inizializzazione casuale c1=randint(1,1,[1,18]); x=ma(c1,:); y=ma((c1+1),:); p=[x;y];

A questo punto si realizza la rete nello stesso modo analizzato nell’esercizio1, con la sostanziale differenza riguardante la scelta dell’algoritmo utilizzato (traingd), in quanto ha fornito risposte soddisfacenti nelle simulazioni effettuate e il numero di neuroni presenti nel primo strato (18). net= newff(minmax(p),[18,1],{'tansig','purelin'},'traingd’ );

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2

Emanuele Duca 11

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2

Emanuele Duca 12

I pesi e i parametri di training sono stati inizializzati nel modo seguente: net.layers{1}.initFcn='initnw'; net.layers{2}.initFcn='initnw'; net=initlay(net); net.trainParam.show = 100; net.trainParam.lr = 0.005; net.trainParam.epochs= 400; net.trainParam.goal = 1e-4;

Per realizzare il training set della rete si utilizzano 2 lunedì successivi mentre il terzo è considerato il target (come da specifiche). Questa procedura è iterata fino ad ottenere 18 coppie d’ingresso utilizzando le prime venti righe della matrice ma (25x24), le restanti costituiranno il validation set. for i=1:18 x=ma(i,:); y=ma(i+1,:); z=ma(i+2,:); p1=[x;y]; [net,tr]=train(net,p1,z); end

La visualizzazione dei bias e dei pesi sinaptici come visti nell’esercizio precedente è affidata alle seguenti righe di codice: w1=net.IW{1,1}; b1=net.b{1}; w2=net.lw{2,1}; b2=net.b{2};

Infine si procede con la validazione della rete alla fine della quale avviene la denormalizzazione dei dati come già accennato in precedenza.

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2

Emanuele Duca 12

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2

Emanuele Duca 13

%% validation for h=1:3 pv=[ma(20+h,:);ma(21+h,:)]; val=[ma3(22+h,:)]; st=sim(net,pv); ma4(22+h,:)=st; %denormalizzazione dati ma4=mapstd('reverse',ma4,data); end

Il ciclo for fornisce i valori della matrice pv relativi alla righe 21,22,23,24, mentre val avrà al suo interno le uscite relative alle righe 23,24 e 25. Di seguito sono riportati i risultati ottenuti: figure(); for j=1:18; plot(ma3(j,:),'b'); title('Dati','color','r'); xlabel('Ore','color','r'); ylabel('Consumo(Mw/h)in 25 lunedi successivi','color','r'); hold on end

Figura 1 Dati in ingresso.

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2

Emanuele Duca 13

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2

Emanuele Duca 14

%realizzazione delle ore x=(1:24); figure(10); subplot(3,1,h); plot(x,ma4(22+h,:),'+','color','b'); xlabel('Ore','color','b'); ylabel('Consumo MW/h','color','b'); legend('Consumo','Location','NorthOutside'); hold on

Figura 2 Consumi stimati per i dati del validation set.

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2

Emanuele Duca 14

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2

Emanuele Duca 15

plot(x,val,'r'); err(h,:)=val-ma4(22+h,:); figure(11);subplot(3,1,h);plot(x,err(h,:)); title(['Errore per l ingresso x(',num2str(h),')'],'color','r'); xlabel('Ore','color','b'); ylabel('Consumo MW/h','color','b');

Figura 3 Errore per i tre dati in ingresso.

Una volta analizzato l’errore per i tre ingressi è stato stimato l’errore medio della rete. errm=((err(1,:)+err(2,:)+err(3,:))/3); figure(12);plot(x,errm); title('Errore medio','color','r'); xlabel('Ore','color','b'); ylabel('Consumo MW/h','color','b');

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2

Emanuele Duca 15

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2

Emanuele Duca 16

Errore medio 15

10

Consumo MW/h

5

0

-5

-10

-15

0

5

10

15

20

25

Ore

Figura 4 Errore medio prodotto dalla rete

Come si può vedere l’errore per gli ingressi si attesta intorno al 10% mentre l’errore medio è del 5%, quindi si può dire che la rete è discretamente performante per il problema sottoposto.

Esercizi del corso di Reti Neurali per il Controllo: Esercizio2

Emanuele Duca 16

Related Documents


More Documents from ""