Adrianistán

El blog de Adrián Arroyo


Introducción a Z3, el demostrador de teoremas de Microsoft

Z3 es un demostrador de teoremas open source creado por Microsoft. Una herramienta muy útil para resolver ciertos problemas de alta complejidad algortítmica. Z3 en particular se enfoca en la resolución SMT. En este artículo veremos como podemos usarlo para resolver problemas sencillos y no tan sencillos. Se trata de otro lenguaje dentro del mundo de la programación lógica, como Prolog, pero bastante más específico.

Seguir leyendo

htmx, o como sería HTML si se tomase el hipertexto en serio

Hoy os traigo un framework web con el que últimamente estoy jugando bastante. Se llama htmx y a diferencia de otros frameworks como React o Vue, aquí no escribiremos JavaScript. Escribiremos más HTML siguiendo la filosofía original del hipertexto. ¿Intrigado? Sigue leyendo.

Seguir leyendo

El problema del Hello World

Cuando empezamos en un lenguaje de programación lo más habitual suele ser empezar con la mítica frase de Hello World (Hola Mundo). Sin embargo, hay que tener en cuenta que este pequeño programa tiene algunos inconvenientes si lo queremos usar para comparar entre lenguajes y sus funcionalidades.

Seguir leyendo

Herramientas para empezar con Big Data

Una de las disciplinas con más crecimiento en los últimos años dentro de la informática es el Big Data. Sin duda se trata de un mundo relacionado pero a su vez diferente al desarrollo de software puro en el que se ha centrado la enseñanza hasta hace relativamente poco. Si investigamos como empezar con Big Data veremos que hay muchos trabajos concretos, cada uno con habilidades diferentes. No obstante me voy a centrar en las herramientas informáticas más populares y que pueden aplicar a varios de estos puestos.

Seguir leyendo

Ruta x ruta x Castilla y León

Recientemente se anunció que mi proyecto Ruta x Ruta x Castilla y León resultó ganador del V Concurso de Datos Abiertos. Modalidad de Productos y Servicios: premio de estudiantes. El concurso consitía en usar los datos abiertos proporcionados por la Junta de Castilla y León para construir algo interesante. Desde aquí quiero dar las gracias a los organizadores y además quiero invitaros a qué vosotros probéis también la aplicación web (si vivís en Castilla y León claro).

Seguir leyendo

Teletexto #011

Después de una pausa, retomamos los artículos en el blog con otra edición de Teletexto, la número 11. Ya sabéis que Teletexto es la sección donde dejo enlaces que me han resultado interesantes.

Seguir leyendo

Reinforcement Learning (Aprendizaje por refuerzo): DQN, OpenAI Gym, Stable Baselines (parte 4)

En el post anterior vimos como podíamos aprender las funciones valor y las funciones Q para todos los estados. Sin embargo, en muchos problemas el número de estados reales es muy elevado y es posible que no lleguemos a pasar por ellos las suficientes veces como para poder aprender correctamente. Una solución es aproximar el valor mediante una función. La idea es que esta función, al aproximar, estará generalizando y podrá derivar el valor de la función valor de cada estado de forma más o menos correcta.

Seguir leyendo

Reinforcement Learning (Aprendizaje por refuerzo): Q-Learning (parte 3)

Ya hemos visto en posts anteriores qué es al aprendizaje por refuerzo y como podemos modelar los problemas de este tipo con un MDP. Ahora veremos varias técnicas para calcular la función valor de cada estado y, con esta información, mejorar la política.

Seguir leyendo

Reinforcement Learning (Aprendizaje por refuerzo): MDPs y ecuación de Bellman

En el anterior post vimos una introducción a algunos conceptos del aprendizaje por refuerzo. Una cosa que se vio, es que los problemas se pueden modelar como MDP. En este post veremos como se hace, ya que nos permitirá visualizar mejor qué es lo que ocurre dentro de un problema de RL y nos da una base matemática para encontrar soluciones.

Seguir leyendo

Reinforcement Learning (Aprendizaje por refuerzo): ¿Qué es y cómo funciona? (parte 1)

Dentro del Machine Learning existen tres ramas: aprendizaje supervisado, no supervisado y por refuerzo. En esta serie de posts vamos a hacer una introducción a esta última rama, siguiendo el esquema habitual que se usa en libros y cursos pero simplificando ciertas cosas. Este post tendrá un caracter más teórico, pero necesario para poder desarrollar temas más avanzados.

Seguir leyendo