Herramienta EM

En esta entrada voy a compartir una herramienta programada en Java para filtrar las columnas de nuestra madre por las EM de todas las categorías de 10 a 14.

Antes de nada comentar que no debe usarse para filtrar las 4'7 millones de columnas, ya no por el tiempo requerido, que sería excesivo, si no porque también puede ralentizarse a medida que avance y/o dar un error de memoria. El algoritmo realiza una memorización de premios de columnas ya calculadas para acelerar el proceso, de hecho observaremos que al filtrar nuestra madre irá cogiendo velocidad al no necesitar de algunos nuevos cálculos.

También me han avisado de que otras herramientas para calcular las EM no coinciden con mis cálculos, y que ni siquiera coinciden entre ellas, por lo que me surge cierta duda acerca de la fórmula y algoritmo empleados. Como es algo mío, y que he repasado a conciencia, voy a presumir de que mi algoritmo es el correcto, aunque de momento no pueda garantizarlo al 100%. Las herramientas que me han comentado mis compañeros son el Quininac (requiere licencia para ese apartado), y la herramienta de EM de Joan Duatis. Desconozco si esas herramientas calculan una aproximación para acelerar el cálculo, o hay algo que se nos escapa, pero si el que lee se fía de mí, puede emplear tranquilamente mi programa.

Como decía es una herramienta programada en Java (no confundir con JavaScript). Lo hago así, porque descargando la máquina virtual de java, se puede ejecutar en cualquier computadora, ya sea Mac, Windows o Linux. La JVM (Java Virtual Machine) puede descargarse en https://java.com/en/download/ eligiendo el sistema operativo de nuestro ordenador. Si descargamos el JRE lo haremos sólo del entorno de ejecución, y si descargamos el JDK (este no es necesario) también podremos compilar Java además de ejecutarlo.

El programa debe ejecutarse mediante una órden en consola de comandos. Debemos abrir la consola de Windows y escribir en ella, por ejemplo:

java -jar "C:\Users\pablo\Desktop\ALLEM1X2\ALLEM_v0_1.jar" -ar "C:\Users\pablo\Desktop\Jornada_Quiniela\Pruebas\madre_LH_j60.txt" -o "C:\Users\pablo\Desktop\Jornada_Quiniela\Pruebas\j60_emt_10_madre.txt" -r "C:\Users\pablo\Desktop\Jornada_Quiniela\Pruebas\reales_LH_j60.txt" -a "C:\Users\pablo\Desktop\Jornada_Quiniela\Pruebas\apostados_LH_j60.txt" -ap 1400000 -ems 0.0/0.0/0.0/0.0/0.0 -emt 1.0 -sort emt -h 8

Aunque pueda parecer largo, la mayor parte se trara de rutas de archivo. Deberemos escribir las nuestras, o mucho más cómodo, arrastrar con el ratón el archivo a la consola para que automáticamente aparezca la ruta completa. Debemos empezar con java -jar, con ésto se indica que se invoca al JRE de Java para que ejecute el .jar que hay el el .zip que adjunto al final de esta entrada. Es un .jar, no un .exe, es un ejecutable Java que no he compilado específicamente para cada plataforma, pero que se ejecuta con el JRE que nos habremo descargado en el anterior enlace.

El resto son todo opciones de introducción de parámetros que comienzan por el signo menos (-). Así para el archivo de la madre introduciremos -ar seguido de espacio y la ruta del archivo de texto de nuestra madre. El resto de opciones se encuentra en el LEEME.txt adjunto en el .zip, que viene a ser un manual de instrucciones.

Si se nos hace pesado escribir en consola todos los parámetros, podemos editar el .bat que también incluyo en el .zip. El .bat debe editarse primero en cualquier procesador de texto para incluir nuestras rutas, y nuestras opciones personalizadas. Si siempre trabajamos en la misma carpeta ahorraremos tiempo de edición, y será más cómoda la ejecución, ya que una vez editado, basta con hacer doble click en el .bat para que se abra la consola y se lance la órden. El problema de los .bat (sólo para Windows, un .sh para Linux) es que si se produce algún error el shell se cerrará y no nos drá tiempo a leer el código de error, por lo que nos quedaremos sin pistas de qué ha ido mal. Igualmente cuando termine el proceso la consola se cerrará inmediatamente.

Un error común con el programa que comparto es el de dar las columnas de nuestra madre con pleno al quince. Debemos introducir las columnas del archivo de texto de la madre sólo con los catorce signos.

La gente puede quejarse de que es muy complejo todo esto que estoy contando, y que debería haber proporcionado una interfaz gráfica. Pero ésto requiere de mucho más tiempo de programación, y existiría el problema igualmente de tener que compilarlo para todos los sistemas operativos habituales para que cualquiera pueda usarlo. Todo es cuestión de costumbre y enseguida con la primera ejecución correcta iremos pillándole el tranquillo.

Los tiempos pueden ser de aproximadamente media hora o algo más para filtrar 100.000 columnas (mucho menos con madres más pequeñas), y dependiendo del número de hilos que introduzcamos para el cómputo. Yo por ejemplo, tengo un equipo de cuatro procesadores con dos subprocesos por procesador, y con 8 hilos va de lujo. No recomiendo usar más hilos que procesadores o subprocesos tenga nuestro equipo porque es contraproducente, y los tiempos de cómputo se alargarán si ponemos un excesivo número de hilos.

Quedan pendientes algunas mejoras, como que dé un archivo de salida con el resumen de las EM de cada categoría además de filtrar, o incluso añadir interfaz gráfica al programa. Quién sabe si me animaré a hacerlo. De momento iré poniendo en esta entrada todas las versiones que vaya creando, empezando por esta primera:

(Saludos).

ALLEM1X2_v0_1.zip

Comparto la tercera versión del programa. Recomiendo leer el archivo LEEME.txt para ver las nuevas opciones:

Incluyo salida y carga de CSV con la información de probabilidad real al 14 y las EM de las categorías para importar a Excel, o para nueva reordenación sin necesidad de recalcular toda la colección. Límite de columnas a incluir en el archivo de salida y posibilidad de seleccionar por distancias de acuerdo a la ordenación indicada. También nueva posibilidad de ordenar por la EM de todas las categorías.

ALLEM1X2_v0_3.zip

Versión 0.3.1. Mismas funcionalidades, aunque con bug corregido. Anteriormente el programa se quedaba colgado en ocasiones durante el proceso de cálculo.

ALLEM1X2_v0_3_1.zip

Además he colgado el repositorio con el código en GitHub. Puede verse y aportar al mismo en:

https://github.com/pablobaizan/ALLEM1X2

Comentarios

Entradas populares de este blog

Herramienta de análisis

La distribución binomial de Poisson y el cálculo del escrutinio

La regresión logística y el cálculo de porcentajes apostados