Anotaciones: el mono tiene dos casillas importantes, la posicion acutal y la casilla destino. La destino permite establecer hacia donde se esta moviendo el mono. vale la pena mencionar 3 funciones: move(){ En esta funcion se mueve al mono de su pocicion actual a una nueva casilla. Si la casilla destino esta a un paso, entonces simplemente se mueve al mono alli. Si la casilla destino esta mas lejos, calcula cual casilla de las 8 que rodean la posicion actual hacerca mas al mono a su destino y mueve al mono a esta casilla. } randomWalk(){ iguala la casilla destino a una casilla del tablero escojida de manera azaroza y luego llama a la funcion move(). } bestMemoryTree(){ En esta funcion se busca el mejor arbol de la memoria en base a la proporcion (tamaņo de arbol)/distancia. Si el arbol esta a punto de fructificar entonces se toma la proporcion (fruta comestible)/distancia. Si el arbol no se save si esta fructificando entonces se toma la proporcion (tamaņo de arbol*constante)/distancia. En donde el valor de la constante es ::::: P.D puede no tenerse ningun arbol bueno, por ejemplo en el caso que no se tengan arboles en memoria, o que todos esten en periodo refractario. } Ahora la funcion de siguiente esta es donde se establece el comportamiento completo del mono. Funcion de siguiente estado del mono: +revisa si el dia cambio: -si-nuevo dia: +revisa si la memoria tiene elementos: -si-se tienen elementos de memoria: Actualiza la cuenta de los periodos refractarios. -no-se tienen elementos de memoria: continua. revisa si en tu casilla se tiene un arbol -si- arbol : +revisa si esta en memoria -si-esta en memoria: Actualiza el periodo refractario (solo en caso de no tener fruta comestible) -no-esta en memoria: guardalo en memoria +revisa si tiene fruta comestible: -si-fruta comestible: quedate a comer (le restas la tasa de alimentacion), si la comida se termina y ya no va a aver mas, cambia el periodo refractario de este arbol en memoria, a 30 dias ņņ fin de funcion de siguiente estado. -no-fruta comestible: modifica el periodo refractario de la memoria asociada a este arbol y ve a -no-arbol-o-no-fruta -no-arbol-o-no-fruta: +revisa si te estabas moviendo (con una casilla destino definida) -si-moviendo: continua moviendote. move(); fin de funcion de siguiente estado. -no-moviendo: +revisa que tu memoria no este vacia -si-memoria vacia: randomWalk(); fin de funcion de siguiente estado. -no-memoria vacia: bestMemoryTree(); +revisa que tengas algun arbol que no este en periodo refractario -si-algun arbol para escojer +revisa si tomar la descicion por memoria o por azar -si- (1-exp(-e/n) casilla destino = mejorArbolEnMemoria -no- (1-exp(-e/n) randomWalk(); -no-algun arbol para escojer randomWalk(); fin de funcion de siguiente estado.