MicroMax - Echecs et informatique sur PC-Windows

Rechercher
Aller au contenu

Menu principal :

Moteurs

MicroMax
Minimalist Chess



Moteur d'échecs de Harm Geert Muller codé en C et ne comportant que 2000 caractères et 133 lignes. Malgré cette taille infime, Micro-Max est assez bon joueur puisque le site CCRL classe la version 4.8 à 1813 Elo en contrôle de temps 40/15.



Objectif : minimalisme et performance...

En tant que joueur d'échecs je trouve étrange de se fixer comme objectif premier de faire tenir le moteur d'échecs dans le plus petit volume possible, à une époque ou la valeur de l'octet n'est pas loin d'être nulle. Mais je comprends qu'en tant que programmeur le défi puisse être mobilisateur.  Harm Geert Muller s'était d'abord fixé la limite de 1200 caractères de code avant de se rendre compte que même en ne retenant que le principal des règles FIDE  la force du moteur serait insuffisante. C'est ce qu'à fait Oscar Toledo avec NanoChess(1), qui atteint difficilement les 1200 Elo et fait preuve d'un jeu qui fera souvent se dresser les cheveux sur la tête d'un bon joueur d'échecs. Du coup Muller a déplacé la limite à 2000 caractères. Cela lui a permis de prendre en compte toutes les règles FIDE à l'exception de la sous-promotion, de mettre en place une table de transposition, une heuristique de recherche tranquille minimale, une table pièces-cases pour soulager l'évaluation et plusieurs heuristiques d'élagage et de réduction de l'arbre de recherche - certes simplifiée au maximum mais suffisantes pour améliorer sensiblement la force.


Bien sûr, la place était trop chiche pour faire entrer des quantités de connaissances positionnelles dans l'évaluation. Par exemple, la prise en compte de la structure de pions est minimale, ignorant notamment les situations de pions doublés. Il n'empêche : MicroMax dépasse les 1800 Elo.  Et sur la dernière version, la 4.8, les comportements les plus problématiques du moteur ont été supprimés ou limités. Il reste de quoi offrir un adversaire honorable à la grande majorité des joueurs.


Téléchargement


Vous trouverez sur la page de téléchargement de Harm Geert Muller l'ensemble de ses nombreux moteurs et utilitaires. Repérez micro-Max 4.8 et téléchargez les exécutables Winboard. L'archive contient six exécutables :

"Micromax48_c2d" (pour Intel Core 2)
"Micromax48_PI", "PII", "PIII" et "PIV" (pour pentium 1 à 4(2))
"umax4_8w.exe"


Les cinq premiers ont été obtenus par Denis Mendoza en utilisant un compilateur développé spécifiquement par Intel pour ses processeurs. La dernière, "umax4_8w.exe", est la compilation standard de Muller. Elle fonctionnera toujours mais elle est assez lente. Si vous avez un processeur Intel, essayez prioritairement la version "PIV".  Sur mon ordinateur, celle-ci s'est révélée 82% plus rapide que la version standard.  
J'ignore si les exécutables pour processeur Intel risquent de planter avec un processeur AMD ou autre ; je pense plus probable que les gains de vitesse soient simplement effacés. Le mieux est de lancer la version "Pentium IV" et de voir si elle fonctionne. Si ce n'est pas le cas, rabattez-vous sur la version standard.
Si vous souhaitez des certitudes, vous pourrez simplement tester les versions les unes après les autres. Il suffit de faire un double-clic sur l'exécutable et dans la fenêtre qui s'ouvre de saisir (en respectant la casse) :

post
level 40 400 0
time 500000
go


Déclenchez un chronomètre et mesurez en combien de temps la version affiche son premier coup (b1c3).



En combien de temps le moteur conclut-il à b1c3 ?



Installation et configuration

Rien de particulier à signaler. Moteur Winboard, MicroMax ne fonctionne pas avec les interfaces Lucas Chess et Mayura Chess Board, qui n'acceptent que les moteurs UCI.



Installation dans Arena

