Vous êtes sur la page 1sur 46

AGENT-BASED AND

INDIVIDUAL-BASED
MODELLING
Captulos 4 y 5
Jhon Arango
David Cruz
Gustavo Prez
Contenido
Captulo 4: Implementing a First Agent-Based Model
ODD y Netlogo
De ODD a Netlogo: El ascenso de mariposas
Captulo 5: From Animations to Science
Observacin del corredor
Resultados en Series de Tiempo: Aadiendo Grficos y Archivos de
Salida
Un Paisaje Real

Chapter 4:
Implementing a First
Agent-Based Model
ODD y Netlogo
Propsito
Entidades, variables de estado y escalas
Panorama del proceso y Horario
Overview
Principios bsicos, Emergencia, Adaptacin,
Objetivos, Aprendizaje
Prediccin, Deteccin, Interaccin, Estocasticidad
Grupos, Observacin, Explicacin
Design
Concepts
Inicializacin
Datos de entrada
Submodelos
Details
Significado de ODD
De ODD a
Netlogo: El
ascenso de
mariposas
Propsito: El modelo fue diseado para
explorar cuestiones sobre corredores
virtuales.
Entidades, Variables de Estado y Escalas:
El modelo tiene dos tipos de entidades:
Mariposas y Parcelas cuadradas de tierra.
Cada parcela tiene una variable de estado:
su elevacin.
Las mariposas son caracterizadas
solamente por su posicin, descrita como
la parcela en la que estn.
El tamao de la parcela y la longitud de un
paso de tiempo no estn especificadas.
Cuando se use el paisaje real una parcela
corresponde a 25x25.
La simulacin dura para 1000 pasos de
tiempo.
Panorama del proceso y Horario:
Solo hay un proceso en el modelo: el
movimiento de las mariposas.
En cada paso de tiempo, cada mariposa se
mueve una vez.
El orden de ejecucin no es importante
porque no hay interaccin entre las
mariposas.
Overview
ODD del modelo de las
mariposas
De ODD a
Netlogo: El
ascenso de
mariposas
Principios bsicos:
Concepto de corredores
virtuales: senderos usados por
muchos individuos cuando no hay
nada particularmente benefico
cerca del habitat de ellos.
Deteccin: Las mariposas se
asumen como capaces de
identificar cual de las parcelas
vecinas tiene la elevacin ms alta.
Estocasticidad: Las mariposas no
se mueven hacia arriba cada paso
de tiempo, algunas veces se
aleatoriamente.
Design
Concepts
ODD del modelo de las
mariposas
De ODD a
Netlogo: El
ascenso de
mariposas
Inicializacin: La topografa del
paisaje se inicializa cuando el
modelo empieza.
Entrada de datos: El entorno se
assume constant, as que no hay
entrada de datos.
Submodelos: El submodelo de
movimiento define exactamente
como las mariposas deciden si ir
hacia arriba o aleatoriamente.
Details
ODD del modelo de las
mariposas
De ODD a
Netlogo: El
ascenso de
mariposas
La manera para traducir de ODD a Netlogo debe ser
jerrquica y paso por paso, con muchas pruebas
provisionales.
Primero, programa la estructura general del modelo
ANTES de comenzar cualquiera de los detalles.
Antes de aadir algn nuevo elemento (un
procedimiento, una variable, un cdigo complejo
requerido) maneja algunas pruebas bsicas del cdigo
existente y guarda el archivo.
Cmo traducir de ODD
a Netlogo?
De ODD a
Netlogo: El
ascenso de
mariposas
Primeros pasos
De ODD a
Netlogo: El
ascenso de
mariposas
Primeros pasos
De ODD a
Netlogo: El
ascenso de
mariposas
Primeros pasos
De ODD a
Netlogo: El
ascenso de
mariposas
Primeros pasos
De ODD a
Netlogo: El
ascenso de
mariposas
globals []
patches-own []
turtles-own []
Instanciacin de
procedimientos para la
declaracin de variables
globales y de variables
de estado
De ODD a
Netlogo: El
ascenso de
mariposas
globals []
patches-own [elevation]
turtles-own []
Procedimientos para la
declaracin de variables
globales y de variables
de estado
De ODD a
Netlogo: El
ascenso de
mariposas
De ODD a
Netlogo: El
ascenso de
mariposas
De ODD a
Netlogo: El
ascenso de
mariposas
De ODD a
Netlogo: El
ascenso de
mariposas
globals []
patches-own [elevation]
turtles-own []

