¿Cómo crear una IA razonable?

11

Estoy creando un juego de lógica basado en el juego Fox and Hounds. El jugador juega el zorro y la IA juega a los sabuesos. (hasta donde puedo ver) logré hacer que la IA sea perfecta, por lo que nunca pierde. Dejarlo como tal no sería muy divertido para los jugadores humanos.

Ahora, tengo que reducir la inteligencia artificial para que los humanos puedan ganar, pero no estoy seguro de cómo. La lógica actual de AI se basa en la coincidencia de patrones: si introduzco movimientos aleatorios que hacen que el tablero salga del espacio de patrones, la IA probablemente se volverá tonta hasta el final del juego.

¿Alguna idea de cómo reducir la inteligencia artificial de tal manera que no pase de "genio" a "completamente tonto" en un solo movimiento?

Milan Babuškov
fuente
Entonces encontró e implementó la estrategia óptima, siempre ganadora. ¿Por qué no pasar a juegos ligeramente más complicados ahora? O, ¿qué pasa con un desafío? Implemente una estrategia que siempre pierda , sin importar lo que haga el otro jugador. Ver también: Perder ajedrez / Antichess
Martin Sojka
Tal vez le gustaría ver mi respuesta en esta otra pregunta: gamedev.stackexchange.com/questions/12858/…
Tyn
El zorro y los perros no son tan complejos como el ajedrez. Un movimiento en falso y la IA pierde con seguridad. Es muy fácil hacer que la IA parezca tonta. El hecho de que lo resolví usando lápiz y papel y horas de pensamiento estratégico no significa que mis jugadores hagan lo mismo.
Milan Babuškov

Respuestas:

7

Muchas implementaciones pueden conducir a una probabilidad ponderada aleatoria de movimientos, por ejemplo, una oportunidad de hacer un movimiento óptimo y una oportunidad de hacer un movimiento subóptimo. Determinar qué tan subóptimo es un movimiento podría ser un problema muy complicado, pero también llevará a su IA a tomar decisiones mucho más aparentemente inteligentes.

Nota importante: sin importar la configuración de dificultad, probablemente sería una mala idea dejar que la IA deje pasar la oportunidad de ganar el juego de inmediato. Si existe la posibilidad de hacer un movimiento que termine el juego ese turno, siempre se debe tomar. Si no, destruirá absolutamente la impresión del jugador de cómo está actuando la IA.

Cuenta
fuente
Gracias. Decidí dejarlo jugar de manera inteligente para todos los patrones simples. Hay dos patrones complejos en los que el camino del jugador hacia la libertad no es fácilmente visible, por lo que creé patrones adicionales que hacen que la IA pierda jugando movimientos que se parecerían a un jugador humano novato en esa posición. Al comienzo del juego, cambio aleatoriamente el patrón ganador por perder uno para tales posiciones.
Milan Babuškov
10

Como parece ser un juego "resuelto", la única respuesta es que la computadora debe hacer movimientos intencionalmente malos.

Una solución rápida puede ser calcular el mejor movimiento, luego también calcular otro movimiento legal que puede no ser tan bueno. El índice de dificultad de la IA se mediría en el porcentaje de probabilidad de que elija el otro movimiento no tan bueno, sobre el movimiento perfecto.

  • Difícil - 90% de buenos movimientos
  • Difícil: 70% de buenos movimientos
  • Normal - 50% de buenos movimientos
  • Simple: 20% de buenos movimientos
  • Fue abandonado como un niño: <5% de buenos movimientos
  • Perrito caliente: todo al azar
Adrian Seeley
fuente
10
Esta es probablemente una buena idea, pero terminarías con una IA retardada si está tomando movimientos incorrectos intencionalmente. Fuera de mi cabeza, primero haría un pase para movimientos "legales", luego aplicaría pesos a cada movimiento y los ordenaría por peso, el mayor peso es el mejor movimiento. Luego puedes hacer que un RNG converja hacia mejores movimientos dependiendo de la dificultad.
Jonathan Connell
44
Estoy de acuerdo con @Jonathan Connell. Considere: esconderse detrás de las cajas vs esconderse detrás de barriles explosivos vs esconderse entre cajas y una granada activa. La IA debe evaluar qué tan malo es el movimiento, con una mejor IA haciendo mejores movimientos con más frecuencia. Una IA no será excelente o difícil si el 70% de las veces te dispara y el 30% de las veces explota. Será muy gracioso.
doppelgreener
2
@Adrian Seeley Su último comentario realmente toca el mayor problema; Para mí, un humano que juega contra la IA siempre encontrará instintivamente un razonamiento detrás de sus elecciones, incluso si son teóricamente completamente al azar. En un juego de mesa, por ejemplo, esto se puede contrarrestar limitando el número de iteraciones en la predicción de movimientos, entonces ¿tal vez esta podría ser una buena solución en un juego solucionable?
Jonathan Connell
2
Estoy de acuerdo con los dos Jonathans, pero estoy dando esta respuesta +1 para 'Was Dropped as a Child' y 'Hotdog'
thedaian
2
@ Jonathan Connell: Debe publicar su propuesta / soluciones como respuesta. Merecería algunos votos a favor.
bummzack