Artículos con etiqueta «matematicas»
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.
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.
Programación lineal: alcanzando la perfección
La programación lineal es una disciplina dentro de las matemáticas, más concretamente, del campo de la investigación operativa muy interesante. La problemática que trata de resolver es la de asignar recursos limitados entre actividades competitivas de la mejor manera posible, es decir, optimizar este reparto. Programación significa en este contexto planificación.
Autómatas celulares unidimensionales en Python
Triángulo de Sierpinski en JavaScript
http://adrianistan.eu/sierpinski/
Y el código que lleva es el siguiente:const COLOR_LIST = ["red","green","yellow","pink","brown","purple","cyan","blue","orange"]; function punto(x,y){ var p = { x:x, y:y }; return p; } function puntoMedio(p,q){ var m = { x: Math.round((p.x+q.x)/2), y: Math.round((p.y+q.y)/2) }; return m; } function getRandomColor(){ return COLOR_LIST[Math.floor(COLOR_LIST.length * Math.random())]; } function dibujarPunto(ctx,p,size){ ctx.fillStyle = getRandomColor(); ctx.fillRect(p.x,p.y,size,size); } function $(id){ return document.getElementById(id); } function get(id){ return Math.round(document.getElementById(id).value); } function main(){ var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); var interval; $("start").addEventListener("click",function(){ var size = get("size"); var vertex = [punto(get("a-x"),get("a-y")),punto(get("b-x"),get("b-y")),punto(get("c-x"),get("c-y"))]; let p = punto(get("s-x"),get("s-y")); dibujarPunto(ctx,p,size); interval = setInterval(function(){ var q = vertex[Math.floor(3*Math.random())]; p = puntoMedio(p,q); dibujarPunto(ctx,p,size); },get("speed")); }); $("stop").addEventListener("click",function(){ clearInterval(interval); }); $("reset").addEventListener("click",function(){ ctx.fillStyle = "white"; ctx.fillRect(0,0,600,600); }); } window.addEventListener("DOMContentLoaded",main);Con distinto número de vértices existen otros fractales, también muy chulos. Incluso en el vídeo de Numberphile realizan un fractal con un gran parecido a una hoja de helecho, usando dos triángulos y una ligera modificación del algoritmo