Puissance 4 en Python : Nouvelle compétition

L’objectif était de mettre au point une intelligence artificielle (IA) la meilleure possible pour jouer à Puissance 4, sans descendre en profondeur dans un arbre comme avec l’algorithme minimax ou alpha-bêta. Je pense être très près du but avec IA15 bien que l’IA en question soit encore facile à battre pour un humain. Va désormais venir le temps des arbres, puis de l’apprentissage…

Présentation des IA :

Codage de la stratégie :

H veut dire Hasard
P veut dire Poids des cases (il y a plus de possibilités d’alignements pour certaines cases)
AX veut dire Alignement de X pions (l’IA essaye d’aligner X pions ; les alignements « troués » de 2 ou 3 pions sont pris en compte)
BX veut dire Blocage de X pions (l’IA essaye d’empêcher l’adversaire d’aligner X pions ; les alignements « troués » de 2 ou 3 pions sont pris en compte)

Le codage des IA en compétition est :

IA0 : Priorité H
IA1 : Priorité PH
IA12 : Priorités A4PH / A3PH / A2PH / PH
IA13 : Priorités B4PH / B3PH / B2PH / PH
IA14 : Priorités A4PH / B4PH / A3PH / B3PH / A2PH / B2PH / PH
IA15 : Priorités A4PH / B4PH / A3PH / B3PH / B2PH / A2PH / PH
IA16 : Priorités A4PH / B4PH / B3PH / A3PH / A2PH / B2PH / PH
IA17 : Priorités A4PH / B4PH / B3PH / A3PH / B2PH / A2PH / PH
IA18 : Priorités A4PH / B4PH / A2PH / B2PH / PH
IA19 : Priorités A4PH / B4PH / B2PH / A2PH / PH
IA20 : Priorités A4PH / B4PH / B3PH / B2PH / A3PH / A2PH / PH

Présentation des résultats :

Sur 1 million de parties, les résultats bruts sont :

IA0 / IA0 / Nulles : 499 231 / 498 300 / 2 469
IA1 / IA0 / Nulles : 878 716 / 121 257 / 27
IA12 / IA0 / Nulles : 970 480 / 29 520 / 0
IA13 / IA0 / Nulles : 967 884 / 18 236 / 13 880
IA14 / IA0 / Nulles : 996 952 / 3 034 / 14
IA15 / IA0 / Nulles : 995 524 / 4 369 / 107
IA16 / IA0 / Nulles : 993 656 / 6 191 / 153
IA17 / IA0 / Nulles : 993 568 / 5 938 / 494
IA18 / IA0 / Nulles : 992 092 / 7 886 / 22
IA19 / IA0 / Nulles : 988 123 / 11 735 / 142
IA20 / IA0 / Nulles : 991 937 / 7 195 / 868

IA15 / IA0 / Nulles : 995 524 / 4 369 / 107
IA15 / IA1 / Nulles : 979 122 / 0 / 20 878
IA15 / IA12 / Nulles : 1 000 000 / 0 / 0
IA15 / IA13 / Nulles : 724 198 / 266 561 / 9 241
IA15 / IA14 / Nulles : 1 000 000 / 0 / 0
IA15 / IA15 / Nulles : 500 000 / 500 000 / 0
IA15 / IA16 / Nulles : 1 000 000 / 0 / 0
IA15 / IA17 / Nulles : 1 000 000 / 0 / 0
IA15 / IA18 / Nulles : 771 989 / 228 011 / 0
IA15 / IA19 / Nulles : 746 678 / 0 / 253 322
IA15 / IA20 / Nulles : 723 979 / 266 779 / 9 242

Commentaires :

Si on compare IA14 et IA15, il n’y a qu’une seule inversion dans le codage de la stratégie : on passe de A2PH / B2PH pour IA14 à B2PH / A2PH pour IA15 et l’effet est radical : IA15 écrase IA14. De même, si on compare IA15 et IA17, on passe de A3PH / B3PH pour IA15 à B3PH / A3PH pour IA17 et l’effet est radical : IA17 est écrasée par IA15.

Code source sur GitHub.

Laisser un commentaire