Table of Contents
Open Table of Contents
El Juego
Resumen del juego
Tenemos dos roles: los jugadores y quien guía. Estas personas tienen unas fichas que se mueve por un tablero. A cada una de las casillas del tablero le corresponde una distribución de probabilidad discreta. Quienes juegan no saben cuales son las distribuciones de probabilidad, su objetivo es caracterizar cada una de las distribuciones de probabilidad. Para esto pueden solicitar información sobre las casillas en las que está su ficha. Quien guía el juego tiene esa información y tiene el objetivo de remover a todas las piezas de quienes juegan, al alcanzarlas a lo largo del juego.
Preparación del juego.
Quien guía el juego comienza por “generar un tablero”. Para ello usa el software que describimos en el presente manual.
Desarrollo de una partida
Jugadores:
Pueden hacer las siguientes acciones:
-
Solicitar Información: Deben elegir entre:
A) Un estadístico de centro entre el promedio, la moda la mediana. B) Un estadístico de variabilidad entre la desviación estándar, el rango, el mínimo o el máximo. C) Un estadístico de forma, como el sesgo. D) Una muestra de valores de la distribución (lanza un dado para determinar cuantos)
-
Resolver el acertijo con la información que ya tienen.
-
Lanzar un dado y moverse ese número de casillas.
-
Si han removido su ficha del juego (ver abajo), lanzar un dado. Si sacan el máximo vuelven a jugar.
Guía
-
Primeros turno: Debe lanzar un dado. Si obtiene el valor más alto puede comenzar a moverse por el tablero.
-
Turnos posteriores. Lanza un dado, se mueve la mitad del valor del dado, redondeado hacia abajo. Si llega a la casilla donde esté una o varias fichas, decidirá cuál de ellas es removida del juego.
El software
Hemos construido un programa que genera los diferentes tableros necesarios para utilizar el presente juego. Este código está disponible de manera abierta en la página web git.sr.ht/~gavox/gameDesign.
Derechos Patrimoniales
Siguiendo el Estatuto Profesoral, Acuerdo 0003 de 2018 de la ESAP, en su ARTÍCULO 117:
“Los derechos patrimoniales sobre las obras creadas por los profesores de la Institución en su calidad de servidores públicos y en cumplimiento de las obligaciones constitucionales y legales de su cargo, serán de propiedad de la ESAP.” … “El contenido de los derechos patrimoniales involucra el derecho de transformación, de reproducción, de comunicación pública, de distribución y de seguimiento posterior, en los términos definidos en la normativa vigentes.”
Cómo obtener el código
Hemos mantenido las versiones del código utilizando el software de control de versiones GIT. Esto implica que la versión más actualizada del código está disponible en modalidad de sólo lectura mediante el siguiente comando git:
git clone https://git.sr.ht/~gavox/juegoDistribucionesDiscretas
También es posible acceder al código como colaborador. En este caso se debe generar una cuenta la página web SourceHut, en https://sr.ht. Esta es una comunidad de desarrollo de software que sigue principios éticos y tiene una comunidad vibrante de desarrolladores. En este caso, el código se obtiene con:
git clone git@git.sr.ht:~gavox/juegoDistribucionesDiscretas
Instalación y uso
El código ha sido escrito en Python. Para correrlo se debe tener instaladas las siguientes librerías:
numpy, MdUtils
La información sobre los tableros quedará registrada en un documento MarkDown. Para ver este documento se debe tener un visor especializado en este tipo de documentos. En Linux, por ejemplo, se puede trabajar con:
pandoc, grip
El manual fue escrito en . Se incluye una versión ya compilada, pero si se quiere tener acceso a la versión más actualizada, o si se quiere modificar el manual o el Handout, se debe incluir un compilador de . Recomendamos:
pdflatex
Organización de la información
Al instalar el código se generan las siguientes carpetas:
-
03_informe: Aquí están los siguientes archivos:
a) 01_matJuegoDistProb.pdf Documento con las reglas del juego, un ejemplo de cómo se desarrollaría una partida, y 10 tableros ya generados para su uso.
b) 04_ResumenHandout.pdf Documento resumido de las reglas de juego, para ser entregado a los jugadores; ayudándoles a guiar el desarrollo de una partida.
En esta carpeta también se encuentra el código fuente que permite la creación de estos dos archivos, en formato .tex, para ser generados con el software pdflatex.
-
04_codigo Aquí están los siguientes archivos:
a) simulaJuego.py código fuente del programa. Es el ejecutable que se debe correr para generar un nuevo tablero.
b) modelCONSTANTS.py Parámetros del código, que explicamos más adelante.
c) distriCLASS.py Librería en la que desarrollamos las clases que representan las diferentes distribuciones de probabilidad. Es el archivo que se querría modificar si se pensara en aumentar el número de distribuciones discretas de probabilidad a incluir en el juego
d) LICENSE Descripción de la licencia CC-ShareAlike-NoCommercial 4.0 que rige el desarrollo del código
e) try1.py Código sencillo para probar el desarrollo del juego.
Parámetros
Actualmente se incluyen los siguientes valores modificables en el archivo modelCONSTANTS.py:
Valores de la Geometría
Lx : Número de columnas del tablero
Ly : Número de filas del tablero
orden de los tipos
tiposOrdenados : identifica si en cada fila hay un sólo tipo de distribución, o si no hay ese orden. Por defecto tiene el valor de False, luego no hay orden
Número de Valores a Llenar
Nval : Número de datos a mostrar en la tabla de valores correspondientes a las distribuciones.
Generador Aleatorio
semilla : valor que inicializa el generador aleatorio, debe cambiarlo para generar nuevas distribuciones.
Distribuciones Uniformes
maxUIN : valor máximo que puede tomar la función uniforme
minX : mínimo valor posible
maxX : máximo valor posible
Distribuciones Binomiales
maxRep : máximo número de repeticiones para las distribuciones binomiales.
Posibles Modificaciones
-
Actualmente sólo se trabaja con las siguientes distribuciones discretas: uniforme, binomial, Poisson. Una posible modificación es ampliar la posibilidad de distribuciones discretas, o aún incluir algunas distribuciones continuas.
-
A futuro estamos pensando en construir un juego de computador, en el que no sea necesaria la presencia de un Guia. Se plantea la posibilidad de pasar el código a otro lenguaje de programación, como por ejemplo R.
Información general
El proyecto hace parte del trabajo de investigación que llevo a cabo con el laboratorio de innovación en administración pública.
Autoría
El software ha sido creado por los siguientes autores:
| Persona | Filiación | Roles | Página web GIT |
|---|---|---|---|
| Gabriel Villalobos Camargo | Escuela Superior de Administración Pública, ESAP, ESAPLab, Subdirección Nacional de Proyección Institucional | Lider del proyecto, contextualización, arquitectura del software, programación, revisión del código, validación del código | https://git.sr.ht/~gavox/ |
| David Julián Molina Beltrán | Escuela Superior de Administración Pública, ESAP | Coinvestigador, contextualización, arquitectura del software, programación, revisión del código, validación del código | |
| Carlos Andrés Barco Rojas | Escuela Superior de Administración Pública, ESAP, ESAPLab, Subdirección Nacional de Proyección Institucional | Coinvestigador, contextualización, arquitectura del software, programación, revisión del código, validación del código |
Características del Software
Robustez
Dado que es un software ligero, puede correr sin ningún problema en diferentes entornos de ejecución. Para éste software no hay situaciones difíciles.
Extendibilidad
La estructura modular en la programación orientada a objetos del presente código, permite extenderlo de diferentes formas. Por ejemplo, se pueden generar nuevos tipos de distribuciones, que quedarían incluidas como nuevas clases dentro del archivo distriCLASS.py. Por otro lado, al tratarse de un código Python, es posible extenderlo usando librerías de éste lenguaje de programación.
Desempeño
El software está contenido en una carpeta que pesa tan sólo 52K. Durante su ejecución la huella en memoria ram es mínima.
Usabilidad o amigable al usuario
Una vez se han instalado las librerías, el software puede usarse de manera sencilla. Desde la línea de comandos con el ejecutable ./simulaJuego.py, o desde un entorno de ejecución de iPython con el comando %run simulaJuego.py. Por lo tanto es muy amigable de usar. También se pueden modificar los parámetros de manera sencilla, editando el archivo modelCONSTANTS.py, para trabajar en condiciones diferentes.
Integridad
El software no trabaja con datos sensibles. Al ejecutar el código quedan registrados los resultadcos en una serie de archivos en el directorio de ejecución, de tal manera que se pueden revisar los datos generados a futuro.
Portabilidad
Sólo requiere tener acceso a Python y algunas librerías que están disponibles en la Web. De tal modo que puede usarse desde diferentes sistemas operativos, o también puede usarse en línea en sitios como google colab.
Compatibilidad
No hay versiones anteriores, pero planificamos que sea compatible con versiones futuras.
Mantenimiento
Al estar alojado en un sistema de control de versiones en línea, se puede acceder al código sin poroblemas. Esto permite que a futuro pueda ser mantenido no sólo por los autores iniciales, si no por cualquier persona con conocimientos disciplinares en estadística y de programación de Python. A su vez, su escritura modular permite que sea de fácil mantenimiento.
Documentación – Que esté suficientemente documentado
La documentación del código está disponible en éste archivo, en la página web https://gavox.srht.site/posts/manual-usuario-juego_el-misterioso-tablero/ y en la página web del código https://git.sr.ht/~gavox/juegoDistribucionesDiscretas. Así mismo, dentro de la carpeta 03_informe está documentado el juego mismo del que este software es parte íntegra. Con los documentos: 01-matJuegoDistProb.pdf, 04-ResumenHandout.pdf