06-06-2014 02:38 PM - modifié 06-06-2014 02:39 PM
si tu essaies de "bloquer" sa Dame ... bonne chance !
si tu veux avoir une chance de prendre l'avantage, tu dois jouer "serré / compact"
ne pas laisser de grandes lignes ouvertes ... autrement dit la technique de la tortue romaine.
sa Dame est particulièrement "à l'aise" quand elle peut facilement se déplacer et changer de "vecteur" d'attaque.
Pour la petite histoire :
Ce code fonctionne suivant un parfait principe d'intelligence artificielle (algo MinMax / alpha-beta)
c'est un processus complexe sur une profondeur de 4 coups.
Je connais le fonctionnement de ma fonction d'évaluation, je sais "vers quoi" je "pousse" le moteur.
Par contre ... je ne sais pas pourquoi le résultat final de ce processus abouti à cette mise en évidence particulière de la Dame (je cherche)
Je ne sais pas (encore) pourquoi il y a une évidente inertie à mettre en jeu les Cavaliers et les Tours. (je cherche aussi)
A l'évidence, ma fonction d'évaluation, associée à cette profondeur "MinMax" à 4 coups génère des effets plus subtils et complexes que je ne l'aurais imaginé.
En ce qui concerne la prévisibilité ... la redondance de sa façon d'attaquer ... je pense pouvoir remédier à ça.
C'est inhérent au moteur lui même, qui devant une même situation de départ (ou presque) génère le même résultat d'analyse.
Ma fonction d'évaluation devrait être dynamique et non statique. Pouvoir faire la différence entre début, milieu et fin de partie.
Par exemple, en début de partie, intégrer dans son processus d'évaluation le type de coup joué par les blancs.
Celui-ci pourrait déterminé pour l'AI le type d'ouverture à choisir.
Je vais d'abord essayer de comprendre pourquoi le résultat final de l'évaluation donne priorité a la Dame.
Ensuite ... essayer de répartir d'avantage le potentiel d'attaque entre les différentes pièces.
J'aimerais qu'il "sorte" ses Cavaliers plus vite. Il est pas mal efficace aussi avec ses Cavaliers ... encore faut-il qu'il les sorte.
C'est très étonnant (et très amusant) ... c'est tout a fait nouveau pour moi.
Je comprends parfaitement chaque étape du code ... mais le résultat final semble avoir quelque chose " d'autonome ".
C'est presque "perturbant"
... à suivre ...
le 06-06-2014 05:45 PM
Le bug du "comptage des coups" est corrigé.
une grosse bétise dans le code ... dans le cas où tu sélectionnes un coup qui te place en échec.
Dans ce cas, le coup est refusé et la Led "in check" flashe une fois.
Dans ce cas précis, le code comptabilisait un double coup pour l'adversaire.
J'ai trouvé de suite ... comme un visage sur lequel il y a 2 nez
J'intégrerai la correction dans la ver Beta 4 (sauf si demande).
06-07-2014 01:40 AM - modifié 06-07-2014 01:41 AM
Salut,
Bien pour la correction du bug, j'en ai trouvé un autre plus embêtant.
Sur l'échiquier ci-dessous, je pose mon cheval de H3 à G5, proche du mat (via ma reine) en ma faveur donc.
L'IA, par un phénomène de téléportation (j'imagine :D) arrive avec sa tour de gauche à me manger ce cheval instantanément (clic de souris aussitôt laché, aussitôt mangé), en partant de son point de départ A8!
Et en plus de ça après son temps de réflexion normal, il joue un coup de plus en mettant le fou de C8 à G4.
Je te laisse donc investiguer, mais malgré ma bonne volonté j'ai renoncé à finir cette partie 😄
Ensuite j'ai testé la multiplication des dames via les pions, ça fonctionne bien, pas de souci, le roi adverse se défends plutôt pas mal contre 6 dames 😄
Bon weekend.
06-07-2014 03:36 AM - modifié 06-07-2014 03:52 AM
ok ... je vais essayé de "reproduire".
curieux ... j'ai fait tourner ce moteur des centaines (milliers?) de fois ... jamais rien remarqué de ce type.
MAIS ... ton constat est très très intéressant et important.
Il s'agit probablement d'un bug dynamique comme je les appelle ... un bug suivant paramètres, un bug qui dépend de l'historique (les pires !)
Ceci dit, c'est une chance inespérée d'éliminer un "cafard caché" (grand merci)
Ce n'est pas un problème d'AI, c'est très très probablement un soucis de gestion de l'échiquier. (mais je pressens un truc bien vicieux)
Je vais te demander un truc de dingue.
Penses-tu q'il serait possible de reproduire cette partie jusqu'au bug ... et de noter la séquence de coups.
oui, je sais ... je te demande un truc de fou.
Mais comme je me connais, je ne lacherai pas sans avoir trouvé le dit cancrelat.
Ton aide et tes différents tests et constats sont inestimables, encore merci.
edit:
le roi adverse se défends plutôt pas mal contre 6 dames ... chouette ça !
le 06-07-2014 04:54 AM
Je crois que je ne pourrais accéder à ta requête cette fois-ci...
Ce qui semblerait être les 8 premiers coups seraient:
e2 - e4 / Bf1 - b5 / Bb5 - a4 / Ba4 - b3 / Ng1 - f3 / Ke1 - f1 / Nf3 - g5 / d2 - d4
Je n'arrive pas à trouver la suite.
En outre, tu peux être assuré qu'il y a bien un bug, car pour arriver au positionnement des pions noirs de mon screen précédent, il lui aurait fallut un grand minimum de 15 coups au lieu des 12 réalisés.
Bon courage 😉
le 06-07-2014 06:01 AM
Merci beaucoup ... je fonce dans le code.
Je trouverai ...aucun bug ne m'a jamais résisté.
99% des bugs sont de grosses idioties ... rare sont ceux qui sont réellement vicieux.
Ce fix méritera de passer à Beta4. (y compris le fix du comptage des coups)
Je reviendrai une fois résolu.
06-07-2014 07:41 AM - modifié 06-07-2014 07:48 AM
J'ai trouvé.
(j'ai pu assez rapidement isoler et reproduire en 3 coups)
rien avoir avec le moteur en lui-même.
En fait, le bug provient de ma dernière ajoute .... visu du coup joué par le moteur.
C'est un "télescopage" entre :
1) la mise en évidence graphique du coup joué par le moteur. (en bleu)
et
2) la possibilité que l'on a, pendant que le moteur "pense", de cliquer "quand même" sur une de nos pièces blanches. (en rouge)
après que le moteur a joué son coup, la case d'arrivée est en bleu ...
MAIS ... pendant qu'il pensait on a cliqué sur cette même case (d'arrivée) ... qui s'est mise en rouge.
Quand le moteur à terminé de jouer son coup ... sur cette case d'arrivée ... bleu ET rouge sont ON;
l'IHM considère alors que les Blancs ont riposté ... car il possède une case rouge et une case bleue superposée.
Il joue donc les Blancs ... VERS ... la dite case (case d'arrivée du dernier coup du moteur)
Mais quelle pièce blanches va-t-il bouger vers cette case ???
il ne le sait pas ... car il s'agit d'un coup fantome.
Il prend alors la valeur par défaut sur le Registre à décalage ... soit 0,0 ... et en 0,0 (a8 = 0,0 sur un array 2D) .. se trouve une Tour ... mais une Toir Noire.
L'IHM se moque que la Tour soit Noire, car à ce stade, "normalement", la "couleur" est dajà gérée.
Il va donc bouger la Tour noire placée en 0,0 vers la dite case (pour l'IHM, il vient d'exécuter un "coup des blancs".)
Et comme il vient d'exacuter un coup des blancs ... il repasse la main au moteur pour un second coup des noirs.
moralité : un beau petit cancrelat bien dodu, mais qui n'a pas résisté longtemps.
Problème fixé.
pas trop le temps de suite, mais je posterai la ver Beta4 au plus tard ce soir.
Merci TeamJP34 de m'avoir permis de fixer cet affreux cancrelat.
Si tu trouve autres choses ... surtout, n'hésite pas.
le 06-07-2014 02:27 PM
salut, tu devrais mettre un fichier "log" qui sauvegarde les coups. Si bug, tu peux ainsi "rejouer" la partie.
A+
Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion
MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group
le 06-07-2014 02:53 PM
oui Luc, j'y ai déjà pensé ... c'est effectivement une bonne idée.
j'inscris ça dans les "to do".
le 06-07-2014 03:03 PM
ouadji a écrit :
si tu essaies de "bloquer" sa Dame ... bonne chance !
donc 1 luc à 2 IA
j'ai bloqué la dame et "il" aime trop le sacrifice.
Sinon avec u nprojet LabVIEW, et une arborescence de dossier Windows : la classe!
mais j'ai toujours pas regardé le code, enfin depuis la version 0 alpha (il y a 2 mois?!)
A+
Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion
MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group