Limite orizzonte.
Analizzando le posizioni con MScarface, mi sono accorto che spesso il programma trova la mossa migliore solo a partire da una minima profondità d'analisi. Sotto questo valore la soluzione non è rilevata, qualsiasi settaggio di parametri sia impostato.
Questa posizione mi è stata spedita da uno scacchista di un forum:
1k6/3p4/1B6/4Pp1p/1p5R/1p4p1/pP3n2/K6n w - - 0 1
1.Txh1! =
1.Txh1! Cxh1 2.e6 dxe6 3.Ac7+!
L'alfiere non può essere catturato (altrimenti è stallo) e riesce a fermare la promozione dei pedoni e il matto dal cavallo nero.
Dopo 3. ..Rb7 4.Axg3 Rc6 muoviamo sempre l'alfiere dalla casa e1a f2 e da f2 a e1. Se il Nero spinge il pedone in h4, noi lo catturiamo e torniamo in e1. E' patta.
MScarface, con parametri a valori di default, non trova la soluzione:
Log: y Analisys: f
Depth: 7 Multipv:3
Delta=100
n.Moves LOW= 7
Depth LOW=7 Multipv LOW= 3
Delta LOW= 150
moves white:
1. Bb6 c7 n. games 39 n.win=1 n.draw=9 n.lose=29 p.max=14%
1. Bb6 e3 n. games 46 n.win=0 n.draw=6 n.lose=40 p.max=6%
1. Rh4 c4 n. games 51 n.win=1 n.draw=5 n.lose=45 p.max=6%
1. Rh4:h5 n. games 56 n.win=0 n.draw=6 n.lose=50 p.max=5%
1. Bb6 d8 n. games 61 n.win=1 n.draw=3 n.lose=57 p.max=4%
1. Rh4:b4 n. games 56 n.win=1 n.draw=2 n.lose=53 p.max=3%
1. Bb6 d4 n. games 47 n.win=0 n.draw=3 n.lose=44 p.max=3%
1. Rh4:h1 n. games 56 n.win=0 n.draw=2 n.lose=54 p.max=1%
1. Bb6 c5 n. games 41 n.win=0 n.draw=1 n.lose=40 p.max=1%
1. Rh4 f4 n. games 52 n.win=0 n.draw=2 n.lose=50 p.max=1%
1. e5 e6 n. games 45 n.win=0 n.draw=0 n.lose=45 p.max=0%
1. Bb6:f2 n. games 68 n.win=0 n.draw=1 n.lose=67 p.max=0%
1. Bb6 a5 n. games 52 n.win=0 n.draw=1 n.lose=51 p.max=0%
1. Bb6 a7 n. games 51 n.win=0 n.draw=0 n.lose=51 p.max=0%
1. Rh4 h2 n. games 66 n.win=0 n.draw=0 n.lose=66 p.max=0%
1. Rh4 h3 n. games 50 n.win=0 n.draw=0 n.lose=50 p.max=0%
1. Rh4 d4 n. games 65 n.win=0 n.draw=0 n.lose=65 p.max=0%
1. Rh4 e4 n. games 59 n.win=0 n.draw=0 n.lose=59 p.max=0%
1. Rh4 g4 n. games 44 n.win=0 n.draw=0 n.lose=44 p.max=0%
n.total games=1005 time: 0h 7' 1,203''
Per trovare la mossa che patta, dobbiamo aumentare la profondità d'analisi minimo a 13.
Log: y Analisys: f
Depth: 13 Multipv:2
Delta=70
n.Moves LOW= 7
Depth LOW=13 Multipv LOW= 3
Delta LOW= 90
moves white:
1. Rh4:h1 n. games 165 n.win=0 n.draw=96 n.lose=69 p.max=29%
1. Bb6 c7 n. games 101 n.win=1 n.draw=19 n.lose=81 p.max=10%
1. Rh4 c4 n. games 112 n.win=0 n.draw=15 n.lose=97 p.max=6%
n.total games=378 time: 0h 17' 9,734''
(Io ho impostato Multipv=2 invece di 3 come LOW Multipv solo per tentare di velocizzare l'analisi..
Ma questo non è bene, è meglio usare Multi PV=Low Multipv =3 or 4, se il tuo PC è abbastanza potente per permetterti di farlo, senza impiegare tempi biblici. Io ho considerato solo 3 delle mosse possibili sempre per aumentare la velocità d'analisi, ma è meglio considerare tutte le mosse. Io ho ridotto il range Delta, per ridurre il numero di mosse prese in considerazione e quindi potere generare una minore quantità di partite per un'analisi attendibile. (Sempre per diminuire il tempo totale dell'analisi). Ma è meglio usare i valori di default per Delta.)
Quindi a depth >=13 MScarface trova la miglior mossa, mentre a depth<13 non trova 1.Rxh1. Questo è dovuto all'effetto orizzonte.
Vediamo il fenomeno in pratica:
Dopo che il nero cattura la torre bianca in h1, il bianco deve sacrificare il pedone 'e' in modo da poter giocare 3.Ac7+, senza che il nero possa catturare l'alfiere, altrimenti è stallo.
2. e6!
Vediamo invece quante volte è giocata a depth 13:
Perchè questa differenza? A depth=7 2.e6 è valutata circa 15,5 cp. e 2.Ag1 16/16,5 cp. A depth=13 2.e6 è valutata 13,8 cp. and 2.Ag1 18,4 cp.
A depth=13 abbiamo una differenza di valutazione di 450 cp! Per cui 2.Ag1 (come le altre mosse differenti da e6) non è mai resa in considerazione ed è giocata solo 2.e6. Qua abbiamo già una differenza nell'analisi.
Dopo 1.TxNh1 CxTh1 2.e6 dxe6 3.Ac7+ Rb7 4.Bxg3 Rc6 la miglior mossa è 5.Ae1, l'alfiere deve rimanere sulla diagonale e1-h4 per impedire la liberazione del cavallo nero.
5. Ae1!
Perchè a depth7 sono giocate mosse come 5.Af4, che conducono al matto in sette?
Semplice, a Depth 7 l'engine non vede il matto in 7 e valuta 5.Bf4 -1200 cp e 5.Be1 -1300 cp.
A depth13 invece dopo 5.Af4 il matto è trovato, mentre 5.Ae1 è valutata -1600cp.
L'engine ha un limite di profondità, un orizzonte di veduta, oltre il quale non vede, ovviamente dipendente dalla profondità d'analisi impostata.
Nota:In realtà matto in 7 significa matto in 14 semi mosse. In questo specifico caso, dopo 5.Af4 in 13 semi mosse. In questo caso la questione è relativamente semplice, perchè noi abbiamo un matto all'orizzonte.
In caso di posizioni con una valutazione non risolutiva la questione è più complessa, ma il principio è lo stesso.
Ovviamente quando analizziamo una posizione, noi non possiamo conoscere a priori il valore del limite orizzonte.
In una posizione, depth=13 potrebbe non essere sufficiente, in un'altra depth=7 or 9 potrebbe essere sufficiente e impostare la depth a 13 potrebbe essere un'inutile perdita di tempo.
Conclusione: in una analisi seria, se tu usi il programma a giocare partite per corrispondenza, io consiglio:
1- Usare la modalità d'analisi "Full Monte Carlo". La modalità “Limited analysis" è una modalità sperimentale. In caso di fortezze o posizioni sbilanciate ma patte, è inutile.
2. - Considerare sempre tutte le mosse possibili.
3- Eseguire almeno 100 partite per mossa.
4- Eseguire più di una sessione d'analisi per ogni posizione, impostando differenti parametri e almeno un'analisi ad alta profondità d'analisi.
No comments:
Post a Comment