Code Monkey home page Code Monkey logo

pygarden's Introduction

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/

pygarden's People

Contributors

azze-r avatar aluriak avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.