//************************************************************** // File: zcs2-experiments.sce // Authors: Gerd Doeben-Henisch // Version Start: May-18, 2010 //--------------------------------- // Update May-19-2010-1459 // Update May-19-10-2343 // Update May-27-10-1825 // Update May-31-10-2005 // Update June-1-10-1743 // Update June-1-10-2119 // Update June-6-10-1552 // Update June-6-22-0600 //********************************************************** // diary('H:\FH\SCILAB\HISTORIES\Date.txt') //diary('/home/gerd/public_html/uffmm/science-technology/single/themes/computer-science/personal-sites/doeben-henisch/KNOW/GBBLT/SCILAB/HISTORIES/Date.txt') //****************************************************************** // CONTENT: // zsc2_environment := Framework to generate an environment // zsc2_experiment := Framework to start and stop experiments // zsc2_animat := Structure of an ANIMAT2 // zsc2_functions := Collection of those functions which define the behavior of an ANIMAT // zsc2_feedback := Extension of the functions // // APPLICATION // // (1) Generate an environment // (2) Define an experiment // (3) Run the experiment //****************************************************************************** // //funcprot(0) function [ANIMAT,HISTORY,GRID,FOOD]=liveR2(ANIMAT,X,Y,GRID, RUNS,SHOW,MATCHSET, ACTIONSET, CLASSIF,FOODIDX) if (RUNS<0) then error('liveR1: RUNS is not specified'),end //SET GLOBAL VARIABLES AS START VALUES HISTORY=[] ANIMAT(1)=X ANIMAT(2)=Y ANIMAT(3)= FOODIDX //Initial Value FOODIDX ANIMAT(4)=0 ANIMAT(5)= FOODIDX ANIMAT(6)=1 //At start time the ANIMAT is supposed to be active ANIMAT(13)=[] ANIMAT(14)=[] MATCHSET=[] ACTIONSET=[] //Set all Feedback Values of CLASSIF to '000' [ANIMAT]=zeroCLASSIFFEEDB(ANIMAT,CLASSIF) f=1 //Index to store in which cycle food has been found FOOD=[] //Storage for differences FOLD=0 FNEW=0 [YMAX,XMAX]= size(GRID) //printf("DIMENSION OF GRID - ROWS = %d, COLUMNS = %d\n\n",ZMAX,XMAX) k=1 while(k < RUNS+1), // if (SHOW==1) then printf("-----CYCLE %d---------------------------------------------------\n\n",k) // end // (1) Get actual position (XO,YO) from Animat // Is given with argument ANIMAT(1) = rows and ANIMAT(2) = columns XO= ANIMAT(1) YO= ANIMAT(2) // Insert ANIMAT into GRID REPLACE=GRID(YO,XO) GRID(YO,XO)='*' // if (SHOW==1) then disp(GRID), // end // Get SENSINPUT as string: PERC [PERC]=ainp(YO,XO,GRID,SHOW) //Select MATCHSET for PERC and VITAL MATCHSET=ANIMAT(13) [ANIMAT,MATCHSET]=selectM(ANIMAT, CLASSIF,PERC,MATCHSET,SHOW) // Generate candidates for ACTion out of MATCHSET // CAND are the classifiers selected // IDXM is a randomly generated index into CAND [IDXM,CAND, MATCHSET]=makeCAND(MATCHSET,SHOW) // Select ACTion [ACT,ACTIONSET,ANIMAT]=action2(IDXM,CAND, MATCHSET,ACTIONSET,ANIMAT) ANIMAT(14)=ACTIONSET //Delete ANIMAT in GRID GRID(YO,XO)=REPLACE //Generate new move [YN, XN]=aout(ACT,SHOW, YO, XO) ANIMAT(1)=XN, ANIMAT(2)=YN if (SHOW==1) then printf("liveR2: NEW POSITION PROPOSED=(YN,XN)= (%d, %d)\n\n",YN,XN), end // Decode the content of new position [CELLVALUE]=decode(YN,XN,GRID,SHOW) if (SHOW==1) then, printf("liveR2: CONTENT OF NEW POSITION= %s\n\n",CELLVALUE), end // Impact of perception onto ENERGY [ANIMAT]=impact(CELLVALUE,ANIMAT,SHOW) // Compute Feedback of REW for last action ACT [ANIMAT, CLASSIF,ACTIONSET]=feedback(CLASSIF, ANIMAT, ACTIONSET,SHOW) // UPDATE HISTORY [HISTORY]=updateHIST(HISTORY,k, CELLVALUE,XN,YN,ANIMAT) //Update while loop k=k+1, end disp(HISTORY) [FOOD]=food(HISTORY,RUNS) //if (SHOW==1) then printf("ENERGY = %d,\n MEAN NUMNER OF ACTIONS = %f\n DENSITY OF FOODDETECTION = %f \n",ANIMAT(3),FOOD(4), FOOD(3)) // end endfunction //************************************************************** // File: zcs2-experiments.sce // Authors: Gerd Doeben-Henisch // Version Start: May-18, 2010 //--------------------------------- // Update May-19-2010-1459 // Update May-19-10-2343 // Update May-27-10-1825 // Update May-31-10-2005 // Update June-1-10-1743 // Update June-1-10-2119 // Update June-6-10-1552 //********************************************************** // diary('H:\FH\SCILAB\HISTORIES\Date.txt') //diary('/home/gerd/public_html/uffmm/science-technology/single/themes/computer-science/personal-sites/doeben-henisch/KNOW/GBBLT/SCILAB/HISTORIES/May20-10-1032.txt') //****************************************************************** //*************************************************** // SIMPLE AUTOMATED TEST FRAMEWORK FOR ZCS // WITH REPETITION // // ANIMAT := Structure OF ANIMAT system // HISTORY := Protocol of movements and cumulated rewards // RUNS := How many cycles the simulation shall run. 1 cycle means one action // GRID := Fixed GRID from external source // N:= Number of repetitions of an experiment with RUNS-many actions // ACTIONSPERFOOD := List of food hits per repetition // MEAN := statistical mean // STD := standard deviation // YS, XS := start position function [ACTIONSPERFOOD,MEAN, STD]=experiment1(ANIMAT,X,Y,HISTORY,N, GRID, RUNS,SHOW,MATCHSET, ACTIONSET, CLASSIF,FOODIDX) ACTIONSPERFOOD=[] for i=1:N, [ANIMAT,HISTORY,GRID,FOOD]=liveR2(ANIMAT,X,Y,GRID, RUNS,SHOW,MATCHSET, ACTIONSET, CLASSIF,FOODIDX) //Counting food values ACTIONSPERFOOD(i)=FOOD(4) // Set back ANIMAT(1) = X, ANIMAT(2)=Y, ANIMAT(5) = FOODIDX end //for N MEAN=mean(ACTIONSPERFOOD) STD=st_deviation(ACTIONSPERFOOD) endfunction