-
Notifications
You must be signed in to change notification settings - Fork 0
Euristica
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?
(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 * |
(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 |
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 |
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 |
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