Forum pubblico/privato: Pubblico
Permessi di scrittura: Utenti registrati
Giorno: 26/07/2016, 22:09:42
Ippos ver. 1.0
image 1453


Ippos è un chess engine U.C.I. frutto di un lungo lavoro hobbistico, fatto nei ritagli di tempo.

UN PO' DI STORIA.
Come base di partenza ho preso il vecchio Ippolit 0.80, il vecchissimo motore, da cui derivarono i ben più famosi RobboLito, IvanHoe, Fire e Houdini che si impose all'attenzione generale per essere più forte dell'allora campione mondiale Deep Rybka 3.
Ippolit era piuttosto instabile, era privo di qualsiasi regolazione (salvo la Hash) ed aveva una gestione del tempo piuttosto improvvisata (supportava solo la modalità lampo con bonus a mossa).

Le cose migliorarono decisamente con RobboLito che corresse molti errori, fornì un listato più "gestibile" (Ippolit era un mostruoso monoblocco di quasi 15.000 linee), un Time Manager completo e performante e delle ottime Table Bases (le famose Robbo Bases).
La serie degli IvanHoe mise a disposizione un SMP ben strutturato e stabile, ma gli autori del programma (i misteriosi Decabristi smile.gif) si concentravano esclusivamente sulle RoBBoBases e la forza di gioco del motore rimaneva sostanzialmente invariata.
Solo con Fire si ebbe un certo incremento della forza di gioco, ma il vero salto di qualità si ebbe con Houdini che divenne in breve il motore più forte del mercato e dominò la scena, praticamente incontrastato, per diversi anni.

IPPOS CHESS.
L'idea di questo progetto era quella di risalire alla fonte, lavorando direttamente sul vecchio e originale Ippolit vers. 0.80, nel tentativo di migliorarlo ed ampliarlo, ma senza passare dalle versioni successive (RobboLito, IvanHoe, ecc...).
E' stato un lavoro un lungo e a volte noioso, ma man mano che procedeva non sono mancate le soddisfazioni e finalmente sono riuscito a terminare la prima versione stabile.
Le differenze rispetto all'originale sono:

- suddivisione delle varie funzioni in più listati, per lavorare più comodamente e con più efficacia;
- correzione di una serie di bugs;
- ampliamento e miglioramento del King-Safety (prendendo alcune idee da StockFish);
- ampliamento e miglioramento delle funzioni valutazione;
- ampliamento e miglioramento della valutazione dei pedoni;
- riscrittura completa del Time Manager;
- ampliamento delle funzioni di valutazione dei finali;
- aggiunta di alcune funzioni per il calcolo di alcuni finali tipici;
- miglior gestione della Aspiration Window;
-miglior valutazione del valore del materiale;
- introduzione di alcune funzioni di razoring;
- introduzione di una funzione di smooth scaling nel calcolo delle Null Moves;
- Ultima, ma molto lunga e laboriosa: implementazione del multi-threading.

Molte cose devono essere ancora ottimizzate ed altre migliorate, ma nonostante ciò Ippos ha una discreta forza di gioco (seppure ancor lontana dai top-engines) e uno stile di gioco piacevole.

Se qualcuno vuole metterlo alla prova può scaricarlo da questo indirizzo:

Ippos ver. 1.0 download
Sono una carota in cerca di sè stessa...
Giorno: 11/08/2022, 16:41:33
Link sponsorizzati
Giorno: 26/07/2016, 22:22:02
Nei pochi test effettuati (col solo scopo di regolare il Time Manager) Ippos ha pareggiato con Depp Rybka 4 un match di 50 partite a tempo brevissimo (1 min. + 1 sec./mossa).
Nei tempi più lunghi si sta dimostrando abbastanza buono ed ha appena vinto la prima partita di un match a tempo medio (30 min. + 3 sec./mossa) contro il forte Fire 4.

Ippos ha vinto grazie a una piacevole combinazione in centro partita che gli ha fruttato un fortissimo pedone in 7a traversa.
Al termine della combinazione Ippos stimava il suo vantaggio in oltre 1,5 pedoni, crescente, mentre Fire riteneva di essere solo in lieve svantaggio (0.32 pedoni).


You need Javascript enabled to view it.








Sono una carota in cerca di sè stessa...
Giorno: 27/07/2016, 22:22:43
Corretto un piccolo ma fastidioso errore nella PV (Principal Variation) che sfalsava la ricerca.
Adesso il motore risolve più facilmente e velocemente molte posizioni "rompicapo".

Trovato inoltre un altro piccolo errore nel Time Manager a cui ho dato una soluzione provvisoria.

La versione corretta è scaricabile QUI.

