tuleb kontrollida ka objekti mittelineaarsel mudelil ja häiringute olukorras. Lahenduskäik Sisend- ja väljund katseandmete tekitamine Pilt1. Katseandmete kogumine. 3 Närvivõrgu treenimine td=1 N=size(output,1) P=[output(3:N)';output(2:N-1)';output(1:N-2)'] T=input(2:N-1)' global net_c net_c=newff([-1 1; -1 1; -1 1],[15 1],{'tansig','tansig'}) net_c.trainParam.show=1; net_c.trainFcn='traingd'; % kuna süsteem peab olema adaptiivne, siis reaalajas toimiva närvivõrgu puhul sobib hästi. net_c.trainParam.epochs=5000; net_c=train(net_c,P,T) % P - etalonsisend, T - etalonväljund save temp_net.mat net_c % kui süsteem muutub mittestabiilseks (Liiga suure häiringu tõttu näiteks) siis % load temp_net.mat net_c Regulaator function control=kontroller(u) global net_c inp=u(1:3); error=u(4); time=u(5); control=sim(net_c,inp);
element on vahemikus -10...10, seatakse vastavusse vastuste vektoriga T. Närvivõrgu õpetamine põhineb teadaoleval, omavahel seotud sisendite ja väljundite hulgal. P1=(rand(1,1000)-0.5)*20 P2=(rand(1,1000)-0.5)*20 %T=0.3*P1 + 0.9*P2 T = P1.*P2./((P1+P2).*(P1+P2)+10) %P1. tähendab, et on skalaarkorrutis, korrutame elementide kaupa P=[P1;P2] Loome uue närvivõrgu. net=newff([-10 10; -10 10],[25 1],{'logsig' 'purelin'}) % adaline adaptiivne lineaarne, tansig mittelineaarne % (-1..1), logsig (0..1) % purelin - lineaarne % esimesed [] näitavad, mitu sisendit ja mis vahemikus, % teised [] mitu % kihti neuroneid ja mitu neuronit on kihis, {} näitab 3 % mis on iga kihi % neuronite aktiveerimisfunktsioon. % Piisab ka 1-2 neuronist % suurendades neuronite arvu mittelineaarse akt % funktsiooniga, täpsus % kasvab