Skip to content

Il s' agit de cultures associées dans le jardinage : certaines plantes se boostent mutuellement par leur action sur le pH, leurs secrétions et leur rôle sur la flore bactériologique et mycologique etc. D'autres se font la guerre.

Notifications You must be signed in to change notification settings

IndexErrorCoders/pygarden

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pygarden

Introduction du concept

Il s' agit de cultures associées dans le jardinage : certaines plantes se boostent mutuellement par leur action sur le pH, leurs secrétions et leur rôle sur la flore bactériologique et mycologique etc. D'autres se font la guerre.

Initialisé par buffalo974, ce projet est expliqué plus en détails sur ce post :

Pour en savoir plus sur la culture associée, ça se passe par là :

Dependences

To install all dependences, make :

pip install -r requirements.txt

Test / Interface

python3 pygarden_v01.py

Solasp

Cette partie du projet est complémentaire au reste. Cela n'implémente pas d'interface, ni avec l'utilisateur, ni avec Python, mais propose un solveur complet pour le problème suivant : sachant une taille de jardin, quelle sont les disposition maximisant les relations symbiotiques et minimisant les relations concurrentes entre plantes.

Cette partie fait principalement appel à l'Answer Set Programming, permettant de modéliser simplement le problème (integrity.lp), en utilisant les données d'entrées (data.lp) générées à partir du programme python dédié (relations2asp.py).

L'intérêt de l'approche est multiple :

  • optimisation du résultat facile à compléter/améliorer
  • écriture simple du solver
  • interfacage possible avec Python via pyasp

Performances

Le soleur, vu la quantité de données d'entrée et la combinatoire inhérente au problème, ne peux fournir la solution optimale au problème en un temps faible.

Sur une machine personnelle, pour un jardin de 10 par 10, avec l'ensemble des données d'entrées considérées, calculer la meilleure solution nécessite plus de 4Go de RAM et de 10 minutes de calcul.

Il est certainement possible d'améliorer le temps de calcul en jouant avec (1) les options du solveur (2) le choix des heuristiques de base. (cf solasp/Makefile) Par défaut, 4 thread sont utilisés.

La première partie du calcul, le grounding, n'est pas compressible à moins de trouver de meilleures modélisation pour integrity.lp.

Usage

Tout d'abord, il est nécessaire de récupérer le grounder/solver clingo sur le site du projet Potassco, et de placer l'executable dans le PATH ou au même niveau que le Makefile de solasp. Les recettes décrites dans le Makefile sont suffisante pour un premier usage.

make g  # générer data.lp à partir des données python
make p  # lancer le solver

Perspectives

De nombreuses améliorations peuvent être modélisées, comme par exemple l'impossibilité de placer côte à côte deux plantes enemies. Cette dernière pourrait potentiellement réduire le temps de calcul. L'intégration de solasp au sein d'un script python plus global (incluant toutes les specs du projet initial) pourrait permettre d'assurer les features suivantes :

  • optimisation d'un jardin sachant des conditions initiales de taille et de placement de plantes
  • vérification des contraintes lors d'un nouveau placement
  • conseil de placement

Espaces de discussion autour du projet

Support

En savoir plus sur l'organisation IndexErrorCoders

http://sametmax.com/indexerrorcoders-le-compte-github-de-la-communaute-dindexerror/

About

Il s' agit de cultures associées dans le jardinage : certaines plantes se boostent mutuellement par leur action sur le pH, leurs secrétions et leur rôle sur la flore bactériologique et mycologique etc. D'autres se font la guerre.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published