to setup
ca
ask turtles
[
]
reset-ticks
end
Procedimiento de
inicializacin
De ODD a
Netlogo: El
ascenso de
mariposas
globals []
patches-own [elevation]
turtles-own []

to setup
ca
ask turtles
[
let elev1 100 distancexy 30 30
let elev2 50 distancexy 120 100

ifelse elev1 > elev 2
[set elevation elev1]
[set elevation elev2]

set pcolor scale-color green
elevation 0 100
]
reset-ticks
end
Procedimiento de
inicializacin
De ODD a
Netlogo: El
ascenso de
mariposas
Procedimiento de
inicializacin
De ODD a
Netlogo: El
ascenso de
mariposas
Procedimiento de
inicializacin
De ODD a
Netlogo: El
ascenso de
mariposas
Procedimiento de
inicializacin
De ODD a
Netlogo: El
ascenso de
mariposas

to setup
ca
ask turtles
[
let elev1 100 distancexy 30 30
let elev2 50 distancexy 120 100

ifelse elev1 > elev 2
[set elevation elev1]
[set elevation elev2]
set pcolor scale-color green elevation 0 100
]
crt 1
[
set size 2
setxy 85 95
]
reset-ticks
end
Procedimiento de
inicializacin
De ODD a
Netlogo: El
ascenso de
mariposas

to setup
ca
ask turtles
[
let elev1 100 distancexy 30 30
let elev2 50 distancexy 120 100

ifelse elev1 > elev 2
[set elevation elev1]
[set elevation elev2]
set pcolor scale-color green elevation 0 100
]
crt 1
[
set size 2
setxy 85 95
]
reset-ticks
end
to go
ask turtles [move]
end
Procedimiento de
ejecucin
De ODD a
Netlogo: El
ascenso de
mariposas
let elev1 100 distancexy 30 30
let elev2 50 distancexy 120 100

ifelse elev1 > elev 2
[set elevation elev1]
[set elevation elev2]
set pcolor scale-color green elevation 0 100
]
crt 1
[
set size 2
setxy 85 95
]
reset-ticks
end
to go
ask turtles [move]
end
to move
end
Procedimiento de
movimiento de las
mariposas
De ODD a
Netlogo: El
ascenso de
mariposas

ifelse elev1 > elev 2
[set elevation elev1]
[set elevation elev2]
set pcolor scale-color green elevation 0 100
]
crt 1
[
set size 2
setxy 85 95
]
reset-ticks
end
to go
ask turtles [move]
tick
if ticks >= 1000
[stop]
end
to move
end
Procedimiento de
ejecucin
De ODD a
Netlogo: El
ascenso de
mariposas
Procedimiento de
ejecucin
De ODD a
Netlogo: El
ascenso de
mariposas
set pcolor scale-color green elevation 0 100
]
crt 1
[
set size 2
setxy 85 95
]
reset-ticks
end
to go
ask turtles [move]
tick
if ticks >= 1000
[stop]
end
to move
ifelse random-float 1 < q
[uphill elevation]
[move-to one-of neighbors]
end
Procedimiento de
movimiento de las
mariposas
De ODD a
Netlogo: El
ascenso de
mariposas
globals [q]
patches-own [elevation]
turtles-own []

to setup
ca
ask turtles
[
let elev1 100 distancexy 30 30
let elev2 50 distancexy 120 100

ifelse elev1 > elev 2
[set elevation elev1]
[set elevation elev2]

set pcolor scale-color green
elevation 0 100
]
reset-ticks
end

Procedimiento de
inicializacin
De ODD a
Netlogo: El
ascenso de
mariposas
globals [q]
patches-own [elevation]
turtles-own []

to setup
ca
ask turtles
[
let elev1 100 distancexy 30 30
let elev2 50 distancexy 120 100

ifelse elev1 > elev 2
[set elevation elev1]
[set elevation elev2]

set pcolor scale-color green
elevation 0 100
]
reset-ticks
set q 0.4
end