senzasperanza.gif
Sono una carota in cerca di sè stessa...
Giorno: 28/07/2016, 11:45:11
In bocca al lupo per il tuo "ritorno nell'arena"! zizi.gif

Se cerchi altre posizioni davvero "toste" su cui testare tatticamente le versioni di sviluppo, prova quelle proposte da Vincent Lejune:

Link

Oltre a diverse nostre conoscenze, ce ne sono tante altre, sia tratte dalla pratica magistrale di questi ultimi anni, che studi ingegnosi di cui, purtroppo, non è fornito il nome dell'autore.

Pensavo che alcune delle "mie" fossero davvero impegnative, ma qui ce ne sono di davvero formidabili! biggrin.gifbiggrin.gif

ciao.gifciao.gif
"TB or not TB..."
Giorno: 28/07/2016, 14:49:55
Grazie Luigi... Davvero interessanti! ciao.gif
Sono una carota in cerca di sè stessa...
Giorno: 28/07/2016, 22:18:41
Scaricato :) lo testerò sul tempo 45'+45'' (contro una serie di motori più o meno noti). non ho idea di quanto ci metterò ma una volta finito posterò i risultati qui.
Giorno: 28/07/2016, 22:40:23
Grazie Ferenir, mi interessano particolarmente le partite con tempi lunghi, quindi il tuo test cade a fagiolo! smile.gif
Sono una carota in cerca di sè stessa...
Giorno: 30/07/2016, 16:09:20
Il messaggio è stato nascosto dai moderatori
Sono una carota in cerca di sè stessa...
Giorno: 30/07/2016, 16:46:17
Pronta la nuova versione.

- time manager più preciso;
- migliorato root node;
- piccolo miglioramento nella aspiration window;
- introduzione della funzione "pawns invasion" (sperimentale);

- Vers. 1.02: completa.
- Vers. 1.03: come la precedente, ma senza "pawns invasion".

La prima ha un gioco di pedoni più aggressivo, mentre la seconda è più precisa tatticamente e risolve più posizioni quiz (e più velocemente).

Link: Ippos ver. 1.02 e 1.03
Sono una carota in cerca di sè stessa...
Giorno: 30/07/2016, 22:33:08
Quale vuoi che utilizzo per i test su tempi lunghi ? Intanto oggi ho fatto un pretest con la 1.01 contro TheKing 3.50 per capire quanta hash assegnare ad Ippos:

nessun libro di aperture
mente permamente disabilitata
45'+45''
TheKing: 1 core, hashtable 256Mb, gui Chessmaster (256Mb è il limite della gui nativa ma CM gira meglio così che su gui esterna).

Ippos: 4 core, hashtable 1024Mb, hashPawn 256Mb, gui Fritz

La partita l'ho interrotta qualche mossa dopo la posizione del diagramma (Ippos è il Nero):


You need Javascript enabled to view it.










Entrambi i motori erano entrati in una linea da patta per ripetizione di mosse.

Alla 12^ mossa erano rimasti circa 19 minuti ad Ippos, alla 16^ i minuti erano vicini ai 10. Gran parte del tempo di riflessione è stato utilizzato entro le prime sei mosse. Le hash hanno facilitato la scelta di linee di gioco già considerate (cambi o minacce forzate da cui slegarsi a parte: 10 ... Cxd4 11. ... 0-0), in particolare per 16. ... Tb8, mossa giocata quasi istantaneamente.

La media dei Nodi al secondo per Ippos era di circa 2 milioni e trecentomila.

Il problema del tempo di riflessione esagerato per alcune mosse arriva proprio dalle hash. Un giga favorisce il calcolo in profondità ma (suppongo, correggimi se sbaglio Carotino) costringe il motore a partire da profondità 21/22 prendendola come posizione zero ed in caso di variazione di punteggio negativa, la profondità viene portata al completo calcolo della 23 a volte anche alla 24. Questo è accaduto ogni volta in cui il motore si è trovato di fronte ad una mossa dell'albero principale. Al contrario le risposte sono state quasi istantanee (o con una manciata di secondi di calcolo), di fronte a mosse evidentemente considerate in hash ma non come variante principale.

Avevo pensato di ridurre l'hash a 256 MB più che sufficienti in generale per un 45+45. L'hash ne risentirebbe solo sopra i 4' di calcolo ma questo permetterebbe al motore di partire da un ramo più basso e quindi di migliorare la gestione del tempo senza poi doversi trovare in zeitnot. In un 45+45 considero in zeitnot un motore che finisce sotto i 15', questo lo costringe a ridurre i tempi di risposta con una media di 1'25/30'' a mossa. E' sufficiente portare a 30 minuti l'orologio di Ippos dalla mossa 15. Tac1 perché trovi una linea che non lo porti alla ripetizione di mosse.