Puissance 4 en Python : Réactualisation de la compétition entre IA (0 à 9)

Suite à l’introduction d’une faible part d’aléatoire dans le codage des IA (voir article précédent), une mise à jour s’impose.

Présentation des résultats :

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

IA0 / IA0 / Nulles : 498 749 / 498 630 / 2 621
IA1 / IA0 / Nulles : 877 813 / 122 165 / 22
IA2 / IA0 / Nulles : 970 751 / 29 249 / 0
IA3 / IA0 / Nulles : 963 172 / 26 350 / 10 478
IA4 / IA0 / Nulles : 986 385 / 13 601 / 14
IA5 / IA0 / Nulles : 984 896 / 15 012 / 92
IA6 / IA0 / Nulles : 988 261 / 11 645 / 94
IA7 / IA0 / Nulles : 986 483 / 13 095 / 422
IA8 / IA0 / Nulles : 969 613 / 30 376 / 11
IA9 / IA0 / Nulles : 944 008 / 55 872 / 120

IA1 / IA1 / Nulles : 469 129 / 468 488 / 62 383
IA2 / IA1 / Nulles : 1 000 000 / 0 / 0
IA3 / IA1 / Nulles : 533 878 / 0 / 466 122
IA4 / IA1 / Nulles : 583 322 / 416 678 / 0 **
IA5 / IA1 / Nulles : 979 151 / 0 / 20 849
IA6 / IA1 / Nulles : 500 000 / 500 000 / 0
IA7 / IA1 / Nulles : 752 809 / 0 / 247 191
IA8 / IA1 / Nulles : 749 970 / 250 030 / 0
IA9 / IA1 / Nulles : 513 791 / 402 861 / 83 348 **

IA2 / IA2 / Nulles : 500 000 / 500 000 / 0
IA3 / IA2 / Nulles : 738 376 / 190 170 / 71 454 **
IA4 / IA2 / Nulles : 1 000 000 / 0 / 0
IA5 / IA2 / Nulles : 1 000 000 / 0 / 0
IA6 / IA2 / Nulles : 958 403 / 41 597 / 0
IA7 / IA2 / Nulles : 708 737 / 291 263 / 0
IA8 / IA2 / Nulles : 407 473 / 592 527 / 0 **
IA9 / IA2 / Nulles : 333 884 / 666 116 / 0

IA3 / IA3 / Nulles : 180 253 / 179 288 / 640 459
IA4 / IA3 / Nulles : 210 562 / 711 181 / 78 257
IA5 / IA3 / Nulles : 390 837 / 399 848 / 209 315 **
IA6 / IA3 / Nulles : 0 / 749 868 / 250 132
IA7 / IA3 / Nulles : 113 404 / 166 407 / 720 189
IA8 / IA3 / Nulles : 314 354 / 555 529 / 130 117 **
IA9 / IA3 / Nulles : 143 539 / 106 110 / 750 351

IA4 / IA4 / Nulles : 499 900 / 500 100 / 0
IA5 / IA4 / Nulles : 1 000 000 / 0 / 0
IA6 / IA4 / Nulles : 125 486 / 125 397 / 749 117
IA7 / IA4 / Nulles : 624 828 / 0 / 375 172 **
IA8 / IA4 / Nulles : 116 529 / 883 471 / 0
IA9 / IA4 / Nulles : 53 125 / 874 902 / 71 973

IA5 / IA5 / Nulles : 500 107 / 499 893 / 0
IA6 / IA5 / Nulles : 0 / 1 000 000 / 0
IA7 / IA5 / Nulles : 523 509 / 434 870 / 41 621 **
IA8 / IA5 / Nulles : 727 853 / 272 147 / 0 **
IA9 / IA5 / Nulles : 0 / 746 805 / 253 195

IA6 / IA6 / Nulles : 0 / 0 / 1 000 000
IA7 / IA6 / Nulles : 1 000 000 / 0 / 0
IA8 / IA6 / Nulles : 244 349 / 744 638 / 11 013 **
IA9 / IA6 / Nulles : 500 000 / 500 000 / 0

IA7 / IA7 / Nulles : 166 210 / 166 396 / 667 394 **
IA8 / IA7 / Nulles : 858 227 / 133 496 / 8 277
IA9 / IA7 / Nulles : 0 / 635 147 / 364 853 **

IA8 / IA8 / Nulles : 499 861 / 500 139 / 0
IA9 / IA8 / Nulles : 250 253 / 749 747 / 0 **

IA9 / IA9 / Nulles : 381 972 / 381 387 / 236 641

Bilan (Nombre de victoires) :

IA0 : 0
IA1 : 1
IA2 : 4
IA3 : 7
IA4 : 5
IA5 : 6
IA6 : 3
IA7 : 7
IA8 : 5
IA9 : 2

Quelques paradoxes :

IA6 bat très largement IA2 ; IA2 écrase IA1 et pourtant on n’arrive pas à départager IA6 et IA1. IA5 écrase IA4 ; IA4 bat largement IA8 et paradoxalement IA8 bat IA5. IA7 écrase IA6 ; IA6 bat largement IA8 et paradoxalement IA8 bat largement IA7.

Code source sur GitHub.

Puissance 4 en Python

Introduction d’un peu d’aléatoire au niveau des IA : Si plusieurs positions sont possibles (égalité de poids), l’IA tire au hasard parmi ces meilleures positions plutôt que de s’arrêter à la première dans la liste. Reste à voir ce que cela va changer au niveau de la compétition précédente.

Le codage des IA devient donc :

IA0 : Priorité H
IA1 : Priorité PH
IA2 : Priorités A4PH / A3PH / A2PH / PH
IA3 : Priorités B4PH / B3PH / B2PH / PH
IA4 : Priorités A4PH / B4PH / A3PH / B3PH / A2PH / B2PH / PH
IA5 : Priorités A4PH / B4PH / A3PH / B3PH / B2PH / A2PH / PH
IA6 : Priorités A4PH / B4PH / B3PH / A3PH / A2PH / B2PH / PH
IA7 : Priorités A4PH / B4PH / B3PH / A3PH / B2PH / A2PH / PH
IA8 : Priorités A4PH / B4PH / A2PH / B2PH / PH
IA9 : Priorités A4PH / B4PH / B2PH / A2PH / PH

Code source sur GitHub.