Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Chess Engine - 100% LabVIEW

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" Smiley clignant de l'œil

 

... à suivre ...

 

 

 

 

 

0 Compliments
Message 31 sur 145
3 330 Visites

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    Smiley heureux

 

J'intégrerai la correction dans la ver Beta 4 (sauf si demande).

 

Message 32 sur 145
3 321 Visites

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.

 

bug.jpg

 

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.

Message 33 sur 145
3 313 Visites

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 ! 

0 Compliments
Message 34 sur 145
3 312 Visites

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 😉

Message 35 sur 145
3 300 Visites

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.

0 Compliments
Message 36 sur 145
3 295 Visites

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é.  Smiley heureux

 

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.    Smiley clignant de l'œil

Si tu trouve autres choses ... surtout, n'hésite pas.

0 Compliments
Message 37 sur 145
3 289 Visites

salut, tu devrais mettre un fichier "log" qui sauvegarde les coups. Si bug, tu peux ainsi "rejouer" la partie.

A+

banniere Luc Livre NXG Champion.png

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

0 Compliments
Message 38 sur 145
3 276 Visites

oui Luc, j'y ai déjà pensé ... c'est effectivement une bonne idée.

 

j'inscris ça dans les "to do".

0 Compliments
Message 39 sur 145
3 272 Visites

ouadji a écrit :

si tu essaies de "bloquer" sa Dame ... bonne chance !

  


donc 1 luc à 2 IA

chessGame.png

 

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+

banniere Luc Livre NXG Champion.png

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

0 Compliments
Message 40 sur 145
3 269 Visites