Algoritmos genéticos. Parte 1. Cuando son útiles.

Un algoritmo genético es solo una variante para solucionar problemas combinatorios cuando el análisis de cada posibilidad haría demasiado largo el proceso.

Normalmente es empleado para maximizar o minimizar funciones dependientes de muchas variables y siempre será necesario tener una valoración de cada combinación generada.

Tratemos con un ejemplo práctico: En una tienda con vitrina a la calle el dueño tiene espacio para colocar 5 productos. En la tienda existen 50 productos y el tendero se enfrenta a la disyuntiva de cuáles productos elegir para mejorar su negocio.
Cada producto tiene un precio y un valor de popularidad. De este modo colocar los productos más populares atrae más clientela pero no ayuda a los demás productos que pueden dejar más margen de ganancias.

La pregunta es ¿Cuáles productos debe colocar en la vitrina?

Un cálculo simple nos indica que para hacer combinaciones de cinco productos diferentes a partir de 50 productos posibles existen más de dos millones de  posibilidades.

De alguna manera el tendero se las ha ingeniado para calcular un valor dependiente del precio, las existencias en inventario y la demanda que le permite evaluar numéricamente cada combinación y a hecho la función Fc que alcanza su valor máximo al tener la combinación óptima.
Denotemos P1, P2, P3, P4 y P5 a las posiciones en la vitrina y los artículos a mostrar se llamarán A1..A50.

Mediante un algoritmo de fuerza bruta el tendero puede encontrar y evaluar todas las posibles combinaciones anidando un total de 5 ciclos repetitivos que revisan los posibles artículos. Genera sus dos millones de combinaciones y evalúa cada una de ellas en la función Fc comparando el resultado hasta encontrar la óptima.
Mediante un algoritmo genético el tendero introduce algunas de las combinaciones que crea mejores y comienza a calcular hasta llegar al máximo o muy cerca del mismo.

La primera opción siempre nos dará un resultado exacto, porque hemos explorado todas las posibilidades, pero a veces explorar todas las posibilidades es computacionalmente imposible ya que se involucran factoriales y calcular un resultado para 50 posiciones y 1000 productos puede tardar años. En ese caso debemos recurrir al algoritmo genético, que nos irá calculando combinaciones cada vez mejores hasta que decidamos parar o se «trabe» el cálculo.

Ya sabemos cuándo usar algoritmos genéticos y a que tipos de problema nos enfrentamos. Ahora en el siguiente artículo de esta serie veremos cómo funciona y en qué se basa un algoritmo genético.

Deja un comentario