Skip to content

Euristica

Luca Bongiovanni edited this page May 6, 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

Ordinati secondo quantitativo di punti da dare (più in alto, do più punti, più in basso, do meno punti)

  1. Re entra in escape [nome: kingEscaped, valore: 400]
  2. Re in linea ad un escape libero [nome: kingCouldEscape, valore: 40]
  3. 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]

Valori per euristica in negativo

Ordinati secondo quantitativo di punti da togliere (più in alto, tolgo più punti, più in basso, tolgo meno punti)

  1. Re mangiato [nome: kingEaten, valore: -400]
  2. Re in posizione mangiabile [nome: kingEatablePosition, valore: -400]
  3. 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]
  4. 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]
  5. Pedine perse (NB questo valore è sempre negativo, invariante rispetto al ruolo) [nome: pawnsLost, stessa questione delle pedine mangiate, ma con valori alla rovescia]
  6. Ostacolo nelle direzioni ortogonali attorno alla pedina ( raggio 1. NB questo valore è sempre negativo, invariante rispetto al ruolo) [nome: nearObstacle, valore: -3]

Formule finali

blackBlockingKingHeuristic = nBlacks * blackBlockingValue + kingPosValue

kingHeuristicValue = kingEatablePositionValue + kingEatablePositionValue + blackBlockingKingHeuristic

fixedHeuristicsValue = eatablePositionValue + nearObstacleValue + kingHeuristicValue

swappableHeuristicsValue = pawnsEatenValue + pawnsLostValue + kingCouldEscapeValue

heuristicValue = fixedHeuristicsValue +/- swappableHeuristicsValue

Clone this wiki locally