El juego
En el MasterMind, un jugador pone una combinación oculta de
bolas o chinchetas de colores, de esta forma:
     
El otro jugador tratará de hallar esta combinación, poniendo sus
propias combinaciones de bolas. Para cada combinación, el jugador de
la combinación secreta contestará con chinchetillas negras por cada
bola que esté situada correctamente, y blancas por cada una que tenga
el color bien, pero esté mal situada, así:
:
     ![[black]](/images/negra.gif) ![[black]](/images/negra.gif) ![[black]](/images/negra.gif) ![[black]](/images/negra.gif) ![[white]](/images/blanca.gif)
En este caso, 4 bolas (la segunda, tercera, última y penúltima) están
bien colocadas, mientras que la bola roja está en posición incorrecta.
Mastermind es © de Invicta Plastics Ltd.
|
|
|
El algoritmo
|
Nuestro programa usa un algoritmo evolutivo para buscar la solución. Mantiene
una población de soluciones, que se ponen por orden según su
consistencia con las respuestas (bolas blancas y negras) que se haya
dado a las combinaciones que ya se han jugado. Cuando el algoritmo
encuentra una solución consistente con todas las combinaciones
jugadas, la juega. Si quiere más información sobre el algoritmo
genético que se ha usado, puede consultar el trabajo (en inglés)(se
publicará pronto).
El programa está escrito en C++ usando la librería de clases EO. Los fuentes están
incluidos como un ejemplo de la librería de clases. A la vez, es un
ejemplo de
objetos evolutivos; en este caso, el objeto evolucionado es la
combinación que resuelve el problema del mastermind.
Hay una descripción completa del algoritmo en este trabajo (en inglés), que fue aceptado en la conferencia GECCO99.
|
|
|