|
Un nouveau programme par Benji3000 le
[Aller à la fin] |
| Informatique | |
Hello tlm, je viens de terminer le débuggage de mon jeu d'échecs :-)
Ce qu'il a:
- Un alpha-beta qui réordonne les coups suivant leurs évaluation à chaque profondeur, et qui privilégie les échanges en cas d'avantage matériel.
- Des tables de hash qui marchent assez bien.
- Une fonction d'évaluation prenant en compte les tours sur colonnes ouvertes, l'activité des pièces, la structure de pions et l'occupation/contrôle du centre.
- Une fonction pour continuer l'évaluation en cas de promotion ou d'échanges possibles s'il arrive à une profondeur nulle.
- La gestion du temps par coup (pas globale, je m'y mettrai s'il se met à jouer mieux).
Ce qu'il n'a pas: (la liste est plus longue ^^)
- Les règles des 50 coups et des 3 répétitions de positions (cette dernière me semblant pénible à coder).
- Des principes généraux comme ne pas sortir sa dame trop tôt, protéger son roi.
- Diverses optimisations de l'alpha-beta comme le nullMove.
- Une bibliothèque d'ouvertures et des tables de finales.
- Les bons coefficients dans la fonction d'evaluation, et les bons critères..
- Une interface graphique (elle devrait arriver vite ;-)
- Un nom ^^
Si vous voulez le tester ou regarder le code source (en C++; il n'y a rien de révolutionnaire de ce côté je crois mais bon..) envoyez moi un mail (Piccolo3000@hotmail.com). Dites moi aussi si vous voulez un exécutable windows ou unix ou les deux (je ne sais pas si ça marcherait sur mac :-/). J'attends vos critiques :-)
Merci d'avance !
|
|
tu pourrais le mettre en telechargement non ? Il y a des quantites de gens qui n ont rien à dire et qui ont 3 sites, 2 blogs et 5 newsletters, alors si tu as un nouveau rybka en open-source ca serait bete de laisser perdre ;)
|
|
Euh Ayant servi de Bêta testeur du "monstre"...
Je dirais que pour le moment le monstre sort du dessin animé "Monster and Cie" il fait "Bouh!" mais il le pense pas ;o)
|
|
pff t'exagères Il joue pas si mal ^^
À sjakk : oui je ferai sûrement ça, dès que j'aurai un site (je m'y suis pas encore mis :-/). Donc bientôt : mon site et l'interface graphique :-)
|
|
Vous inquiétez pas Il a encore beaucoup à apprendre, c'est un monstre en devenir ! ;oX
|
|
je veut bien le tester !
|
|
moi j'avais un programme de shogi, écrit en javascript. Il mettait de 1 à 10 minutes pour jouer un coup !! En plus, entrecoupées de nombreux messages "il y a un script inactif sur votre page, souhaitez-vous l'interrompre".. Tout ça en se limitant à un exhaustif 1 coup de profondeur (+ une rapide heuristique d'échecs et de captures -quiescent search). Et ce malgré une utilisation astucieuse de bitboards malgré la taille 9x9 au shogi. Bon javascript étant interprété c'est peut être en grande partie de là que venaient mes problèmes.
Quoiqu'il en soit, quelqu'un qui est capable de faire un programme qui fonctionne vraiment (sans parler de toutes les fonctionnalités supplémentaires qu'a celui de Benji.. ma fonction d'évaluation se bornait à assigner des points aux pièces en fonction du nombre de cases contrôlées avec plus de valeur pour les cases à proximité du roi adverse) a toute mon admiration!
|
|
Merci Sigloxx ..mais je ne suis pas sûr que mon programme joue mieux que le tien ^^ Comme le dit Dcax on le bat facilement. Ceci dit ça fait plaisir d'obtenir un algorithme qui fonctionne après des semaines de débuggage désespéré, plus qu'à l'améliorer :-)
|
|
Fonction d'évaluation améliorée, dont un bonus pour le développement. Résultat, bin.. il se développe mieux ^^ mais laisse toujours son roi au centre.
Ceci dit je suis fier de mon BB, il a vaillament tenu dans la première partie où il avait 3 secondes par coup contre moi, il lache une pièce (effet d'horizon :-/) mais me plante une fouchette que je n'avais pas vu, résultat une finale bien délicate à gagner pour moi, je lui ai accordé la nulle (faut l'encourager hein).
Seconde partie, 30 secondes par coups pour le module, il se venge:
Blancs: le programme
Noirs: Benji
1 Cc3-Cf6 2 d4-d5 3 Fg5-Cbd7 4 Cf3-h6 5 Fh4 (il a retrouvé une ligne rare mais théorique, ô joie :)) 5 ...g5?! 6 Fg3-Fg7? 7 Cb5!-0-0 8 Cxc7 (Fxc7 semble plus simple, mais il ne peut pas voir ça à ce stade de son développement) 8 ...Tb8 9 e3?! (aïe.. risque d'enfermement, me dis-je [quoique non, il a Cxa6; je pense qu'il ne l'a pas joué à ce stade car il voyait qu'il pourrait le faire plus tard; bizarre tout de même) 9 ...a6 10 c4! (le rusé) 10 ...e6 (sinon le cavalier sort de toutes façons) 11 Fd6 avec compensations, et mal de crâne noir qui n'arrive plus à lire les coups en ligne de commande ^^
Position finale trait aux noirs:
|
|
quand je regarde cette position en clair, je me dis que j'ai vraiment joué comme une patate :) Cxa6 n'est même pas nécessaire, je peux rien bouger lol.. vivement l'interface (si quelqu'un sait comment dessiner des pièces transparentes..)
|
|
sur fond transparent, bien sûr pas les pièces elles-mêmes transparentes
|
|
Je viens de le tester Ton bébé se fait détruire par Rybka !
dcax, il est méchant ;o)
|
|
..et dépassé : tu n'as pas la version dont je parle...
|
|
Bon, ok, le prochain match, je met rybka sans sa bibliothèque d'ouverture O:-)
|
|
ajouts réalisés : * Règle des 50 coups sur l'interface, des 3 répétitions de positions dans l'alpha-beta (il ne me sembla pas vital d'implementer les 50 coups dans le programme, ou la repetition de coups dans l'interface).
* Principes de développement, pas sortir sa dame trop tôt, sécurité du roi.
* De meilleurs coefficients dans la fonction d'evaluation (toujours en amélioration ^^)
* Une interface graphique (qui n'aime pas les redimensionnements sous linux, et bugge lorsqu'elle n'est pas lancée en LDC sous windows, mais sinon elle marche bien).
Je mettrai la bonne version sous peu sur mon site (tout juste créé). Ce qui reste donc à faire:
* Diverses optimisations de l'alpha-beta, et d'autres méthodes éventuellement.
* Une bibliothèque d'ouvertures (pour les tables de finales je vais sans doute laisser tomber).
..Et un nom à trouver :)
|
|
ajouts réalisés: * nullMove, meilleur reordonnancement des coups dans l'alpha-beta. il atteint 4 ou 5 demi-coups en un temps raisonnable.
* une biblio d'ouvertures en cours d'ecriture (là il ne connait que la francaise..).
* fonction d'eval ameliorée (mais tjours pas satisfaisante à mon gout).
Bientôt: les finales elementaires (récupérer des tables existantes serait le mieux, sinon je peux indiquer la méthode de gain dans les cas D,T,FF), une dernière optimisation du code, une fonction d'eval qui évalue mieux et la version finale sur mon site (toujours vide ^^). ..Je garde les optimisations de l'alpha-beta que je n'ai pas faites pour les versions futures, faut de temps :)
|
|
Hop mon programme. Pas grand chose sur la page principale pour l'instant, je vais plutôt dormir :)
Téléchargez nombreux ^^ Ceci dit c'est une version provisoire, mais qui ne sera sans doute pas améliorée avant quelques mois. Faut d'abord que j'ai de bonnes notes ;o)
|
|
Erreur avec le lien précédent angelfire vous force à passer par ma page (ce qui n'est pas plus mal, à l'avenir j'ajouterai des trucs sur le site :).
Donc a) allez sur http://www.angelfire.com/planet/piccolo/
b) ajoutez "chess.zip" à la fin de la ligne d'adresse du navigateur, puis vous pourrez télécharger le prog.
|
|
et bien sûr j'attends vos commentaires ! hop, au dodo benji. la version linux pour demain
|
|
heu... "The page you are attempting to access has been removed because it violated Angelfire's Terms of Service. Please check out Angelfire's Help system for more information."
|
|
Si tuas un problème pour héberger ton bébé ... ... tu peux me l'envoyer par mail et je le mettrai en téléchargement sur mon site danideno.com
Mets aussi un petit message avec les infos que tu veux que je mette si c'est la cas.
Mon mail : ddn@danideno.com
|
|
gnié "The page you are attempting to access has been removed because it violated Angelfire's Terms of Service. Please check out Angelfire's Help system for more information."
J'en déduis donc que l'on a pas le droit de mettre une archive zip contenant un petit programme perso en ligne ~_^ ..il n'y avait que ça sur mon site de ttes façons..
On ne peut pas mettre de données en ligne sur un site gratuit? c'est tout pourri angelfire :(
Merci Danideno, si je n'arrive pas à mettre ce que je veux en ligne je t'enverrai un mail.
|
|
en espérant que ça fonctionne cette fois: http://geocities.com/bbenji1005/
Puis cliquer sur le seul lien actif de cette page ;o)
|
|
ça marche pour l'instant en attendant peut-etre de me faire virer parce que j'ai osé mettre un pov' exé.cutable en téléchargement sur mon site :-//
|
|
par contre 4.2Mo de transfert maxi par heure alors si ça marche pas essayez une heure après ^^
|
|
Pour l'interface, tu peux peut-être essayer les protocoles UCI ou winboard. Ca te permettra de jouer sous Chessbase, Arena, et autres.
|
|
hihihi 1.d4 f5 2.Cf3 g6 3.Fg5 (t'es out of the book?) 3...Rf7 (je crois que oui) 4.Ce5+ Re6 5.e4 fxe4 (merde j'ai un pion de moins) 6.Fc4+ d5 7.Dg4+ Rd6 8.Cf7+ Rc6 9.Cxd8+ Rb6 9.Dxc8 dxc4 (t'aimes bien les pions, hein ?) 10.Dxb7+ Ra5 11.Fd2+ c3 12.Fxc3+ Ra4 13.b3 # (ouais j'ai gagné!)
bon j'arrête de chambrer pour l'instant, quand j'aurais ton niveau en programmation, je recommencerais à me moquer de ton programme, là je n'ai qu'une chose à te dire: bravo!
|
|
j'ai améliorer mon record :) 1.e4 g6 2.d4 Fg7 3.Fc4 (pour finir vite lol) 3...b6 4.Df3 d5! (pas mal là je suis impressionné!) 5.exd5 Fa6 (heu là par contre...) 6.d6 c6 (là aussi, no comment...) 7.Dxf7 Rd7 8.Fe6 Rxd6 9.Ff4 Fe5 10.Fxe5#
bon, je retourne réviser mes partiels, mat en dix coups c'est déjà pas mal, qui dit mieux?
|
|
aïe t'es méchant avec lui, aussi, hé. Comme je l'ai dit la biblio ne comprend que la winawer petrossian et la winawer pion empoisonné pour l'instant :-/ C'est long à écrire.. Rejoues d4 et laisse le roquer en paix (me demande bien pkoi il a joué Rf7 ^^), ça devrait aller mieux ! Sinon le pb d'interface est corrigé. Ah au fait pour les promotions comme je maitrise pas trop la programmation événementielle en tcl/tk vous avez une minute chrono pour choisir votre pièce. Après... l'ordi joue ^^ oui, sans savoir votre coup (il est fort hein ;-))
|
|
j'ai pas pu m'en empêcher... pas mieux, mais joli...
1.e4 e5 2.Fc4 Fc5 3.Dh5 De7 4.Cc3 Ch6? 5.Cd5 Dd6 6.d4 exd4 7.Fxh6 gxh6 8.Cxc7 Dxc7 9.Dxf7 Rd8 10.Df6 Re8 11.Ff7+ Rf8 12.Fg6 Rg6 13.Df7#
|
|
il joue comme tu dis lorsque tu lui donnes qu'une seconde par coup je viens de vérifier. Et l'explication des "no comment" tient en trois mots: effet d'horizon; en une seconde il voit à 3 demi-coups maxi (bien sûr il va plus loin sur les échanges, mais se restreint alors aux échanges..). T'va voir quand il sera dopé d'ici qqes mois, tu f'ras moins le malin, non mais ;o))
|
|
donnes lui plus de temps ça devrait aider 15 secondes, 30 secondes ou plus.
|
|
hmm je n'ai rien dit j'ai du introduire un vieux bug dans le programme hier soir: 1 e4-Cc6 2 d4-d5 3 exd5-Cxd4 ..... (10 secondes par coup). je me replonge dans le code, hehe
|
|
change ta biblio benji ta NT Rf7 marche pas :)
|
|
lol sinon pour le bug Cxd4, ça vient de microsoft chuis sûr; je viens de tester sous linux il joue Dxd5 ^^
|
|
Encore un truc trouvé par un programmeur pour nous faire aller sous le pingouin!
Dcax, qui finira bien par craquer un jour ... ;o)
|
|
c'est officiel il doit y avoir un pb dans l'alpha-beta j'ai joué contre mon prog hier soir il faisait pas les betises que voit PetiteEglise :-/ Je vais corriger ça, c'est trop énorme.
|
|
j'ai viré la mauvaise version de mon site et devrais poster la version correcte demain. désolé :((
|
|
je viens de faire une partie sous linux, aucun bug constaté (il a perdu quand même, mais pas comme s'il avait joué Cxd4 au 3eme coup ;-))
|
|
fantastique ! l'alpha-beta était faux:
supposons qu'il soit dans une profondeur négative en recherchant une position stable; il n'evalue alors que les echanges contre piece de meme type ou inferieur: il joue c5xd4; l'adversaire replique FxD et est gagnant (DxF n'ayant pas ete considere, l'heuristique supposant qu'une piece inferieure a de grande chances d'etre defendue..); resultat : evaluation +10 pour un des deux joueurs !!
je corrige ce bug tout de suite en modifiant l'iterateur, et je reupload apres verification du resultat ^^
|
|
je suis vraiment impressionné tu dois sacrément toucher ta bille pour être capable de mettre au point un programme qui joue aux échecs !
|
|
je suis ni vraiment bon ni vraiment mauvais en programmation, mais c'est sensé être une grosse partie de mon futur job alors faut bien que je m'y mette ^^ et puis créer un jeu d'échecs c'est vraiment fun une fois passé les gros bugs du début :) Mais c'est une drogue..
|
|
version total débuggée : http://www.geocities.com/bbenji1005/index.html (version linux pas encore en ligne, je ne l'ai pas compilée).
Mais toujours pas de biblio :-/
|
|
Bon je ne suis pas aussi méchant que petiteglise Mais en lui donnant 25s de réflexion et sans le brusquer dans l'ouverture il trouve des coups intéressants ;o)
Dcax, qui est allé jusqu'en finale sur une petroff ;oX
|
|
Le plus dur C'est quand même d'essayer de me mettre dans sa peau, en ne jouant qu'avec les mêmes indications...
Ca donne des parties où je triche quand je transpose en finale ...;oX
|
|
Merci Dcax :) tu me remontes le moral là ! je serais presque motivé pour l'améliorer ce w-e, mais c pas sérieux faut que je bosse :-/
Par contre je pourrais lui créer un jumeau qui jouerait en suicide-chess: pas de vérification d'échec à faire (il y passe 25% du temps global d'après un profiling du code), bcp moins de coups possibles, une fonction d'éval plus simple, il vous donnerait sûrement du fil à retordre ^^ mais bon c'est plus un jeu d'échecs. Je viens de dl le code source de GNU chess, peut-être y trouverai-je de l'inspiration. ..Au fait en attendant essayez le jeu de dames, il joue bien lui ^^
|
|
tous les liens sont maintenant à jour ici: ma page
Je découvre le HTML, cette page devrait devenir plus attrayante dans les jours à venir ;-) Revenez de temps en temps, la version actuelle du prog est 1.0, si j'améliore je le nommerai en 1.x, puis 2.x ..etc.
Si par hasard les téléchargements ne passent pas vous pouvez me demandez par mail ou sur msn (je suis souvent là ^^): benji.
|
|
g raté le MAILTO Piccolo3000@hotmail.com
|
|
Il doit quand même bugguer pour le "pas sortir sa dame trop tôt" sur mon pc... même à 55s de temps je la vois dehors dans les 10 premiers coups.
|
|
il bug pas, c'est juste que cette règle interfère avec le nombre de cases contrôlées, héhé, une dame ça contrôle un gros bout d'échiquier :-/ Ce sera corrigé un de ces jours.
|
|
version 1.1 enfin débuggée totalement profondeur 5 atteinte en moins d'une seconde sur la position de départ, et profondeur 6 en une dizaine de secondes. Bon OK c'est que la position de départ, mais quand même bien mieux qu'avant ^^ Je met tout sur mon site d'ici cet aprèm
|
|
Bravo Je comprends maintenant pourquoi j'ai perdu la partie sur le gambit Roi accepté.
|
|
La version 1.1 est enfin OK, vous pouvez la tester sur mon site http://www.geocities.com/bbenji1005/
infiniment plus rapide que la version de base, mais encore loin de Fritz. J'ai des idées pour améliorer le tout mais ce sera très long de tout écrire.
|
|
encore loin de Fritz ok... mais encore loin de Kramnik ?!
:p
|
|
mon prog arrive presque à accrocher mes premiers logiciels d'échecs (pas programmés par moi heing, achetés ^^). Il se plante au milieu à cause de l'effet d'horizon (l'alpha-beta est encore très basique), mais ça me motive pas mal quand même car la première version perdait une pièce en 5 coups lol :)
|
|
|