Esta aplicacion resuelve el problema de las 8 Reinas de ajedrez utilizando el algoritmo genetico.
Dicha aplicacion esta desarrollada en VS 2019.1.6 💜
El algoritmo genetico es un algoritmo bio-inspirado ya que esta basado en comportamientos de sistemas biologicos o de la naturaleza.
Dicho algoritmo cuenta con una serie de pasos.
- Iniciar poblacion con individuos al azar
- Evaluar cada individuo
- Repetir
- Seleccionar 2 padres por seleccion de torneo
- Generar 2 hijos a partir de los padres por cruce
- Modificar dichos hijos por mutacion
- Evalua cada hijo
- Selecciona los 2 mejores entre padres e hijos
- Remplaza los 2 mejores en los padres
- Hasta cumplir el numero de ciclos
- Seleccionar el mejor de toda la poblacion
Ver Pseudocodigo
iniciarPoblacion();
evaluar(poblacion);
for(i = 0; i < ciclos; i++)
{
padres = torneo(poblacion);
if(random <= pCruce)
hijos = cruce(padres);
else
hijos = padres;
if(anotherRandom <= pMutacion)
mutacion(hijos);
evaluar(hijos);
mejores = mejor(padres, hijos);
generacion(mejores, padres);
}
apto(poblacion);
El problema de las 8 reinas consiste en poder colocar 8 reinas en el tablero sin que ninguna de estas se amenacen entre ellas, dicho juego o planteamiento fue propuesto por el aleman Max Bezzel en 1843.
Para la solucion a dicho problema se cuentan con algunas restricciones que permiten o ayudan a conseguir el resultado de una manera mas sencilla.
Restricciones:
- Cada individuo solo podra contar con un digito del 1 al 8 sin repetirse.
- La probabilidad de cruce es de 0.65 a 0.85
- La probabilidad de mutacion es de 0.01 a 0.10
Desarrollado por:
Oskar Cali 👨💻 💜
Camilo Emmanuel Hernandez Rosales.