Question

Je suis à la recherche d'un moteur de règles en C ou Python, mais si vous connaissez un moteur de règles qui est mis en œuvre dans une autre langue que je serais heureux de le savoir.

Le moteur sera utilisé comme moyen d'automatiser une maison, comme tourner la lumière quand quelqu'un quitte une pièce, etc. Donc, pas de « bureau » règles là-bas (aka faire des règles que vous dans Excel ou tel).

Je l'ai regardé dans Jess et Drools qui sont en Java et faire un travail parfait. Je voudrais savoir des autres et peut-être en utilisant moins de mémoire que Java ne. Je l'ai entendu parler de RuleCore en Python mais ne pouvait pas vraiment trouver de la documentation sur elle (la version 1.0 est disponible sur SourceForge, mais on dirait qu'ils vendent v. 2.0).

EDIT :. Par moteur de règles (moteur d'inférence), je veux dire une mise en œuvre de RETE ou équivalent

Était-ce utile?

La solution

Dans votre recherche de moteur de règles basé RETE en Python soit Pyke ou

Autres conseils

Vous pouvez regarder CLIPS comme cela a déjà suggéré ou, si vous voulez payer de l'argent ou besoin < a href = "http://www.pst.com/rete2.htm" rel = "nofollow noreferrer"> Rete2 . Je l'ai utilisé CLIPS dans le passé sur Unix et EMBEDDED dans sucessfully d'autres applications.

Hope this helps.

En effet, Python un moteur de règles.

« Le moteur sera utilisé comme moyen d'automatiser une maison, comme tourner la lumière quand quelqu'un quitte une pièce, etc. »

Vous avez besoin de capteurs et contrôleurs. Vous écrivez vos « règles » comme objets Python ordinaires.

Votre principale « programme » collecte les événements de vos capteurs et envoie des événements à vos contrôleurs.

Si vous pouvez lire vos capteurs via USB ordinaire, c'est encore mieux. L'industrie maritime utilise deux normes étroitement liées comme NMEA 0183 et NMEA 2000 pour spécifier le trafic sur le bus du capteur au contrôleur.

Vous n'avez pas encore un autre langage règles. Vous avez Python.

Rulecore est écrit en effet en partie en Python. Mais cela n'a pas vraiment d'importance. Vous en tant qu'utilisateur ne verrions aucun de ces détails de mise en œuvre de toute façon.

Les règles sont purement déclarative et définies en utilisant XML. Le XML est envoyé dans ruleCore CEP Server comme des événements en utilisant un service Web ou JMS ou d'autres protocoles.

Voici une liste de 13 règles open source moteurs en java, Drools est peut-être le meilleur de ceux-ci. http://java-sources.org/open-source/rule-engines

Je sais que ruleCore a quelques pièces écrites en Python. Mais l'API utilise XML et ActiveMQ ou WebServices il est à un niveau d'abstraction plus élevé.

Nebri est la meilleure façon d'écrire des règles pour la domotique et d'autres logiciels / machines. Voici un exemple pour réaliser l'arrêt de lumière:

class high_temp_shutdown(NebriOS):
    listens_to == ['shared.pebble_location'] 


    def check(self):
        # if pebble dongle is out or room, return true
        return shared.pebble_location > 3 # in meters

    def action(self):
        smartthings.lights(2,"off")

Il est un outil idéal pour l'automatisation de votre maison car vous pouvez installer pip bibliothèques existantes pour une utilisation dans votre script. Nest, SmartThings, Sen.se et ainsi de suite. Il est juste Python!

Et pour une explication plus détaillée des raisons pour lesquelles Python n'est pas un moteur de règles par lui-même, voir cet article . Tout simplement parce que Python lui-même peut exécuter des règles, vous ne disposez pas d'un moteur de règles sur vos mains. Il est un énorme changement d'architecture en fait.

Je vous écris d'un simple moteur de règles en python. Vous pouvez stocker vos règles en JSON ou une chaîne de YAML, et utiliser ce moteur de règles pour correspondre à la règle avec le contexte.

https://github.com/tclh123/rule

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top