Procedimiento de
inicializacin
De ODD a
Netlogo: El
ascenso de
mariposas

to setup
ca
ask turtles
[
let elev1 100 distancexy 30 30
let elev2 50 distancexy 120 100

ifelse elev1 > elev 2
[set elevation elev1]
[set elevation elev2]
set pcolor scale-color green elevation 0 100
]
crt 1
[
set size 2
setxy 85 95
pen-down
]
reset-ticks
end
Procedimiento de
inicializacin
De ODD a
Netlogo: El
ascenso de
mariposas
Prueba del modelo
Captulo 5:
From Animations to
Science
Observacin
de corredores
Para hacer un modelo cientfico se
necesita observar cuantitativamente la
extensin de los corredores que emergen
de la simulacin.

La anchura del corredor usado por las
mariposas est definido como el nmero
total de puntos usado dividido por la
distancia en puntos desde el inicio
hasta el final.
En este caso, con 50
mariposas que
empiezan en el punto
(85,95), con q=0.4,
el nmero de puntos
blancos es 1956 y la
distancia media entre
el punto de partida y el
punto de llegada es
79.2 puntos, por tanto
la anchura del corredor
es 24.7 puntos.
Observacin
de corredores
Si todos los individuos hubieran seguido el
mismo camino, como cuando inician en
el mismo punto y q=1.0, el corredor
hubiera sido muy angosto, lo cual es
muy poco parecido a la realidad.
Observacin
de corredores


- crear un slider para variar q


- cambiar el procedimiento setup para
que 50 individuos sean creados y
empiecen desde el mismo punto
Observacin
de corredores
to move
ifelse random-float 1 < q
[uphill elevation]
[move-to one-of neighbors]
if elevation >= [elevation] of max-one-of
neighbors [elevation]
[stop]
end
Observacin
de corredores
- aadir una nueva variable a patches-
own llamada used?
- aadir una variable llamada start-patch
a turtles-own
- en setup inicializar la variables, al final de
ask patches[. . .] agregar set used?
false, al final de la sentencia de
inicializacin crt agregar set start-patch
patch-here
- agregar una sentencia al procedimiento
move para que la mariposa cuando pase
por el punto cambie la variable used? a
true
Observacin
de corredores
- agregar una sentencia en el procedimiento go
que se ejecuta despus que se detiene la
simulacin, usando la primitiva let para crear
una variable llamada final-corridor-width a la
que se le da el valor producido por el reporte
corridor-width
- escribir el procedimiento de reporte corridor-
width
- crear una variable local que cuente los puntos
que han sido recorrido al menos una vez
usando la primitiva count
- crear una variable local que es el promedio de
la distancia del punto actual del agente al
punto de inicio con la primitiva mean y
distance

Observacin
de corredores
- calcular corridor-width con las
variables anteriores y reportarlo como
resultado del procedimiento
- en el procedimiento go imprimir el
valor de final-corridor-width
Resultados en
series de
tiempo
Luego de analizados los resultados despus de la simulacin se
procede a realizar los grficos


Aadir grafico en tiempo real
Pasos para
aadir grafico
Modificar en Codigo:
To go
Ask turtles [move]
Plot corridor-width
Tick
If ticks >= 1000 [stop]
[
let final-corridor-width corridor-width
write "Corridor width: " print final-
corridor-width
export-plot "Corridor width" (word
"Corridor-width-output-for-q-" q ".csv")
stop
]
end
Pasos para
aadir grafico
En la ventana ejecutar click secundario aadir grafco
Colocar nombre Corredor width
Borrar el texto dentro del cuadro instrucciones de actualizacin
Correr simulacin en diferentes valores de q
Un Paisaje
Real
to setup
ca
file-open "ElevationData.txt"
while [not file-at-end?]
[
let next-X file-read
let next-Y file-read
let next-elevation file-read
ask patch next-X next-Y [set elevation next-elevation]
]
file-close
ask patches
[
set pcolor scale-color green elevation min [elevation] of
patches max [elevation] of patches
set used? false
]
Un Paisaje
Real

Vous aimerez peut-être aussi