YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Spanish, Argentinian subtitles

← abm 2 5 doc random

Get Embed Code
3 Languages

Showing Revision 8 created 10/18/2017 by diego diaz.

  1. Ahora que tenemos nuestro modelo y que es
    lo que queríamos hacer
  2. Quiero usar el modelo para hablar algunas
    cosas claves de los MBA
  3. Antes que nada, hicimos un buen trabajo
    durante todo el tiempo
  4. documentando nuestro código a medida que
    lo íbamos escribiendo
  5. Pero una cosa que seguramente querramos
    hacer es documentar también en la tab info
  6. Voy a la tab info y hago click sobre edit
  7. y bajo la etiqueta "Qué es esto?", por
    ejemplo, podemos decir:
  8. "Este es el modelo del juego de Héroes y
    Cobardes del grupo Fratelli"
  9. y después pueden ir y completar todas las
    otras secciones
  10. Una cosa que yo encuentro muy valiosa como
    codificador o programador es escribir
  11. lo que llamamos una descripción de pseudo
    código de la forma en que trabaja
  12. Generalmente yo lo hago en la sección
    "Cómo funciona?"
  13. porque eventualmente puedo incorporarlo
    ahí
  14. Aunque también es posible que querramos
    salvarlo en un documento separado
  15. si no lo queremos incluir en el tab de la
    info directamente
  16. Siempre pongo en el procedimiento de
    inicialización, cómo va a funcionar
  17. y si va a hacer un procedimiento iterativo
    o de tick
  18. Entonces la inicialización es el de
    "comienzo" y el iterativo es el de "ir"
  19. qué es lo que queremos que haga el modelo?
  20. y a veces hacemos esto aún antes de crear
    el modelo
  21. en este caso conozco el modelo muy bien
    así que empiezo ya escribiéndolo
  22. queremos crear un grupo de tortugas y tal
    vez en un trabajo futuro
  23. querramos que el número de tortugas pueda
    ser asignado con un slider en la interfaz
  24. esto no lo he hecho en este modelo, pero
    es algo que pueda querer en el futuro
  25. puede que querramos que cada tortuga se
    mueva a una posición al azar
  26. podríamos querer que el condicional esté
    basado en las personalidades
  27. entonces podemos tener un seleccionador
    llamado PERSONALIDADES que especifica la
  28. conducta. Muchas veces en el código de
    NetLogo, si hablamos de una variable
  29. en el pseudocódigo lo escribimos en
    mayúsculas
  30. ponemos el ARRANQUE, el CORRER y el de
    PERSONALIDADES en mayúsculas
  31. y NUMERO, que es nuestro número de
    tortugas
  32. para poder distinguirlos del resto de lo
    que estamos escribiendo
  33. entonces podemos decir:
  34. si PERSONALIDADES = "Bravo" entonces la
    tortuga se vuelve azul
  35. y podemos hacer lo mismo para la
    personalidad cobarde
  36. si PERSONALIDADES = "Cobarde" entonces
    la tortuga se vuelve roja
  37. y podemos hacer lo mismo para la opción de
    mezcla
  38. si PERSONALIDADES = "Mezcla" entonces la
    tortuga se vuelve azul o roja al azar
  39. Podemos decirle a cada tortuga que elija
    un AMIGO y un ENEMIGO
  40. y luego volvemos a cero los ticks
  41. Esto es como si fuera una descripción en
    lenguaje natural
  42. podemos ir y terminarlo escribiendo la
    descripción de la rutina "GO"
  43. Cada tortuga azul
  44. en verdad, me di cuenta que ya lo había
    hecho
  45. y por eso es que es muy importante
    documentar siempre todo
  46. si vemos, cuando lo estaba escribiendo
    dije que la tortuga era azul si era brava
  47. pero en el código puse que la tortuga se
    volvía azul si era cobarde
  48. mejor cambiemos esto y mientras lo estamos
    haciendo
  49. y por esto es que es importante chequear
    siempre el código
  50. cada tortuga que está en azul, se mueve
    lejos de su enemigo y hacia su amiga
  51. y como estas son variables puedo ponerlas
    en mayúsculas
  52. y luego podemos hacer lo mismo
  53. cada tortuga que es roja se aleja de su
    enemigo y va hacia su amiga
  54. y esto es todo. Es la descripción en
    lenguaje natural del modelo
  55. y es un pseudocódigo que le puedo mostrar
    a alguien más
  56. y preguntarle qué piensa de este modelo
  57. Entonces vemos que es importante
    documentar
  58. documentar el modelo tanto en términos
    de un documento separado
  59. como dentro del código, ya que hace más
    sencillo decir
  60. si nuestro modelo conceptual y el modelo
    implementado son similares
  61. Una de las cosas interesantes que encontré
    sobre este modelo
  62. es que cuando elegimos "mixto" nunca
    obtenemos el mismo resultado
  63. siempre el resultado es diferente
  64. Y esto se debe a que NetLogo coloca al
    azar a todas las tortugas en el mundo
  65. Es interesante señalar que las
    computadoras no posee una noción de azar
  66. real, lo que hace en realidad es usar un
    generador de números aleatorios
  67. para crear lo que llamamos números pseudo
    aleatorios
  68. Estos números se generan usando un proceso
    determinístico
  69. especificando una "semilla" aleatoria
  70. Lo que hace NetLogo es generar una buena
    cantidad de semillas aleatorias cada vez
  71. que se corre el modelo, y usar esas
    semillas para decidir que valor va a usar
  72. Uno puedo configurar la semilla
  73. Les voy a mostrar, si la semilla aleatoria
    es 188 "random-seed- 188"
  74. y lo que hago es pedirle que me muestre
    100, "show random 100" un par de
  75. veces, lo que hace es generar 3 números
    aleatorios
  76. y si ahora asigno a la semilla aleatoria
    el mismo valor, 188
  77. Voy a obtener los tres mismos números
    aleatorias en una vez
  78. Esto implica que si veo un patrón de
    conducta y asigno la semilla aleatoria
  79. puedo entonces, recrear el patrón, aún
    cuando estoy usando, técnicamente, un
  80. valor aleatorio. De hecho esto ocurre
    cuando corro una buena cantidad de MBA
  81. en los que asignamos la semilla antes de
    correrlos
  82. para que si algo interesante pasa en el
    modelo
  83. uno puedo volver atrás y mirar los
    resultados un poco más tarde
  84. De hecho, si cargamos el modelo de Héroes
    y Cobardes
  85. que está en la librería de NetLogo
  86. Lo buscamos en la sección "IABM textbook"
    en el capítulo 2
  87. Lo que hemos hecho es utilizar algunas
    configuraciones predeterminadas
  88. y qué es lo que hacen esas configuraciones
    predeterminadas?
  89. bueno, si miramos , observaremos que hay
    un comando corriendo que se llama "preset"
  90. que tiene esta cadena larga, a
    continuación
  91. si miramos el código, lo que hace "preset"
    es tomar una semilla de número aleatorio
  92. y asignar la semilla de número aleatorio a
    ese valor
  93. y de hecho también hay que asignar el
    número de agentes a un valor específico
  94. debido a que si el número de agentes es
    diferente
  95. entonces tenemos un número de llamados
    diferentes
  96. entonces, qué es lo que nos permite hacer
    todo esto?
  97. bueno, cuando hacemos click sobre alguno
    de estos botones de configuración
  98. siempre obtenemos el mismo patrón
  99. entonces vamos a hacer click en el patrón
    "dot"
  100. y si lo dejamos correr
  101. vemos que, eventualmente, todo confluye
    en un solo punto
  102. Este es un patrón muy común para ver
  103. si hacemos click sobre el botón "frozen"
    y lo dejamos correr
  104. llegamos a este estadío que es muy
    interesante
  105. donde vemos a un grupo de tortugas
    congeladas en el medio del mundo
  106. Aquí vemos uno de mis favoritos, el patrón
    "seductor"
  107. que muestra a este grupo seducido,
    rebotando de borde en borde
  108. el patrón "espiral"
  109. que crea este efecto en espiral justo en
    el medio
  110. y podemos obtener otros "seductores" o
    "yo-yo"
  111. o el patrón de "bandada deambulatoria"
    como lo bautizamos
  112. y el "generalmente cool que de golpe se
    frena"
  113. nunca le pusimos un nombre a ese patrón
  114. Esto muestra tanto un problema como un
    beneficio del mundo de NetLogo
  115. y que es que vamos a poder, en algún
    sentido, controlar el azar
  116. de lo que está ocurriendo
  117. pero es algo en lo que hay que pensar,
    cuando generamos nuestros modelos
  118. ya que implica lo que el azar significa
  119. Esto fue todo por esta semana, excepto por
    el resumen que es lo que sigue
  120. El examen va a estar en vivo en breve
  121. Muchas gracias, estaremos comenzando la
    unidad 3
  122. donde estaremos hablando de como extender
    modelos que fueron construidos por otros