Professional Documents
Culture Documents
areas and disciplines such as physics, biology, networks (spread of virus in a -uri
Wilensky- network), mathematics, computing (cellular automata -Game life-), earth
science (climate change -uri Wilensky-), social sciences and dynamic systems
among many others, using and analyzing the application of NetLogo agent-based
modeling has been possible thanks to advances in the development and design of
agent-oriented software.
ndice
1.
Introduccin
2.
8. Bibliografa
1. Introduccin
El modelado y simulacin
basado en agentes- a partir de
ahora ABMS - ofrece una manera
de modelar sistemas sociales
compuestos por agentes que
interactan y se influencian entre
ellos , aprendiendo de sus
experiencias y adaptando su
comportamiento
para
convivir
mejor en el entorno al que han
sido destinados, tanto de forma
individual como colectiva. Dichos
agentes
poseen
ciertas
caractersticas como: autonoma,
capacidad social a nivel de
cooperacin,
negociacin
y
coordinacin y capacidad de
adaptacin,
entre
otras.
Modelando
estos
agentes
mediante simples reglas y de
forma individual (primando la
heterogeneidad entre la poblacin
de agentes) se desarrollan una
serie de interacciones que generan
patrones, estructuras, influencias
y comportamientos emergentes
que no han sido explcitamente
programados en los modelos pero
surgen entre el conjunto de
agentes de la poblacin.
En el marco citado se desarrolla
la tecnologa ABMS, que ha sido
utilizada en una gran variedad de
disciplinas y reas como el
modelado del comportamiento del
mar (Hill et al, 2006), el desarrollo
de guerras biolgicas (Carley et al,
2006) incluso la comprensin de la
cada de civilizaciones antiguas
(Kohler et al, 2005). En dichos
casos slo ha sido necesario
implementar
los
detalles
esenciales de los sistemas, a partir
de los cuales se han dado ciertas
interacciones y comportamientos
que
han
ofrecido
posibles
soluciones
a
los
problemas
planteados.
Existen
incluso
sistemas basados en agentes en
los que los agentes son modelados
con un alto nivel de detalle (con el
coste computacional que ello
conlleva) y que han sido posibles
gracias a los avances dados en el
desarrollo de software orientado a
agentes y en la ingeniera del
software orientada a agentes, en
los nuevos enfoques de ABMS y en
el
incremento
del
poder
computacional de los dispositivos
actuales.
Por todos los detalles dados y
debido a las posibilidades de los
sistemas basados en agentes, el
inters en dicha rea se encuentra
en constante crecimiento, que
puede ser comprobado viendo la
gran cantidad de conferencias,
artculos
de
investigacin
y
jornadas acadmicas en los que se
emplean ABMS a una amplia gama
de aplicaciones (ABMS Google
Scholar, 603.000 resultados).
En ste trabajo se realizar una
sntesis del artculo (C.M Macal et
al., 2010, Journal of Simulation,
151-162) y se comentar un
subconjunto de todas las posibles
aplicaciones empleando software
orientado a agentes (NetLogo) : el
conocido "Game of Life" desde un
enfoque orientado a agentes
4
2. Definicin y componentes
ABMS
Los modelos basados en
agentes tambin son tratados en
las investigaciones como sistemas
complejos, sistemas adaptativos
complejos, vida artificial, entre
otros. Sin embargo a pesar de que
todos los sistemas mencionados
consisten en la interaccin de
agentes autnomos, algunos de
ellos
tienen
caractersticas
especiales como los sistemas
adaptativos complejos en los que
dichos agentes tienen la capacidad
adicional de adaptarse a su
entorno tanto de forma individual
como colectiva.
Las investigaciones sobre dichos
sistemas han tenido como objetivo
identificar
los
principios
universales que permiten, a partir
de
un
modelado
mediante
sencillas reglas (con los aos los
a
caractersticas
se
refiere,
variando dicha
definicin
en
funcin
del artculo, algunos
ejemplos son: Jennings (2000)
quien provee una definicin en la
que el agente nicamente debe
enfatizar la caracterstica de la
autonoma independientemente
de todas las dems o (Bonabeau,
2001) que considera como agente
a
cualquier
componente
independiente (pieza de software,
modelo, etc) entre otros que
consideran
necesarias
caractersticas como la capacidad
social para provocar interacciones
entre los agentes.
Debido a las discrepancias
existentes entre los autores,
nosotros nos ceiremos a la
definicin empleada en el artculo
base de C.M Macal et al, quienes
consideran que los agentes deben
poseer
las
siguientes
caractersticas esenciales:
Auto-contenido/Modular:
Implica que el agente tiene
fronteras,
haciendo
referencia a que debe
poseer un conjunto de
tareas bien definidas de
forma
que
sea
fcil
determinar qu pertenece al
agente y qu no pertenece
a ste. Esta caracterstica
facilita tambin que los
agentes
puedan
ser
conocidos y distinguidos
6
unvocamente
por
otros
agentes.
Autnomo:
Actuando
independientemente
del
entorno en el que se
encuentre y de los agentes
que lo rodeen para dar
respuesta a las situaciones
que puedan afectar a dicho
agente.
Dirigido por objetivos: El
agente debe tener metas
que alcanzar mediante sus
comportamientos
(que
pueden ser influenciados
por la interaccin con otros
agentes). Esto permite a un
agente
ajustar
sus
comportamientos
y
respuestas
a
ciertas
situaciones
en
futuras
interacciones para alcanzar
tales objetivos.
Capacidad social: A pesar
de que pueda parecer
imprescindible debido al
marco
que
estamos
tratando, algunos autores
no consideran la capacidad
social como un elemento
esencial en el desarrollo de
los agentes. Esta capacidad
permite a los agentes tener
interacciones
dinmicas
entre ellos e influenciarse
en sus comportamientos
mediante protocolos para la
interaccin entre agentes
(protocolos
de
comunicacin, lenguajes de
contenido, ontologas, etc),
por ello ser necesario que
los
agentes
tengan
la
capacidad de reconocer y
distinguir a los dems
agentes, para conocer la
procedencia
o
el
destinatario
de
un
determinado mensaje, entre
otras acciones.
Podemos hablar tambin
de
caractersticas
supeditadas a la poblacin
de agentes y ya no a un
agente en concreto, como
puede
ser
la
heterogeneidad. De forma
contraria por ejemplo a
simulaciones
moleculares
dinmicas en las que se
estudian las interacciones
entre
partculas
homogneas,
en
las
simulaciones basadas en
agentes
es
necesario
considerar
una
amplia
diversidad de agentes entre
una determinada poblacin.
Es interesante observar
como las caractersticas y
comportamientos de los
agentes varan en funcin
del grado de sofisticacin
con
el
que
ha
sido
desarrollado cada agente,
con la informacin que se
ha tenido en cuenta a la
hora del modelado e incluso
de eventos pasados que
sirven al agente para la
toma de decisiones. Por
tanto las caractersticas de
un agente pueden ser:
estticas, que no cambiarn
durante la simulacin
o
dinmicas,
cambiando
conforme vaya avanzando
la simulacin.
Una arquitectura tpica de
agente es la siguiente:
2.2
Interaccin
agentes
entre
La simulacin basada en
agentes est constituida en base a
las relaciones e interacciones
entre los distintos agentes que
forman parte del entorno. De
modo
que,
mediante
esas
interacciones, se consigue un
objetivo comn que no sera
alcanzable de manera individual.
Esta capacidad de interaccin
entre agentes es lo que se llama
sociabilidad (tambin recibe el
nombre de capacidad social). Cada
agente solo posee informacin
local, a la que solo l tiene acceso,
por lo quecada agente necesita
comunicarse con el resto de
agentes
del
entorno
para
sistemas
de
informacin
geogrfica (GIS), entre otras.
2.3 Entorno
Se ha podido comprobar a lo
largo del trabajo que los agentes
interactan entre ellos y/o con su
entorno.
Dicho entorno puede ser
utilizado de diversas formas para
realizar interacciones, bien sean
simples, como por ejemplo para
proveer informacin espacial de un
agente con respecto a los dems
agentes (vase el ejemplo en
clases de teora de los robots y las
piedras
dejando
partculas
radioactivas),
usando
esta
alternativa normalmente para que
los agentes sigan el movimiento
de los dems agentes que
avanzan de una forma correcta a
travs de un determinado entorno.
O de formas ms complejas (que
conllevan
un
modelado
ms
complejo) como por ejemplo los
entornos empleados en modelos
de
simulacin
hidrolgica
y
atmosfrica, en los cuales es
comn
encontrarse
con
limitaciones de las acciones de los
agentes por parte del entorno.
9
3 Diseo e implementacin
de un ABMS
Para realizar el diseo de un
ABMS, es necesario contestar a
una serie de preguntas que nos
ayudaran a prepararlo:
Qu problema debemos
resolver? Y, qu cuestiones
debe
ser
capaz
de
solucionar el modelo?
Qu funcin desarrollarn
los agentes? Qu atributos
de
los
agentes
sern
solamente
descriptivos?
Cules sern calculados y
actualizados
dinmicamente?
En qu entorno se van a
mover los agentes? Cmo
van a interactuar con l?
Qu
decisiones
podrn
tomar los agentes? Qu
acciones realizarn? Cmo
debern comportarse?
Cmo van a interactuar
entre s los agentes?
Cmo validar el modelo?
10
generalmente
ofrecen
una
diversidad entre agentes bastante
limitada, adems de restringir los
comportamientos y de tener una
escalabilidad muy reducida. Un
ejemplo de software especializado
es la herramienta JASON (utilizada
en las prcticas de Agentes
Inteligentes, Ingeniera Informtica
Rama Computacin - ), que
permite realizar proyectos de
modelado de agentes, como el
robot
recogedor
de
basura
desplazndose en un entorno
unidimensional y bidimensional.
modificacin
y
ejecucin
de
modelos de una forma fcil y
sencilla;
de
hecho,
NetLogo
incluye tras su instalacin y
ejecucin (ejecutable slo si se
tiene instalada una Mquina
Virtual de Java -JVM) una coleccin
de modelos que pueden ser
alterados y que pertenecen a
mbitos muy diversos, tanto de las
ciencias
sociales
(incluye
matemticas, fsica y qumica,
biologa, medicina, computacin,
economa y psicologa social)
como de la naturaleza.
4. Anlisis de Netlogo
4.1.
Utilidad
herramienta
de
la
11
representacin no es factible
cuando
la
modelizacin
matemtica
es
demasiado
compleja y/o es imposible tener en
cuenta todos los factores del
entorno que influirn en la
solucin. Es aqu cuando es
necesaria la lgica para desarrollar
modelos de simulacin social,
construyendo una representacin
del sistema a partir de la
observacin de fenmenos propios
de dicho sistema. Por tanto, la
simulacin social consiste:
1. Formalizar
teoras
sobre los procesos
del problema.
2. Realizar
experimentos a partir
de
dicha
formalizacin.
3. Observar
generacin de
fenmenos
emergentes.
la
los
Para
ello
emplearemos
la
herramienta comentada, NetLogo,
realizando experimentos sobre
poblaciones y observando los
resultados sobre los fenmenos
emergentes generados.
5 Anlisis de aplicaciones
5.1.1
Agentes
interacciones
13
14
5.2.1.
Agentes
interacciones
15
5.2.2.
NetLogo
Implementacin
16
total-speed-5-caught
track of the number of
with speed of 5
total-speed-4-caught
track of the number of
with speed of 4
total-speed-3-caught
track of the number of
with speed of 3
total-speed-2-caught
track of the number of
with speed of 2
total-speed-1-caught
track of the number of
with speed of 1
]
;; keeps
bugs caught
;; keeps
bugs caught
;; keeps
bugs caught
;; keeps
bugs caught
;; keeps
bugs caught
to setup
clear-all
set total-speed-6-caught 0
set total-speed-5-caught 0
set total-speed-4-caught 0
set total-speed-3-caught 0
set total-speed-2-caught 0
set total-speed-1-caught 0
set-default-shape bugs "bug"
set-default-shape predators "bird"
ask patches [ set pcolor white ] ;;
white background
foreach [1 2 3 4 5 6] [
create-bugs initial-bugs-each-speed
[ set speed ? ]
]
ask bugs [
setxy random-xcor random-ycor
set-color
]
17
18
Finalmente
comentaremos
procedimiento que gestiona
movimiento de los agentes Bug,
cdigo del procedimiento es
siguiente:
el
el
el
el
to move-bugs
let candidate-predator nobody
let target-heading 0
ask bugs [
if wiggle? [right (random-float
5 - random-float 5)]
fd speed * 0.001
ifelse flee? [
Posteriormente, se reemplazar el
Bug
eliminado
por
un
descendiente de un Bug elegido
aleatoriamente entre el resto de la
poblacin existente, que podr ser
de la misma subespecie o de de
otra subespecie diferente, de
mayor
eficacia
biolgica.
La
descendencia
se
consigue
mediante la primitiva hatch que no
ha sido comentada en el presente
trabajo y se remite al lector al
manual oficial de NetLogo indicado
en el anexo de este documento.
Adems, para evitar que dejando
fijo (o desplazando siempre al
mismo lugar tras eliminar un Bug)
al agente Predator, ste contine
eliminando
un
Bug
y
sus
descendientes, se le indica que
cambie de sentido en un ngulo
aleatorio entre 0 y 360.
19
]
end
5.2.3.
Casusticas
y
resultados de experimentos
En este apartado trataremos sobre
los diferentes escenarios que
pueden darse en el modelo a
analizar. Recordemos que dicho
modelo trata sobre la seleccin
natural, donde la especie presa
intenta sobrevivir de la especie
predadora utilizando como nico
mtodo en ste caso su velocidad.
Tal como se indica en el modelo (y
como refleja la teora de la
evolucin de Darwin) la especie
depredadora intentar capturar a
los sujetos con una menor eficacia
biolgica y si fuese as, la
poblacin tender a estar formada
nicamente por los individuos de
mayor capacidad. Realicemos el
experimento sobre nuestro modelo
de la forma en la que lo haran los
individuos en la naturaleza ,
comenzaremos eliminando a los
sujetos de la subespecies ms
lentas (por velocidad creciente),
por lo que se incrementarn las
poblaciones
de
las
dems
subespecies ya que si tienen
descendientes
de
la
misma
velocidad, desaparecern tambin
fcilmente, observamos que tal
como nos indica la lgica, el
modelo
y
Darwin
que
los
individuos que sobreviven y a los
que tiende la poblacin son
aquellos de mayor velocidad,
subespecies roja y naranja.
Sin embargo esto no tiene por qu
ser as, ya que el agente
observador es el que se encarga
de realizar el movimiento de la
especie predadora y no pierde
nada por dejar a las especies de
menor velocidad con vida (en la
20
naturaleza si
ocurriese
esto,
posiblemente la especie predadora
desaparecera
debido
a
la
dificultad de capturar presas de
gran velocidad), mientras se
dedica a eliminar aquellas de
mayor capacidad. En este caso el
resultado que observamos en el
modelo tras eliminar primero
individuos de la poblacin ms
veloz (subespecie de color rojo) es
que la poblacin de la subespecie
de una velocidad inmediatamente
menor se ve incrementada, yendo
esto en contra de los principios de
la seleccin natural ya que
empeoran
las
capacidades
biolgicas
de
los
nuevos
individuos, sin embargo, debido a
que la poblacin principalmente
eliminada
es
la
de
mayor
velocidad, parece lgico que para
que la especie pueda seguir
subsistiendo es necesario generar
nuevos
individuos
de
una
subespecie diferente a la que est
siendo erradicada. Al eliminar
todos
los
individuos
de
la
subespecie
roja,
continuamos
cazando los sujetos naranjas, y la
poblacin de los Bugs amarillos se
vi incrementada, por lo que
inferenciamos
que
continuar
ocurriendo lo mismo hasta las
poblaciones
ms
lentas,
"revirtiendo" en cierta manera la
evolucin de las especies.
6. Conclusiones
21
tomamos
la
eleccin
de
seleccionarlo y lo aconsejamos
para futuros alumnos, ya que este
campo de la IA es de gran utilidad
en muchos de los problemas que
nos planteen grandes dificultades,
y como se ha mencionado
anteriormente, sean difciles de
modelar matemticamente.
7. Anexo
Junto con el trabajo a realizar en
este documento, se adjunta el
anexo, donde se incluyen las
implementaciones
de
las
2
aplicaciones comentadas: Juego de
la vida y Bug Hunt Speeds y una
sntesis del manual de NetLogo
necesaria para comprender las
aplicaciones
de
apartados
anteriores.
7.1. Implementaciones
Se adjuntan 2 links al GIT de uno
de los autores del trabajo en el
que
se
encuentran
las
implementaciones del Juego de la
Vida y del modelo NetLogo Bug
Hunt Speeds (por Uri Wilensky).
7.2.1 Vistas
Comentaremos en este apartado
las caractersticas bsicas de
NetLogo en los temas relativos a
la interfaz de la aplicacin, como
pueden ser los paneles de
control, los ajustes tanto de la
simulacin como de los aspectos
del modelo (entorno, agentes,
etc) y la propia interfaz.
7.2.1.1 Interfaz
Una vez arrancada la aplicacin,
se nos presentar la siguiente
ventana:
23
24
7.2.1.3.
Ajustes
simulacin
de
la
Button. Al pulsarlo
ejecutan comandos.
se
Note. Texto.
7.2.1.4. Informacin
Como se ha comentado en 4.1.1,
en este apartado de la aplicacin
obtendremos
informacin
de
nuestro modelo para informar a
los usuarios. Con ms detalle,
observamos
categoras
ya
definidas semejantes a cualquier
documentacin
de
software
convencional, como:
Una explicacin de sobre qu
trata nuestro modelo.
7.2.2.
Agentes
propiedades
Como ya se ha comentado en el
apartado de introduccin a
NetLogo, ste es un lenguaje de
programacin
que
sigue
la
filosofa del modelado basado en
agentes.
Entre los agentes disponibles en
NetLogo encontramos 3 tipos
principales que nos permitirn
desarrollar nuestro modelos:
Turtles: Son los agentes
principales
visibles
por
el
observador (considerado otro
agente en el mbito de NetLogo),
que se desplazan sobre el
entorno e interactan entre s y
con el entorno (con los patches
que
conforman
mundo,
considerados otro agente como
ahora veremos) de forma sencilla
o compleja segn unas reglas
especficas
que
regulan
su
comportamiento, pudiendo dar
lugar
a
comportamientos
26
xcor
;; coordenada x
ycor
;; coordenada y
shape
;; forma
label
;; etiqueta
label-color ;; color de la etiqueta
breed
;;raza
hidden?
;; visible o no
visible?
size
;; tamao
pen-size
;; tamao del trazo al
desplazarse
(cuando
penmode=down)
pen-mode
;; dejar trazo al
desplazarse o no?
Es
posible
ver
dichas
propiedades
mientras
la
simulacin est en ejecucin
haciendo click con el botn
derecho del ratn sobre la
tortuga
y
seleccionando
la
tortuga de la que queremos
conocer la informacin.
Los patchs que conforman el
entorno
tambin
tiene
propiedades asociadas entre las
que se encuentran las siguientes:
pxcor
;; coordenada x del
patch
pycor
;; coordenada y del
patch
pcolor
;; color del patch
plabel
;; etiqueta del
patch
plabel-color
;; color de la
etiqueta del patch
Podemos
conocer
las
propiedades de los agentes
tambin desde el cdigo de
nuestro
modelo
mediante:
[propiedad]
of
id_agent.
Tambin se pueden identificar los
agentes mediante la primitiva
bsica ask. Tales instrucciones
junto con las primitivas bsicas
sern
explicadas
en
el
correspondiente apartado.
27
7.2.2.1
adicionales
Propiedades
28
La
segunda
primitiva
que
comentaremos ser ask, que
permitir
la
peticin
de
realizacin de acciones por parte
de las tortugas. Dicha primitiva
se emplea indicando junto a ella
el nombre del agente o conjunto
de agentes que deben realizar la
accin, seguido a su vez de,
entre corchetes, otra primitiva o
conjunto
de primitivas
que
indiquen la acciones a realizar
entre las que destacan (se
indican las primitivas seguidas
de
su
abreviatura
semntica):
su
experimento no se observa
movimiento
aparente,
el
problema es la velocidad de
simulacin, al ser un modelo tan
sencillo el tiempo de proceso de
tal primitiva es muy reducido y
no
se
observan
cambios
significativos respecto del estado
inicial,
dicho
problema
se
soluciona
reduciendo
la
velocidad de simulacin en el
slider de la pestaa Ejecutar. Si
hacemos esto ltimo observamos
que las tortugas no realizan las
acciones en paralelo por lo que
en principio no existe paralelismo
si se pide la realizacin de una
accin por parte de un conjunto
de tortugas del mismo tipo.
Podemos tambin hacer que
dibujen
explcitamente
los
movimientos
que
realizan
mediante el uso de las primitivas
pen-down/pd y pen-up/pu ,
que permiten a los agentes la
utilizacin de un lpiz para
marcar sus movimientos, si el
lpiz se encuentra en uso
(bajado, pen-down), o dejar de
marcarlos si el lpiz est en
desuso (subido, pen-up). En el
ejemplo anterior solo tendramos
que modificar la ltima primitiva
ask , indicando junto a los
movimientos que el lpiz debe
bajarse
al
inicio
del
desplazamiento y subirse al final.
clear-all ;; Resetearemos el
entorno
crt 4 ;; Creamos 4 tortugas
ask turtles [pd fd 5 rt 90 fd 5 rt
90 fd 5 rt 90 fd 5 pu] ;; Ahora
indicando el uso del lpiz
7.2.4. Procedimientos
Podemos
entender
los
procedimientos en NetLogo como
las funciones o procedimientos
en cualquier otro lenguaje no
orientado al modelado basado en
agentes, una funcin definida por
el programador que engloba un
conjunto
de
primitivas
ya
definidas por el lenguaje para
conseguir
una
accin
que
30
7.2.5. Variables
Distinguiremos entre 2 tipos de
variables presentes en el mbito
de NetLogo, las variables locales y
las variables globales. Dicho
mbito de las variables es anlogo
al mismo en otros lenguajes de
programacin.
Una variable global es accesible
por todos los procedimientos de un
programa NetLogo.
Un caso particular de este tipo de
variables son las variables de
entrada,
introducidas
por
el
usuario a travs de la interfaz de
NetLogo mediante los posibles
widgets
(botones,
sliders,
choosers). Para comprobar su
funcionamiento emplearemos el
31
procedimiento
desarrollado
en
apartados anteriores para formar
un cuadrado, pero en esta ocasin
su
funcionamiento
estar
condicionado a la introduccin de
variables de entrada: el ngulo ,el
desplazamiento de las tortugas y
las repeticiones, de forma que se
podrn generar distintos tipos de
polgonos.
Para ello, partiendo del cdigo
anterior:
to
cuadrado
;;
Inicio
del
procedimiento
clear-all
;;
Resetearemos
el
entorno
crt 4 ;; Creamos 4 tortugas
ask turtles [pd repeat 4 [fd 5 rt 90]
pu] ;; Empleando la primitiva
repeat
end ;; Fin del procedimiento
32
7.2.6. Listas
Las listas son estructuras de datos
equivalentes
al
concepto
de
vector/array en otros lenguajes de
programacin. Al ser un lenguaje
con tipado dinmico, las listas
pueden
ser
heterogneas,
pudiendo estar compuestas de
elementos de diferentes tipos.
Dada una lista L representada
como un conjunto de valores entre
corchetes, sus elementos son
numerados desde el ndice 0 hasta
|L|-1 .
Existen dos formas de construir
una lista, en funcin de si estar
compuesta por datos conocidos a
priori o no.
Si los datos son conocidos,
construiremos la lista como
una
variable
normal
(asumiremos la definicin
como una variable local,
pero
es
fcilmente
extrapolable
a
variable
global) de la siguiente
manera: let
el1 elN]
lista-1
[el0
Si
los
datos
no
son
conocidos a priori (situacin
ms comn) es necesario
emplear la primitiva list ,
que recibe una serie de
argumentos y devuelve una
lista compuesta con los
argumentos pasados. Se
pueden dar dos casos en el
uso de dicha primitiva:
Si
se
le
pasan
2
argumentos
a
la
primitiva, se escribir de
la forma: list a b ,
siendo a y b variables
definidas previamente en
el programa (tambin
pueden
ser
valores
constantes vlidos).
Si se le pasan ms de 2
argumentos, se escribir
la primitiva list seguida
de todos los argumentos
necesarios,
todo
ello
entre
parntesis
e.g.
(list a b c d) , siendo
a,b,c
y
d
variables
definidas previamente en
el programa (tambin
pueden
ser
valores
constantes vlidos).
33
remove-duplicates [a b b
c] ;; [a b c]
replace-item: reemplaza el
elemento indicado por otro
elemento indicado por el
programador e.g. replaceitem b [a b c] d ;; [a d c]
shuffle:
desordena
aleatoriamente
los
elementos de la lista e.g.
shuffle [a b c]
fput:
introduce
un
elemento al inicio de la lista
e.g. fput d [a b c];;[d a b c]
sentence:
permite
la
concatenacin de listas, sin
realizar aplanamiento de
listas.
Si
se
van
a
concatenar 3 o ms listas es
necesario
incluir
la
sentencia entre parntesis
e.g. sentence [a b c] [b c
a] ;; [a b c b c a]
remove:
elimina
el
elemento indicado de la
lista e.g. remove b [a b
c];;[a c]
remove-item: elimina el
elemento
indicado
por
posicin de la lista e.g.
remove-item 2 [a b c] ;;
[a b]
remove-duplicates:
elimina
los
elementos
duplicados de la lista e.g.
34
35
la
to fibonacci
ca
let lista [1 1 1 1 1 1]
show map [? + 1] lista
end
7.2.7.
Sentencias
condicionales,
procedimientos con retorno
y bucles
En
cuanto
a
sentencias
condicionales se refiere podremos
emplear la sentencia if de la
siguiente forma:
if condicin
[
;; comandos
]
De modo que si la condicin se
cumple
se
ejecutarn
los
comandos que se escriban a
continuacin de la condicin y
entre corchetes. En el caso que la
condicin no se cumpla, los
comandos que se encuentren
dentro de los corchetes no se
ejecutarn.
En el caso de que se requiera
diversas acciones (ejecutar varios
comandos) cuando la condicin no
se cumple deberemos emplear la
sentencia condicional ifelse, cuya
sintaxis es la siguiente:
ifelse condicin
[
;; comandos que se ejecutan si se
cumple la condicin
]
[
;; comandos que se ejecutan si no
se cumple la condicin]
while condicin
[
;; comandos
]
36
repeat n [
;; comandos
]
La variable n que sigue a la
primitiva repeat indica el nmero
de veces que se van a ejecutar los
comandos que se encuentren
dentro de los corchetes.
8. Bibliografa
Barbadilla,
A.
(n.d)
La
Seleccin
Natural:
Axiomtica.
Gentica
de
Poblaciones.
Recuperado el 17 de Mayo de
2015
de:
http://bioinformatica.uab.es/base/b
ase3.asp?
sitio=geneticapoblaciones&anar=s
elecc&item=axiomas
Macal, C.M. & North, M.J.
(2010) Tutorial on agent-based
modelling and simulation. En
Journal of Simulation, 4, 151-162.
Recuperdo el 17 de Mayo de 2015
de:
http://www.palgravejournals.com/jos/journal/v4/n3/full/j
os20103a.html
Novak, M. and Wilensky, U. (2005).
NetLogo Bug Hunt Speeds model.
http://ccl.northwestern.edu/netlog
o/models/BugHuntSpeeds. Center
for Connected Learning and
Computer-Based Modeling,
Northwestern University,
Evanston, IL.
Poza, D.J. (n.d.) Manual de
Netlogo en espaol. INSISOC ,
Social
Systems
Engineering
Centre. Recuperado el 17 de Mayo
de
2015
de:
https://sites.google.com/site/manu
alnetlogo/
Quesada, F. J. M. (2011)
Simulacin
Social:
Una
introduccin. LSDS, Laboratori de
Simulaci de Dinmiques SocioHistriques. Recuperado el 17 de
Mayo
de
2015
de:
http://sct.uab.cat/lsds/es/content/si
mulacin-social-una-introduccin
Wilensky,
U.
(1999).
NetLogo.
http://ccl.northwestern.edu/netlog
o/. Center for Connected Learning
and Computer-Based Modeling,
Northwestern
University,
Evanston, IL.
Wilensky, U. (2015) NetLogo
5.2 Dictionary. Recuperado el 17
de
Mayo
de
2015
de:
http://ccl.northwestern.edu/netlog
o/docs/dictionary.html
Wilensky, U. (2015) NetLogo
5.2 User Manual. Recuperado el 17
de
Mayo
de
2015
de:
http://ccl.northwestern.edu/netlog
o/docs/NetLogo User Manual.pdf
37