Skip to content

Euristica

Luca Bongiovanni edited this page May 23, 2021 · 43 revisions

Brainstorming euristica

Considerazioni generali

OSTACOLO (per una pedina che non è re): CAMPO, FORTEZZA.

(Contare quante mosse è possibile fare per ogni mossa?)

Ogni giocatore massimizza nella sua euristica, quindi va creata una sola euristica e cambiare il segno dei punti da dare/togliere in base al ruolo del giocatore (bianco/nero) passato come parametro. I ragionamenti seguenti verranno condotti per i bianchi. Per tenere conto del fatto che non si deve tornare allo stesso stato forse bisognerebbe utilizzare grafi?

Valori per euristica in positivo

(I valori sottolineati sono sempre positivi a prescindere dal ruolo)

Importanza Nome Descrizione Valore
1 kingEscaped Re entra in escape 4000
2 kingCouldEscape Re in linea ad un escape libero 400
3 pawnsEaten Pedine mangiate 10 + 20 *

Valori per euristica in negativo

(I valori sottolineati sono sempre negativi a prescindere dal ruolo)

Importanza Nome Descrizione Valore
1 kingEaten Re mangiato -4000
2 kingEatablePosition Re in posizione mangiabile -100
3 eatablePosition Nemico/ostacolo nelle direzioni ortogonali attorno alla pedina (raggio 1) e altro nemico nella direzione opposta (raggio infinito) -20
4 blackBlockingEscapes Neri vicino ad escape in direzione del re (da annullare in caso di re in fortezza, aumentare quanto più il re è vicino agli escape e quanti più neri stanno bloccando l'escape) -4 * numero di neri che bloccano
-1 * numero di righe/colonne di lontananza da fortezza da parte del re e vicinanza agli escape bloccati
5 pawnsLost Pedine perse 20 + 30 *
6 nearObstacle Ostacolo nelle direzioni ortogonali attorno alla pedina (raggio 1) -3

Valori per strategia dei neri

Importanza Nome Descrizione Valore
blockKingCentralPositionValue Blocca il re se è in posizione centrale(colonna E o riga 5) e ha via libera per escape 80
surroundKingFortressValue Se il re è nel castello tenta di accerchiarlo 100
currentBlackBlockingEscapeValue E' sempre bene per un nero bloccare un escape 80
currentBlackNearKingValue Se il re è fuori dal castello avvicinarsi al re 80

Valori per strategia dei bianchi

Importanza Nome Descrizione Valore
defendKingValue Blocca la sottoporzione della mappa in cui il re si sta spostando verso gli escape 80
kingInCentralPositionValue Le posizioni centrali sono favorevoli per il re: più possibilità di escape 80

Formule finali

blackBlockingKingHeuristic = nBlacks * blackBlockingValue + kingPosValue

kingHeuristicValue = kingEatablePositionValue + kingEatablePositionValue + blackBlockingKingHeuristic

areBlacksAlreadySurrounding = nBlacksSurroundingCastle >= 2 ? 2 : 1

blackStrategy = blockKingCentralPositionValue + surroundingKingFortressValue * areBlacksAlreadySurrounding + currentBlackNearKingValue

whiteStrategy = defendKingValue + kingInCentralPositionValue

fixedHeuristicsValue = eatablePositionValue + nearObstacleValue + kingHeuristicValue + [blackStrategy || whiteStrategy]

swappableHeuristicsValue = pawnsEatenValue + pawnsLostValue + kingCouldEscapeValue

heuristicValue = fixedHeuristicsValue +/- swappableHeuristicsValue