//************************************************* // EXPERIMENT V2 // // AUTHOR: G.Doeben-Henisch // First: 18.Nov.2013 // Last: 11.Dec.2013 //************************************************* // // IDEA // // Selects a GRIDSPC , a set of learning semiotic systems POP, // an world input buffer WIB, // an interface INTERFACE with ainp() and aout(), // a set of structures SSTR for systems building a population // and a set of system functions SDYN describing the behavior // of the systems, their 'dynamics'. // Then you start an experiment. //****************************************************************************** // experimentRND() // // Running a simple experiment with with purely random systems for some number RUN of cycles // // The WORLD consists of //----------------------- // -GRIDSPC := a certain prespecified grid // -POP := a certain lis of systems inside the world // -WIB := a world input buffer // // The systems are represented by //------------------------------- //SSTR := list of structures // SDYN := list of system functions function [GRIDSPC,POP,SSTR,WIB,k]=experimentRND2(GRIDSPC, POP, WIB, SSTR, RUN,SHOW) //Insert systems into GRIDSPC [GRIDSPC]=insertPOP(GRIDSPC,POP) k=1 while k < RUN //Map world onto the systems //ainp: POP ---> SSTR [SSTR]=ainp(POP,SSTR) if SHOW==2 then disp(SSTR),end //Compute reactions of systems to ainp() //phiRND: RND ---> SSTR [SSTR]=phiRND(POP,SSTR) if SHOW==2 then disp(SSTR),end //Map Output in WIB [WIB]=aout(POP,SSTR,WIB) if SHOW==2 then disp(WIB),end //Compute possible new positions [POP] =newPOS(POP, WIB) if SHOW==2 then disp(POP),end //Realize new moves if possible [POP,GRIDSPC] =newPOSPOS(POP,GRIDSPC,SHOW) disp('####################################################################') printf('k = %d\n',k) disp(GRIDSPC), disp(SSTR) disp('####################################################################') k=k+1 end endfunction //****************************************************************************** // experimentRND2REP() // // Repeating a certain experiment // // REPEAT := Number of repetitions // HISTORY := Counting success and summing up collected energy // HISTORY := [[ID, SUCCESS, SUMENERGY,REP]; ...] function [HISTORY]=experimentRND2REP(GRIDSPC, POP, WIB, SSTR, RUN, REPEAT, SHOW) [r,c]=size(POP) HISTORY=zeros(r,4) //Set HISTORY to zeros for i=1:r HISTORY(i,1)=eval(POP(i,1)) //Get the System-IDs of POP end //Start loop for repetitions for i=1:REPEAT //Store the original values for repetitions GRID=GRIDSPC, P=POP, WB=WIB, SSR=SSTR, //Start with a copy of original values [GRID,P,SSR,WB,k]=experimentRND2(GRID,P,WB, SSR,RUN, SHOW) //Update HISTORY for j=1:r if SSR(j,1) > 0 then HISTORY(j,2)=HISTORY(j,2)+1, end HISTORY(j,3)=HISTORY(j,3)+ SSR(j,1) HISTORY(j,4)=HISTORY(j,4)+1 end //End update HISTORY end //End loop repetitions clf() xdel() x=1:1:r plot2d3(x,HISTORY(:,2),rect=[0,0,r,REPEAT]) endfunction