ok, estamos de vuelta con nuestro modelo y esta vez vamos a empezar a agregar algunas
estructuras de red diferentes
la 1ra cosa que tenemos que hacer es probablemente volver sobre la extensión de
NetLogo y ver la forma en que estas estructuras son generadas
si miran, vamos abajo a donde se ve como se generan
una cosa que obviamente queremos es llamar a la generación al azar, esto es algo que
ya estamos haciendo, entonces miremos un poco eso 1ro, debido a que podemos recrear
lo que estamos haciendo; si lo miran, generar el azar en nw, va a tomar a un
linaje de tortuga, un linaje de vínculo, el número de nodos, la probabilidad de la
conexión y un comando de bloques opcionales y el comando de bloques
opcionales es simplemente la misma cosa es crear 100 o lo que sea que se quiera crear
y dicho sea de paso, para todas las extensiones, uno las llama por su nombre,
esto es lo que se llama nw y tenemos que usarla con esa extensión
luego que llamamos al comando, tenemos que llamar al generador de nw aleatorio y en
este caso las tortugas serán 100 y estarán coloreadas en rojo, veamos que podemos
hacer con esto y ver como funciona, ya que es básicamente la misma cosa que ya
estuvimos haciendo; acá tenemos nuestra red, el modelo de nuevo y la 1ra cosa que
debemos hacer antes que nada para, vamos a comenzar a trabajar con las extensiones,
tenemos que llamarla, tenemos que decirle a NetLogo que queremos cargar la extensión
entonces al comienzo de todo, tenemos que poner el comando extensions y dentro de
los corchetes, escribimos nw y podemos chequear si lo está cargando en forma
correcta y parece que todo anda bien, debido a que lo encontró de nuevo
ahora queremos reemplazar, como dijimos la generación actual con ésta, entonces
tenemos la generación de la red aquí, podemos comentarla por ahora probablemente
la borremos, de la forma en que lo estuvimos haciendo antes y lo que es
interesante es que cuando usamos estos comandos de generación de redes, nos
generan la red completa con sus nodos y todo lo demás, entonces es casi como crear
100 o lo que sea, en este caso el comando es create num-agents; podemos deshacernos
de este create num-agents ahora y la forma de hacerlo es simplemente comentando todo
eventualmente lo vamos a borrar, pero por ahora lo voy a comentar
y ahora podemos ir arriba y podemos decir
nw generate random, que es el nombre del comando con el que vamos a trabajar y
necesita el linaje de las tortugas, que en este caso son las tortugas, el linaje de
los vínculos que en este caso son los vínculos y luego el número de nodos que es
el número de agentes y la densidad, la probabilidad de conexiones, ahora bien
antes, tenemos que enfocarnos en 1 solo nodo, pero aquí vamos a especificar una
probabilidad, así podemos decir que en .1 lo que eso implica es que aproximadamente
cada agente estará conectado con el 10% de los otros agentes en la red, ok? podemos
hacer eso y luego igual que cuando creamos los 100 vamos a agregar en estos corchetes
podemos poner todos nuestros comandos estándar allí mismo, ok? podemos contar,
volver a lo que teníamos antes y simplemente cortar y pegar, podemos pegar
y asignar la adopción a falso, podemos pegar
aquí vamos, el valor de xy al azar y podemos pegarlo
y ahora veamos con el botón de check si todo anda ok, parece que sí, entonces
vamos adelante, click en setup y veamos que pasa, oh! parece que está funcionando
ahora hay más nodos de los que esperábamos perdón más vínculos de los que teníamos
antes debido a que la densidad es un poco más alta de lo que era antes, de hecho
podemos decir que si contamos las tortugas hay 50 tortugas y podemos pedirle que
cuente los vínculos y hay 121 vínculos, ahora si pensamos el modo en que las redes
aleatorias funcionan
10% significa que el 10% de todos los posibles vínculos existen, el número de
vínculos que pueden existir es 50 veces 50 debido a que cada nodo puede estar
vínculos conectado con todos los otros nodos, menos con sí mismo, o 50 veces, 49
técnicamente que es 50 por 49 lo que da 2450; ahora el 10% de 2450 es obviamente
245 no 121, entonces por qué sólo tenemos 121? bueno si lo pensamos, las 50 x 49
asume que el nodo, que los vínculos son directos, es decir que tienen 2 sentidos
en realidad lo que necesitamos, el número final para vínculos no direccionados es 50
x 49, que es el número de lazos que pueden tener sobre todo, pero luego dividido por
2, debido a que sólo podemos tener 1 lazo entre 2 nodos cualesquiera, podemos tener
1 lazo que va en ambos sentidos y entonces el número real de vínculos que podemos
esperar, si cada nodo está conectado con otro nodo deberá ser de 1225, el 10% de
ello es aproximadamente 121 y otra vez, saben esto es debido a que es una red
aleatoria, entonces se pueden obtener diferentes valores; mostramos los vínculos
de nuevo y tenemos 121; entonces parece que está funcionando, pero esta es sólo 1
red, simplemente estamos recreando lo que ya hicimos antes, queremos agregar otra
estructura de red; entonces miremos a la red de nuevo y veamos si estamos en el
lugar correcto y una forma simple para trabajar es la red de la conexión
preferencial y una red de conexión preferencial es una red en la cual la
probabilidad de estar conectado, cada vez que un nodo ingresa a la red o es generado
en la red, la probabilidad de estar conectado a otro nodo depende del número
de nodos, está relacionado con el número de vínculos que esos nodos ya poseen,
entonces, uno puede pensar en una red donde los ricos se hacen más ricos, donde
1 nodo tiene muchos vínculos, eso hace que la probabilidad sea mayor de tener aún más
vínculos en el futuro; probemos con una de ellas, pero antes de hacer eso,
necesitamos agregar un elemento en la interfaz que nos permita elegir entre
estas 2 redes diferentes; bajamos un poco esto y agregamos un elemento seleccionador
al que vamos a llamar, lo vamos a llamar redes
vamos a tener 2 opciones, aleatoria
y conexión preferencial; podríamos poner algo más simple como CP, pero está bien
así; vamos a mover esto un poquito para arriba, para que se ajuste bien y ahora
podemos ir ahí
a la rutina de setup, podemos usar los comentarios, crear los agentes
basados en el seleccionador, oh crear la red basado en el seleccionador
si la red es igual al azar, entonces hacemos lo que hacíamos antes
vamos a verificar que todo ande, esto debería estar haciendo lo mismo que venía
haciendo, seleccionamos al azar, setup y parece que sí, que está haciendo lo mismo
son 111 en este caso, lo mismo que hacía antes; parece que está funcionando
ahora vamos a agregar la nueva, pero antes de hacerla limpiemos el código un poco, ya
que tenemos la red para que se seleccione ahora, podemos ir y podemos agregar la de
conexión preferencial, entonces creamos la red, crear la red basado en el
seleccionador, basado en la red al azar para esta y crear la red basados en la
red de conexión preferencial
si la red es igual a la de conexión preferencial
entonces hagamos algo lindo, jaja, en este caso hacer algo lindo es generar
la conexión preferencial, recordemos cual es esa, cualquier linaje de tortuga,
linaje de vínculo, nodos nombrados, entonces a mi me gusta la red al azar
la red de conexión preferencial no toma el parámetro de la densidad de la red y por
lo tanto no tenemos; esta sola, en verdad existe algo como un parámetro de la
densidad que se usa en general en las redes de conexión preferencial que
describen la K, que es el número mínimo de conexiones que puede tener un nodo
cualquiera, pero la versión del modelo de NetLogo no lo tiene implementado, entonces
si quieren y están interesados lo pueden implementar por ustedes mismos; ok es muy
similar, de otra manera puedo decir que los vínculos de la tortuga, número de
agentes, tiene un valor de 0.1 que está ahí y en el azar
hagamos un comentario acerca de esto, siempre es bueno hacer un comentario
cuando tenemos estas diferencias en el setup; entonces vamos a decirle que ignore
el deslizador de la densidad, de esa forma si alguien busca en nuestro código más
adelante, podrán ver que no nos olvidamos y que en realidad acá está
y además de esto, todo el resto del código es básicamente el mismo que como era antes
entonces podemos copiar y pegar; de hecho si fuéramos realmente inteligentes y
quisiéramos mantener nuestro código en el mínimo, podemos simplemente hacerlo de una
vez por fuera, ya que les pedimos a las tortugas que se asignen a los valores x e
y que vienen por defecto, etc. luego de que generemos todas las redes
veamos si funciona, primero que nada, parece que todo está correcto,
sintácticamente correcto, ahora tenemos una red aleatoria y luego veamos si
podemos tener nuestra red de conexión preferencial; seguro que sí, ustedes
pueden ver que obviamente mirando
es un poco diferente
en realidad me doy cuenta, que ya creamos el deslizador de la densidad, lo tenemos
cableado, pero podemos decirle que para la red de conexión preferencial es un poco
diferente, debido a que si elegimos la red al azar, con el valor cableado de 0.1 se
ve como una densidad de red; entonces tomemos todo esto y lo bajamos un poco y
le vamos a agregar un deslizador para la densidad, así podemos controlar en forma
directa
desde 0.5 hasta 1.0
lo alineamos un poco, ahora
podemos reemplazar este 0.1 por la densidad
es siempre muy útil hacer un doble chequeo para asegurarnos que el resultado es el
mismo; entonces asignemos el valor a 0.1 y veamos si se comporta de manera similar,
lo hace y si le pedimos que nos muestre la cantidad de vínculos
es aproximadamente igual; esto significa que está funcionando, así que ahora
tenemos una red aleatoria, que tiene un deslizador para la densidad que nos
permite controlar la densidad de la red y ya fue verificada; si incrementamos este
deslizador, lo que obtendremos son más cantidad de vínculos y seguramente ahí los
estamos viendo y si vamos acá podemos verificarlo y ahí están; ahora como ya les
mencioné, cuando construimos la conexión preferencial se ignora el deslizador de la
densidad; así que como pueden ver, aún cuando la densidad sea alta, no se
agregarán más vínculos
hacemos una doble verificación rápida para asegurarnos de que nuestro código está
funcionando de manera apropiada, ahora una de las cosas lindas acerca de la conexión
preferencial es que debería formar una estructura con concentradores; un tipo de
conexión preferencial; pero lo que podemos ver ahora debido a que nuestros agentes
están distribuídos por todas partes; una de las cosas que tal vez quieran hacer
cuando trabajan con estructuras de red es agregar algo de código para poder acomodar
la estructura de la red un poco mejor y hay muchos comandos que están construídos
en NetLogo para trabajar con ello y no son parte de la extensión de la red sino que
son comandos estándar, uno de ellos es por ejemplo se denomina layout spring y lo
podemos buscar en google
ustedes pueden ver que permite acomodar a las tortugas, donde básicamente
dependiendo de la idea, los vínculos pueden estirarse y se pueden posicionar de
acuerdo a sus atributos
y hay distribuciones detalladas que nos indican qué significa esto, pero este es
el algoritmo estándar para estas redes y hay un montón de otros algoritmos, si van
para atrás, podemos ir simplemente a ver el algoritmo del diseño y
el diseño afecta a las tortugas
toda clase de diferentes parámetros, simplemente copio y pego desde la
documentación, de hecho si copio y pego toda la cosa, repeat 30, layout spring etc
puedo atraparlo, ir a mis modelos
antes de hacer el texto, puedo pegar ahí y esto me mostrará el modelo, la red se va
a ver mejor, hacemos setup ahora y pueden ver que se ve un poco mejor la estructura
y funciona para la red aleatoria, la red aleatoria puede ser muy compacta
con esto podemos verla de una manera más abierta
pero si quieren verla, haciendo todo lo que haya que hacer, ustedes pueden también
copiar y pegar nuevamente
apagar el deslizador
y colocar en el observador y ver como se mueve de manera lenta
y de hecho para este diseño, que se ve como si lo usáramos muy a menudo
en cualquier caso, la doble verificación nos permite ver que la difusión está
funcionando perfectamente, setup y go
déjenme acelerarlo un poco, setup y go, setup y go, parece estar funcionando
hay diferencias entre las redes? puede que sí, puede que sí, tengo la densidad que es
bastante similar, es un poco más lento, voy a bajar la densidad un poco para el
azar
uh! esto pasa cada vez que, ya hablaremos de ello, pero esto es un lindo caso de un
problema de dimensiones, en este caso en particular, nosotros generamos un agente,
otros agentes que no están conectados a la red
podemos simplemente ignorarlos, como lo voy a hacer ahora y podemos correr el
modelo de nuevo o una mejor forma de lidiar con ello puede ser que tengamos a
la influencia social en 0, si no estás conectado a la red y lo voy a dejar así y
se los voy a dar como tarea para el hogar
esto es todo para este modelos, cuando volvamos voy a hablar acerca de que quiero
que hagan para el modelo 7, nos vemos
en el modelo 7 quiero expandir el modelo de nuevo y esta vez quiero crear nuevos
tipos de agentes para el modelo, ok? en el modelo actual, todos los agentes son lo
mismo, en términos de su conducta, hacen las mismas cosas, pero lo que quiero hacer
en el modelo 7 es crear un nuevo tipo de agente que se llamará "influenciador",
ustedes pueden pensar en un clase de mirada estándar que hay influenciadores e
imitadores cuando hablamos de difusión, especialmente en la difusión de
innovaciones; lo que vamos a hacer es agregar esta noción de influencia
pero obviamente el influenciador va a tener que ser diferente en algún sentido
de los otros agentes y la forma en que son diferentes es que van a tener una etiqueta
más grande por sobre los otros agentes y esos otros agentes tendrán potencialmente
menos influencia sobre ellos, ok? entonces quiero agregar un "peso" que permita
controlar cuanta influencia tienen los influenciadores y luego, la otra cosa que
quiero hacer es graficar la adopción que hizo cada tipo de agente en forma separada
de cada uno; ese es el objetivo para el modelo 7, ustedes pueden pensar en hacerlo
en muchas formas diferentes, yo les recomiendo que miren un poco en, puede ser
en algunos de los códigos que andan por ahí y que les permiten controlar a los
agentes diferentes y en particular, algo de lo que ya hablamos, que son los linajes
y los linajes te permiten de tener clases de agentes, más allá de las tortugas, no
es necesario trabajar con las tortugas, ustedes pueden usar diferentes tipos de
linajes, construídas sobre las tortugas miren un poco el tema de los linajes
y cuando volvamos les voy a mostrar como lo hice