Le blog d'un Geekus biologicus juvénile

Posts

Phénologie des observations d'hirondelle rustique en France

Un peu de contexte Avec le changement climatique, les plantes profittent des douceurs de début de printemps, les fleurs sont plus précoces, les populations d’insectes sont plus précoces; et certaines espèces d’oiseaux ont semble t’il déjà commencé à modifier leur habitudes migratoires et arrivent plus tôt sous nos latitudes. <citation needed> Nous allons tenter dans ce billet de blog, d’explorer les données d’observation de l’avifaune de Faune-France pour tenter d’en extraire des tendances pour quelques espèces communes.

Jeu des tentes en Answer Set Programming

Le jeu des tentes est un casse-tête logique qui se joue sur une grille rectangulaire ou carrée. Chaque case de la grille peut être occupée par un arbre, une tente ou rester vide. <Nourry (2024)> Les règles sont les suivantes: Il y a des arbres sur certaines cellules de la grille. Les tentes sont placées sur des emplacement vides. Chaque tente est attaché à un arbre placé sur une case adjacente (pas en diagonale).

Carrés latins en Answer Set Programming

Un carré latin est un tableau dans lequel chaque ligne et chaque colonne contient le même ensemble de symboles. L’objectif de ce billet est de proposer un ensemble de règles Answer Set Programming pour générer les carrés latins en utilisant la programmation par contrainte. Les règles du carré latin alphabet(a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z). % Chaque cellule a un symbole issu de l'alphabet. 1 { cell(R, C, S): alphabet(S) } 1 :- R = 1.

Les échelles de mots de Lewis Carroll, une application de GraphSearch et du problème de l'arbre de Steiner

Source: chapitre 33 de « Selected Papers on Fun and Games » de Donald E. Knuth. Une échelle de mots est un jeu qui consiste à trouver, connaissant un mot de départ et un mot d’arrivée une succession de mots tel que le mot \(i+1\) est semblable au mot \(i\) (au sens où une transformation simple suffit à passer du mot \(i\) au mot \(i+1\)). Nous allons considerer une version simplifiée du jeu qui n’autorise que l’opération de changement d’une lettre sur les mots (on ignore les opérations « ajout / retrait de lettre » et « changement de l’ordre des lettre »).

Quelques problèmes en Answer Set Programming

Cette page rassemble quelques solutions en Answer Set Programming (avec Clingo) à une sélection de problèmes de logique originaires de sources diverses et variées. Brilliant Order logic Source: https://brilliant.org Qu°1 4 is before 1 and 2. 3 is after 1 and 2. 2 is before 1. #const n=4. values(1..n). before(4, (1;2)). after(3, (1;2)). before(2, 1). values(1..n). after(After, Before) :- before(Before, After). before(Before, After) :- after(After, Before). n { position(Value, Position): values(Value), values(Position) } n.

Le problème de couverture par sommets en Answer Set Programming avec Clingo

Dans le précédent poste, nous avions résolu le problème de la couverture minimale avec l’Integer Programming. Dans ce billet, nous poursuivons notre exploration de ce problème en implémentant un programme logique Answer Set Programming avec clingo. Reprenons le meme exemple: % On commence par définir le graphe non orienté % L'ensemble des sommets noeud(a;b;c;d;e). % L'ensemble des aretes arete(a,c). arete(a,d). arete(a,e). arete(c,b). arete(d,e). % Comme le graphe est non orienté, dès lors qu'une arete u,v existe, l'arete v,u est prise en compte.

Le problème de couverture par sommets en Integer Linear Programming avec LP-solve

Le problème de couverture par sommets (ou Vertex Cover en anglais) consiste, étant donné un graphe, à trouver un ensemble minimum de sommets de sorte que toutes les arêtes soient couvertes. Formellement: soit \(G(V, E)\) un graphe, une couverture est un ensemble \(S\) tel que: \[ S \subseteq V \text{ tel que } \forall e = (u, v) \in E, u \in S, \text{ ou } v \in S \]

Analyser des sons pour le programme Vigie-Chiro sur votre machine GNU/Linux avec Wine

Après avoir enregistré des sons de chauve-souris, orthoptères ou d’oiseaux, il est souvent utile de jeter un oeil aux spectrogrammes des enregistrements, par exemple lors de l’analyse d’enregistrements réalisés dans le cadre du programme Vigie-Chiro. Les logiciels recommandés dans les tutoriels Vigie-Chiro sont, pour certains, développés uniquement pour Windows. Dans cet article, nous apprendrons comment installer ces logiciels (Kaleidoscope, Syrinx, Batsound 4, 7-zip et Lupas-Rename) sur une machine Linux à l’aide de Wine.

Piège Photo Raspberry Pi avec Motion

Après avoir réalisé un piège photo avec un caméra déclenchée par un détecteur de mouvement infrarouge et Arduino, j’ai eu envie d’essayer de faire le même type de système avec un Raspberry Pi. L’avantage de Raspberry Pi est que c’est un vrai ordinateur (pas un simple microcontrolleur comme l’ATMega de l’Arduino). De ce fait il a une plus grande capacité de calculs, et on peut se passer du PIR sensor en utilisant de l’analyse d’image pour détecter le mouvement.

Faire tourner Stable Diffusion sur Google Colab

Introduction Stable Diffusion est un modèle de deep learning permettant de générer des images photoréalistes à partir d’un prompt texte J’ai récemment découver ce modèle via lexica.art, après avoir entendu parler des concurents DALL-E, Imagen et consorts. Stable Diffusion a l’avantage d’être open source: tout le monde peut l’utiliser, et il fonctionne bien de surcroît. Prérequis J’utilise un compte Google dédié, avec Google Colab pour faire tourner Stable Diffusion. Le modèle devrait pouvoir tourner sur n’importe quelle plateforme Python, pourvu qu’il y ai assez de ressources GPU.

Piège Photo Arduino

Il y a maintenant quelques années, j’ai eu l’occasion de créer un piège photo basé sur une carte Arduino. Ce projet avait pour but de capturer des photos d’animaux sauvages, et de m’amuser un peu en électronique et programmation. À l’époque, j’avais réalisé un site web en html, pour présenter le projet; mais je ne retrouve plus le code source… C’est con. Je vais tout de même essayer de présenter ce vieux projet, à nouveau, en espérant que cela puisse intéresser quelqu’un.