Pour employer MicroMax dans Arena : menu "Modules" > "Installer nouveau module" et allez chercher le bon fichier exécutable. Normalement,  Arena détecte qu'il s'agit d'un moteur Winboard et ne vous demande rien à ce sujet. Dans le cas contraire,  indiquer qu'il s'agit d'un moteur Winboard (et non d'un UCI).


Installation dans PyChess

Avec PyChess : menu "Éditer" > "Moteurs" puis bouton "Nouveau"... Utilisez le navigateur pour localiser le bon fichier exécutable et "Ouvrir".

Installation dans Crafty Chess Interface

Pour Crafty Chess Interface : menu "Moteurs" > "Ajouter nouveau moteur" et allez chercher le bon fichier exécutable.

Il n'y a aucune possibilité de configuration du moteur. Prévoir de configurer certains paramètres aurait d'ailleurs alourdi le code sans apporter grand chose. MicroMax utilise une table de hachage de taille fixe qui, autant que j'ai pu en juger, consomme jusqu'à une centaine de Mo en fonctionnement - valeur suffisante pour un moteur de 1800 Elo.



Bibliothèque d'ouvertures

Évidemment pas de prise en compte d'une bibliothèque d'ouvertures interne. Avec Arena nous pourrons facilement guider le moteur vers une bibliothèque au format Abk. Au besoin je peux vous en proposer une, obtenue à partir de la base de jeux d'Olivier Deville fournie avec Arena. C'est une petite bibliothèque généraliste, d'une profondeur de 12 ½ coups.


Télécharger "O-Deville.abk" ?

Copier de préférence la bibliothèque dans le dossier "Books" d'Arena. Puis menu "Modules" > "Gérer", choisir MicroMax dans la liste des moteurs, onglet "Détails", onglet "Bibliothèque" ; cocher "Utiliser bibliothèque principale d'Arena" ou faire un autre choix de bibliothèque avec le sélecteur de fichiers (ne pas oublier dans ce cas de décocher la bibliothèque principale).

Pour ceux qui utiliseraient PyChess, rappelons nous que l'interface peut forcer n'importe quel moteur à employer une bibliothèque au format Polyglot (*.bin). Je peux vous proposer par exemple la même bibliothèque O-Deville mais au format *.bin.


Télécharger "O-Deville.bin" ?

Pour employer cette bibliothèque avec PyChess : menu "Editer" > "Préférences", s'assurer que "Utiliser la bibliothèque des ouvertures" est coché et utiliser le sélecteur de fichier pour aller chercher "O-Deville.bin".
Attention : PyChess ne peut pas lier un moteur particulier et une bibliothèque. Celle qui vient d'être sélectionnée pour MicroMax devient de facto la bibliothèque d'ouvertures principale de l'interface. Ne pas l'oublier !


Gérer la force

Avec un niveau de jeu de l'ordre de 1800 Elo en partie 40/15, limiter MicroMax ne sera pas une question essentielle. Rappelons donc rapidement le plus important :

➤Avec Arena, nous pouvons désactiver la pendule (menu "Options" > "Pendule arrêtée" (l'icône en forme d'horloge doit être entourée d'un filet bleu). Dans ce cas, seul le moteur subit la pression du temps) et choisir un contrôle de temps rapide pour le moteur (menu "Niveau" > "Régler" (ou Ctrl+L),  choisir "Blitz" ou "Tournoi")

➤Avec PyChess, choisir MicroMax comme moteur et démarrer une partie : menu "Partie" > "Nouvelle partie" > "Depuis la position classique de départ" (ou Ctrl+N). Un menu s'ouvre et à partir de là nous devons fixer les conditions de la partie. Avec PyChess nous n'avons pas trop de choix : il faut choisir un contrôle de temps (au besoin en modifiant le choix par défaut) et réduire la force du moteur en jouant sur la réglette de force, qui se trouve sous les joueurs. Par défaut elle est à 20 et la force du moteur sera maximale. A 1 le moteur sera très faible.

➤Avec Crafty Chess Interface, tout se passe dans la fenêtre "Control panel". Nous pouvons ne pas imposer au joueur humain la pression du temps. Il suffit de régler le contrôle de temps souhaité pour le moteur, de valider (bouton "Set") puis de cliquer sur le bouton "Go" sans avoir coché la case "On".
+Accepter de subir la pression du temps mais en se donnant une marge supplémentaire : cocher "On",  double-cliquer sur l'horloge du joueur humain dans la fenêtre "Horloge & Statuts": une fenêtre s'ouvre. Entrez un temps sous la forme minutes:seconde. Par exemple 30:00, pour porter à 30 minutes le temps dont le joueur humain disposera.


L'IA d'échecs préférée des microcontrôleurs

La combinaison d'un très faible encombrement, d'une grande légèreté logiciel et d'un niveau de jeu restant substantiel a permis à MicroMax de s'imposer comme le "cerveau d'échecs" de nombre de petits systèmes informatiques tel l'Atmel ATmega88, l'Elektor ATM18 Minichess ou encore l'Arduino Due Chess Robot.



L'Elektor Chess Computer


(1) 1257 caractères, exactement
(2) Il faut se rappeler que MicroMax est un vieux moteur, les premières versions apparaissant au début des années 2000.


Rob Rob, juillet 2024

 
 
 
 
 
 
Retourner au contenu | Retourner au menu _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })();