Auteur/autrice : ES
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.
Puissance 4 en Python : Les alignements « troués » sont désormais pris en compte
Je viens de reprendre mon travail sur Puissance 4 après 9 mois d’interruption. La mise à jour qui intègre cette fois les alignements « troués » est sur GitHub. Une nouvelle compétition entre IA sera lancée très bientôt.
J’ai rajouté 9 nouvelles IA avec les correspondances suivantes :
IA12 (alignements troués) / IA2 (alignements pleins)
IA13 (alignements troués) / IA3 (alignements pleins)
IA14 (alignements troués) / IA4 (alignements pleins)
IA15 (alignements troués) / IA5 (alignements pleins)
IA16 (alignements troués) / IA6 (alignements pleins)
IA17 (alignements troués) / IA7 (alignements pleins)
IA18 (alignements troués) / IA8 (alignements pleins)
IA19 (alignements troués) / IA9 (alignements pleins)
IA20 (alignements troués) / IA10 (alignements pleins)
Sur 1 000 parties, IA20 contre IA10 (la meilleure jusqu’ici) donne 957 victoires à IA20, 0 victoires à IA10 et 43 parties nulles. Dans la suite, je laisserai donc tomber les stratégies basées sur les alignements pleins.
Programmer en JavaScript
Une réintroduction à JavaScript
MDN web docs
w3schools.com
p5.js : JavaScript library for creative coding => https://unpkg.com/p5
p5.sound
Tone.js => https://unpkg.com/tone
Web Audio API
Calculatrice NumWorks et Debian 10
Sous Debian 10, pour mettre à jour la calculatrice NumWorks, il faut au préalable installer sur son ordinateur le fichier 50-numworks-calculator.rules dans le répertoire /etc/udev/rules.d/.
Dans la console, on tape :
wget https://cdn.numworks.com/assets/files/my/drivers/linux/50-numworks-calculator-f2be8a48f68f1ee4d88c997c35194960.rules
sudo mv 50-numworks-calculator-*.rules /etc/udev/rules.d/50-numworks-calculator.rules
La mise à jour se fait depuis le Workshop.
Eukleides et Geany sous Debian 10
Eukleides est un langage de programmation pour tracer des figures de géométrie au format EPS (images vectorielles).
Dans la console :
sudo apt-get install eukleides
Paramétrer Geany pour des fichiers sources au format euk (Construire > Définir les commandes de construction) :
eukleides %e.euk
Attention à bien utiliser l’encodage ISO 8859-1 sous peine d’erreur : Document > Définir l’encodage > Européen de l’ouest > Occidental (ISO 8859-1). Appuyer sur la touche F8 pour obtenir une image au format EPS dans le répertoire du fichier source.
Trousseau de clés avec Chromium
Pour éviter l’affichage intempestif de la fenêtre concernant le trousseau de clés, supprimer tous les fichiers présents dans :
$home/.local/share/keyrings/ (fichiers cachés)
et se reconnecter sur sa session.
Silicon Valley – La révolution des hackers
Dans les années 1970, une poignée de « geeks » avant-gardistes propulse cette région de Californie sur le devant de la scène internationale. L’aube d’un bouleversement technologique majeur. 90 min. Disponible sur arte.tv du 21/04/2020 au 20/05/2020.
Installer Cura 4.8 sous Debian 10
Ultimaker Cura est un logiciel d’impression Open Source pour imprimantes 3D. Il est très simple à utiliser.
Dans la console :
Si le répertoire Cura n’existe pas déjà, je le crée :
sudo mkdir /usr/share/cura
Je télécharge l’application : Ultimaker_Cura-4.8.0.AppImage
J’installe l’application à l’endroit voulu :
cd Téléchargements
sudo mv Ultimaker_Cura-4.8.0.AppImage /usr/share/cura
Je rends le fichier exécutable :
sudo chmod +x /usr/share/cura/Ultimaker_Cura-4.8.0.AppImage
Je télécharge l’icône Cura et l’installe à l’endroit voulu :
wget http://entropie.org/3615/download/cura.png
sudo mv cura.png /usr/share/cura
Pour effacer une version précédente de Cura (à adapter) :
sudo rm -rf /usr/share/cura/Ultimaker_Cura-*
Pour intégrer le programme au menu de Xfce, je crée un fichier cura.desktop dans le répertoire /usr/share/applications :
cd /usr/share/applications
sudo nano cura.desktop
[Desktop Entry]
Type=Application
Name=Cura 4.8.0
Comment=Impression 3D
Exec=/usr/share/cura/Ultimaker_Cura-4.8.0.AppImage
Icon=/usr/share/cura/cura.png
Terminal=false
Categories=Engineering;
Convertir une vidéo d’un format vers un autre sous Debian 10
Mon appareil photo filme en 1280×720 pixels à 24 fps avec un débit du flux vidéo d’environ 22000 kb/s. Le format du sous-échantillonnage de la chrominance est du type yuvj422p. Le débit du flux audio de 176 kb/s. La fréquence d’échantillonage du son est de 11025 Hz (en mono).
J’utilise en mode console FFmpeg :
ffmpeg -i video.avi -s 1024×576 -b:v 1024k -crf 23 video.webm
-b:v : on spécifie le bitrate vidéo.
-crf : de 0 à 63 (0 : meilleure qualité).
Voir également : Recommended Settings for VOD.
Remarque : Pour pouvoir lire la vidéo sur un ordinateur un peu ancien, enregistrer en ogg :
ffmpeg -i video.avi -s 1024×576 -b:v 1024k -crf 23 video.ogg
Le format H264 qui suit est un format fermé. J’évite de l’utiliser.
ffmpeg -i video.avi -s 1024×576 -c:v libx264 -pix_fmt yuv420p -b:v 1024k -crf 23 video.mp4