Hola y bienvenidos de vuelta, en esta unidad vamos a comenzar a trabajar con una
red para el modelo y el desafío que les dejé al final del último video la otra vez
entonces hay varias formas en las que se puede hacer, ahora mismo si miramos el
modelo, sólo para refrescar la memoria, básicamente adoptan basados en el patrón
general de adopción, esa no es la forma más usual de los modelos basados en
agentes si queremos evitar la información global, pero la otra cosa es que sabemos
que en realidad la gente no mira a todas las personas que adoptaron para poder
tomar una decisión, sino que miran a sus vecinos y a su red social; queremos
construir, empezar a escribir el código que nos ayude con esa red social, entonces
la 1ra cosa que hacer es en verdad agregar una red entre los agentes, entonces si
vamos arriba a la rutina de setup, podemos ir debajo de donde creamos a los agentes y
luego de crearlos, ya que necesitamos que los agentes anden por ahí y los conecten
podemos agregar algún código
crear una red de agentes, podemos agregar algún código que pueda crear esa red y lo
que vamos a hacer es pedirle a cada tortuga que cree un vínculo con uno de
las otras tortugas y una de las razones por las que amo NetLogo es que con esta
línea ahí, se ve justo como uno lo quiere el comando es create link with y crear el
vínculo con crea un vínculo no direccionado genérico entre 2 agentes
ustedes pueden también crear vínculos desde o hacia y así crearlo directos,
ustedes también pueden crear vínculos de linajes, los links son agentes igual que
las tortugas o los parches y entonces uno puede tener otros tipos de linajes
en este caso vamos a usar lo estándar, lo que viene por defecto, "create-link-with"
otras tortugas, otras toman un conjunto un conjunto de agentes y remueve la tortuga
actual de ese conjunto de agentes, entonces esto quiere decir que vamos a
tener a las tortugas más allá de la tortuga llamadora y va a elegir alguna al
azar, entonces va a ser uno de los agentes que no es quien llama
veamos si funciona, setup, luego go, setup go, podemos ver la red y una cosa, dicho
sea de paso, que quiero que veamos antes de comenzar esto, pero si ustedes notan
alguna diferencia se debe a que en su mundo está prendido el "world wrapping"
así que lo pueden apagar, si es ese el caso, como acá, a veces los vínculos dan
la vuelta al mundo, dejenme decir que es difícil de ver quienes son los que
comparten el vínculo, por lo que les recomiendo, para este modelo, que apaguen
el "world wrapping", y eso va a hacer que los vínculos queden dentro del mundo y de
ese modo es mucho más fácil de ver
creamos la red social en forma correcta, pero que pasa si queremos verificarla? es
siempre importante que se verifique cada uno de los pasos, una cosa que podemos
hacer es verificar si cuántos vínculos hay ahora bien, hay 50 agentes en el modelo,
cada uno de ellos posee un vínculo, por lo que esperamos que haya 50 vínculos, ok?
veamos, mostrar la cantidad de vínculos
oh! hay 47, bueno, puede que haya sucedido algo, podemos verificar de nuevo, vamos a
hacerlo de nuevo, ahora hay 49
48
49
50, al menos en este caso anduvo bien, por qué a veces no tenemos los 50 vínculos?
bueno, tiene que ver con una de las cosas que estamos haciendo en el código y en el
código, si lo miramos, pedimos que cada tortuga cree un vínculo con alguna de las
otras tortugas, ahora puede que 2 de las mismas tortugas se elijan entre sí,
entonces si la coincidencia es 0 entonces crea un vínculo con la tortuga 1 y la
tortuga 1 decide crear un vínculo con la tortuga 0
debido a la forma en que NetLogo funciona en vez de crear 2 vínculos, que son no
direccionados, en verdad la 2da vez que crea un vínculo desde el llamado,
básicamente falla en forma silenciosa no te avisa que no se creó ese vínculo; en la
mayoría de los casos eso es lo que queremos hacer, está bien, pero es algo de
lo que tenemos que estar precavidos si es que estamos esperando que se realice
exactamente al mismo momento cada vez
esa es una forma sencilla de crear una red aleatoria, pero aún no están adoptando con
base en la red social, ese es el siguiente paso, ahora vamos a ver como adoptar
basados en la red social, podemos ir al código de la adopción y no queremos
cambiar el de la influencia global, eso pasa sin importar la red social, pero
queremos cambiar la influencia social, acá tenemos que se adopta en función de la red
social y podemos decir que desde, basado en
la red
el código que está acá, que cuenta las tortugas que adoptaron, dividido por la
cantidad de tortugas; en vez de basarnos en todas las tortugas del modelo, ahora
queremos basarnos en nuestros vínculos en nuestros vecinos; en NetLogo hay una forma
sencilla de hacer eso, 1ro que nada podemos obtener el número de vecinos que
tenemos, simplemente diciendo que las tortugas del vecindario sean aquellas con
las que está vinculada y las tortugas vinculadas es un comando nativo que
reporta todas las tortugas que están conectadas por los vínculos y por supuesto
que hay vínculos de vecinos entrantes y vínculos de vecinos salientes, todas esas
clases de cosas; entonces 1ro contamos las tortugas, pero ahora el total de los
vecinos
pero aún tenemos que modificar el numerador de nuestra división que ahora es
el total de tortugas que adoptaron, entonces cuando queremos decir que los
vecinos que adoptaron que sean aquellos que están vinculados
con aquellos que adoptaron
todos los vínculos de los vecinos que adoptaron y que aún están en el conjunto
de agentes, entonces tenemos que para hacerlo funcionar tenemos que decirles,
que cuenten el número de vecinos que adoptaron; podemos buscarla en esta
variable local que está acá, el contador ya está ahí y no acá abajo, todo está bien
esa es simplemente la forma en que escribí esta versión particular del modelo
ok ahora deberíamos tener a la influencia social ya funcionando
veamos si es así y seguro, eso parece y parece modificar el patrón de adopción, ok
de una curva tipo S anteriormente, ahora vemos una curva más lineal y eso se debe a
que tenemos mucha menos influencia que está sucediendo en diferentes modos, ok
debido a que siempre que hay una influencia de una red social eso implica
que no es toda la red y entonces queda que la evolución es un poco diferente en su
dinámica; más aún se ve que es un poco más largo el tiempo que se necesita para
completarlo, en general vemos que suele tomar 20 ticks antes de verlo, ahora vemos
que es 46; eso es también típico, entonces el período en el que nuestro código está
corriendo en forma correcta, quiero mencionar que hay 2 cosas que si quieren
pueden hacer por ustedes mismos o usar este modelo, una será, ustedes saben, como
ya les dije, ustedes crean vínculos atrás y adelante, es decir que crean vínculos no
direccionados, una forma de hacerlo sería agregar un verificador que diga, no cree
un vínculo con una tortuga que ya forma parte de tu vecindario de vínculos y les
voy a dejar a ustedes que escriban ese código, no es muy complicado, es fácil de
hacer, pero puede que quieran mirar un poco, la otra cosa es que aún cuando no
podamos pensar en la influencia social está funcionando basados en que el modelo
cambia un poco, no tenemos realmente una prueba fuerte, entonces si quieren yo
sugiero que vean a la infuencia social y a la forma en que es calculada y ustedes lo
pueden hacer fácilmente inspeccionado a los agentes y figurándose como se puede
calcular y cuando no
ok, esto es todo por ahora y cuando vuelva quiero mostrarles como modificar este para
el modelo próximo y en el modelo próximo vamos a mirar
hagamos setup ahora y veamos como la red completa se destruye, ok? pero que pasa si
queremos que la red permanezca constante? así podemos experimentar con la misma red
pero con diferentes tipos de difusiones, vamos a jugar un poco en el próximo modelo
y en el modelo que le sigue vamos a ver las limitaciones del modelo, es una red
completamente aleatoria, y sabemos que en verdad no lo es, las redes sociales son
diferentes de las redes aleatorias y entonces en el modelo que le sigue vamos a
jugar un poco agregando una red social que sea más realista, ok gracias
ok acá tenemos el objetivo para que ustedes puedan modificar, quiero que se
den cuenta de como agregar un nuevo botón a la interfaz que les permita correr sobre
la misma red diferentes tipos de difusiones en diferentes tiempos
esto les permitirá mantener la red constante y simplemente modificar las
propiedades de la disfusión y observar como eso afecta el proceso de difusión
esto es algo que comunmente se hace en los Modelos Basados en Agentes, mantener
ciertas cuestiones constantes, mientras se modifican otras entonces algunas veces no
querrán destruir el mundo en forma completa, sino destruir partes del mundo
y creo que ustedes pueden hacer eso y cuando vuelva les mostraré cómo lo hice