-
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?
Ordinati secondo quantitativo di punti da dare (più in alto, do più punti, più in basso, do meno punti)
- Re entra in escape [nome: kingEscaped, valore: 400]
- Re in linea ad un escape libero [nome: kingCouldEscape, valore: 40]
- Pedine mangiate (NB questo valore è sempre positivo, invariante rispetto al ruolo) [nome: pawnsEaten, valore: 2 * numero di pedine mangiate per bianco e 3 * per nero, questo per rendere il nero più aggressivo e il bianco più difensivo, in quanto i neri hanno molte più pedine dei bianchi]
Ordinati secondo quantitativo di punti da togliere (più in alto, tolgo più punti, più in basso, tolgo meno punti)
- Re mangiato [nome: kingEaten, valore: -400]
- Re in posizione mangiabile [nome: kingEatablePosition, valore: -400]
- Nemico/ostacolo nelle direzioni ortogonali attorno alla pedina (raggio 1) e altro nemico nella direzione opposta (raggio infinito. NB questo valore è sempre negativo, invariante rispetto al ruolo) [nome: eatablePosition, valore: -20]
- 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) [nome: blackBlockingEscapes, valore: -4 * numero di neri che bloccano escape vicino al re -1 * numero di righe/colonne di lontananza da fortezza da parte del re e vicinanza agli escape bloccati]
- Pedine perse (NB questo valore è sempre negativo, invariante rispetto al ruolo) [nome: pawnsLost, stessa questione delle pedine mangiate, ma con valori alla rovescia]
- Ostacolo nelle direzioni ortogonali attorno alla pedina ( raggio 1. NB questo valore è sempre negativo, invariante rispetto al ruolo) [nome: nearObstacle, valore: -3]
blackBlockingKingHeuristic = nBlacks * blackBlockingValue + kingPosValue
kingHeuristicValue = kingEatablePositionValue + kingEatablePositionValue + blackBlockingKingHeuristic
fixedHeuristicsValue = eatablePositionValue + nearObstacleValue + kingHeuristicValue
swappableHeuristicsValue = pawnsEatenValue + pawnsLostValue + kingCouldEscapeValue
heuristicValue = fixedHeuristicsValue +/- swappableHeuristicsValue