Skip to content

Commit b8a890c

Browse files
committed
Clarify N-Queens fitness function explanation
Expanded the explanation of the N-Queens problem and clarified the definition and maximization of the fitness function in the genetic algorithm. Improved the description to distinguish between minimizing attacks and maximizing non-attacking pairs, and added mathematical context for the fitness calculation.
1 parent f73d367 commit b8a890c

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed
-2.97 KB
Binary file not shown.

playgrounds/Tarea 3.ipynb

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -600,20 +600,29 @@
600600
"id": "63f87d15",
601601
"metadata": {},
602602
"source": [
603-
"Para este problema, la función de *fitness* se define como el número de pares de reinas que **no** se atacan entre sí. Por lo tanto, el objetivo del algoritmo es *maximizar* este valor, recodemos que para esta implmentación el algoritmo genético siempre maximiza la función de *fitness*.\n",
603+
"El problema de las N-Reinas (N-Queens) consiste en colocar N reinas sobre un tablero de ajedrez de tamaño NxN de tal manera que ninguna reina ataque a otra. Recordemos que una reina puede atacar a otra si están en la misma fila, columna o diagonal.\n",
604604
"\n",
605+
"Para este problema podemos utilizar distintas funciones de fitness. La forma más sencilla de entenderla sería **minimizar** el número de pares de reinas que se atacan entre sí, por lo que mientras menos ataques haya mejor será la solución.\n",
606+
"\n",
607+
"No obstante, debido a la implementación y para mantener la consistencia en la librería (asumiendo que siempre se **maximiza**) podemos redefinir la función de *fitness* como el número máximo posible de pares de reinas que **no** se atacan entre sí.\n",
608+
"\n",
609+
"Entonces el objetivo del algoritmo es *maximizar* la siguiente función de *fitness*:\n",
605610
"$$\n",
606611
"\\text{fitness} = \\frac{N(N-1)}{2} - \\text{número de ataques}\n",
607612
"$$\n",
608613
"\n",
609-
"Donde $N$ es el número de reinas y \"número de ataques\" es el total de pares de reinas que se atacan mutuamente en la solución propuesta.\n",
614+
"Recordemos que:\n",
615+
"\n",
616+
"$\\binom{N}{2} = \\frac{N(N-1)}{2}$.\n",
617+
"\n",
618+
"Donde $N$ es el número de reinas, $N(N-1)/2$ es el número máximo posible de pares de reinas que no se atacan entre sí y el \"número de ataques\" es el total de pares de reinas que se atacan mutuamente en la solución propuesta.\n",
610619
"\n",
611620
"Por esto usamos minimize=False en la configuración del GA."
612621
]
613622
},
614623
{
615624
"cell_type": "code",
616-
"execution_count": 13,
625+
"execution_count": null,
617626
"id": "e441ebfc",
618627
"metadata": {},
619628
"outputs": [

0 commit comments

Comments
 (0)