% xarxa2.m nntwarn OFF %--------------------------------------------------------- % Amb aquest script s'entrena una xarxa neuronal per % classificar una situacio de joc: un jugador, una pilota % i un contrari. % Classes: ATACAR, DEFENSAR. % % 1- L'usuari entra N situacions ja ell mateix classifica % 2- S'engega el proces d'entrenament % 3- L'usuari pot comprovar el funcionament de la xarxa % % Model perceptro: HARDLIM % No esta malament, potser cal introduir 2N inputs % Josep LLuis de la Rosa, 3 de novembre de 1998 %--------------------------------------------------------- %-------------Configuracions previes clear xrobot yrobot xpilota ypilota P T W b p; N=10; LLARG=48; AMPLA=36; %-------------dibuixa camp de joc... whitebg hold off plot([1 1 LLARG LLARG 1],[1 AMPLA AMPLA 1 1]) hold on; plot([LLARG/2 LLARG/2],[1 AMPLA]) title('Gol cap a la dreta') %--1-----------entrada de posicions dels objectes (amb el mouse)------ disp('Proces d_entrenament d_una xarxa neuronal') a=['Entra l_accio a executar davant ' num2str(N) ' situacions diferents']; disp(a) disp('Les accions possibles son : ATACAR i DEFENSAR ') disp('i les situacions son les que tu vulguis.') for i=1:N, disp(['------------------' num2str(i) '----------------------']) disp('Indica on es el robot') [x y]=ginput(1); plot(x,y,'*'); xrobot(i)=fix(x); yrobot(i)=fix(y); disp('Indica on es la pilota') [x y]=ginput(1); xpilota(i)=fix(x); ypilota(i)=fix(y); plot(x,y,'o'); line([xrobot(i) x],[yrobot(i) y]); disp('Indica on es el contrari') [x y]=ginput(1); xaltre(i)=fix(x); yaltre(i)=fix(y); plot(x,y,'+'); line([xpilota(i) x],[ypilota(i) y]); T(i)=input('Tipus accio? [Atacar=1/Defensar=0]'); end %--2------------entreno la xarxa... P=[xrobot' yrobot' xpilota' ypilota' xaltre' yaltre']'; %--amb HARDLIM-- [W,b]=initp(P,T) [W,b,epochs,errors]=trainp(W,b,P,T,-1) %--3------------i ara puc fer el test: a=input('Prem una tecla...') plot([1 1 LLARG LLARG 1],[1 AMPLA AMPLA 1 1]) hold on; plot([LLARG/2 LLARG/2],[1 AMPLA]) title('Gol cap a la dreta') M=input('Quantes situacions vols provar?'); for i=1:M, disp(['------------------' num2str(i) '----------------------']) disp('Indica on es el robot') [x y]=ginput(1); plot(x,y,'*'); p(1)=fix(x); p(2)=fix(y); disp('Indica on es la pilota') [x y]=ginput(1); p(3)=fix(x); p(4)=fix(y); plot(x,y,'o'); line([p(1) x],[p(2) y]); disp('Indica on es el contrari') [x y]=ginput(1); p(5)=fix(x); p(6)=fix(y); plot(x,y,'+'); line([p(3) x],[p(4) y]); % HARDLIM: av=simup(p',W,b) if av==1 disp('ATACAR') else disp('DEFENSAR') end end