//**************************************************************
// 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