Systemdynamik

//*************************************************************+
// sdyn.sce
//
// AUTHOR: G.Doeben-Henisch
// First: Dec-10, 2013
// Last: Dec-11, 2013
//
//*********************************************
// IDEA
// 
// while the structures SSTR define the Parameters of the structures of a system like
// Input 'I', output 'O' or internal states 'IS', contains the file  SDYN
// the behavior functions phi() of a system. There can be more than one behavior
// function phi().
//
//*************************************************
// RANDOM Actions
// Generates random actionsa based on  uniform random numbers from 0 ... 12
// with {0,...,8} for movements ans {9,...,12} for eating.
//
// NACT := new action

function [NACT] =actRand()
  
  NACT=floor(13*rand())  
  //printf("action:RANDOM NUMBER NACT= %d\n\n",NACT)
  
    
  endfunction
  
//*************************************************
// phiRND()
//
// Computes the behavior for a random system. Here it computes only eitheer some move 
// or a  nonmove as 'eating' for output
//
// MINMAL ASSUMPTIONS
//
// ACTION-NEW := either a move (0,...,8) or an eat (9,...,12)
//

function [SSTR]=phiRND(POP,SSTR)
    
       [r,c]=size(POP) //assumes that POP and WIB have the same systems
                   //in the same order !
       
        for i=1:r //for every element of the list POP
           
            ENERGY=SSTR(i,1)
            
            if (ENERGY>0)  then
                
                //Update ENERGY-STATUS
                
                NEWENERGY=SSTR(i,2) //Use collected energy
                
                ENERGYCONSUMPTION=SSTR(i,3)
                
                SSTR(i,1)=SSTR(i,1)+NEWENERGY-ENERGYCONSUMPTION
                SSTR(i,2)=0 //Set energy input back to zero
                
                //Generate new action
                 
                [NACT]=actRand()
            
              
                 if NACT >8 then SSTR(i,5)=9 //case non-move
                                   SSTR(i,4)=0 //set move to zero 
            
                 else
                    SSTR(i,4)=NACT //case move
                    SSTR(i,5)=0 //set nmove to zero 
                 end
                 
              end
           end
     
endfunction



Gerd Doeben-Henisch 2014-01-14