Miglior approccio per implementare più livelli di difficoltà a un AI minimax [chiuso]

2

Sto programmando un gioco (trasformato in base, in una griglia) per il quale ho implementato un'IA utilizzando l'algoritmo minimax (con predizione alfa-beta). Va tutto bene e funziona, ma l'intelligenza artificiale è troppo buona e non posso vincere contro di essa.

Quindi ora voglio introdurre difficoltà nel gioco (qualcosa di semplice, normale e difficile). L'intelligenza artificiale com'è ora sarebbe la difficile difficoltà.

La mia domanda: qual è l'approccio migliore per implementare più livelli di difficoltà a un AI minimax.

Sto bilanciando tra due idee.

  • andando per diverse euristiche a seconda della difficoltà scelta

  • aggiungendo un po 'di casualità alla scelta della mossa migliore. Supponiamo che tu scelga la difficoltà Normale, quindi, x% delle volte, sceglierei la mossa migliore data dalla stessa euristica usata per Hard.

posta Phil-R 10.10.2015 - 18:24
fonte

1 risposta

3

Ci sono molti approcci che puoi provare:

  • indebolisce la funzione di valutazione
    • interrompe la valutazione in due componenti: il primo componente è il punteggio standard, il secondo componente è un valore casuale. Quindi puoi utilizzare un parametro skill per valutare in che modo ciascun componente contribuisce al punteggio finale
    • per i giochi con pezzi diversi, cambia casualmente il valore dei pezzi (la perturbazione è in qualche modo controllata tramite il parametro skill )
    • aggiungi un valore casuale limitato per ogni spostamento radice (questo è il Opzione "Club Player" nel motore Rebel Chess di Ed Schröder)
    • ...
  • indebolisce l'algoritmo di ricerca
    • disabilita le estensioni di ricerca / ricerca quiescenza (ad esempio, controlla l'estensione negli scacchi)
    • sfoltisci le mosse casuali
    • Riduci profondità di ricerca / velocità di ricerca
    • ...

L'argomento stupidità artificiale è molto ben studiato negli scacchi (es. stupidità artificiale - fare in modo che un programma giochi male o Riduci la forza per molte altre idee interessanti ).

Per un esempio reale potresti dare un'occhiata al motore Crafty di Robert Hyatt e cercare SKILL nella fonte.

Ad ogni modo dovresti considerare che:

  • non esiste un "approccio migliore". Dovresti provare a mischiare tecniche diverse e ... i risultati sono molto specifici per il gioco
  • ridurre la forza di gioco contro gli umani è abbastanza facile, ma creare un motore per giocare in modo divertente e umano è molto difficile.
risposta data 10.10.2015 - 22:29
fonte