Domanda

Cerco un motore di regole in C o Python, ma se si conosce un motore di regole che viene implementato in un'altra lingua Sarei felice di sapere su di esso.

Il motore sarà usato come modo per automatizzare una casa, come accendere la luce spenta quando qualcuno lascia una stanza, ecc Quindi non regole "d'ufficio" là (aka Sei regole in Excel o simili).

Ho esaminato Jess e Drools che sono in Java e fare un lavoro perfetto. Mi piacerebbe sapere degli altri e possibilmente utilizzando meno memoria di Java fa. Ho sentito parlare di RuleCore in Python, ma non riuscivo a trovare alcuna documentazione su di essa (la versione 1.0 è disponibile presso SourceForge ma sembra che stanno vendendo v. 2.0).

Modifica :. Con motore di regole (motore di inferenza), voglio dire un'implementazione di equivalente RETE o

È stato utile?

Soluzione

Nella vostra ricerca di motore di regole basato RETE in Python o Pyke o PyCLIPS potrebbe essere quello che si desidera utilizzare.

PS: avevo lasciato un commento alla risposta di S. Lott su Pyke. Ho inviato una risposta separata come per il suo suggerimento e anche di lasciare che altri lettori facilmente sapere che il motore delle regole di cui al presente risposta potrebbe essere una scelta probabile se sono alla ricerca di uno.

Altri suggerimenti

Si potrebbe guardare a CLIP come già suggerito o, se si desidera pagare soldi o bisogno < a href = "http://www.pst.com/rete2.htm" rel = "nofollow noreferrer"> Rete2 . Ho usato CLIP in passato su Unix e con successo, integrati e in altre applicazioni.

Spero che questo aiuti.

ruleby è un motore di regole in scritto in Ruby. E 'stato oggetto di una presentazione a rubyhoedown 2008: ruleby-la-regola-motore-per-ruby

Pychinko è stato intorno per un po '. Non ho mai usato in produzione, ma indagato per possibile applicazione di produzione un po 'indietro. E sembra che ha abbastanza buone caratteristiche e una comunità decente di utenti.

http://www.mindswap.org/~katz/pychinko/

In effetti, Python è un motore di regole.

"Il motore verrà utilizzato come modo per automatizzare una casa, come accendere la luce spenta quando qualcuno lascia una stanza, ecc."

È necessario sensori e controllori. Si scrive il "regole" come oggetti Python ordinari.

Il "programma" principale raccoglie gli eventi dai vostri sensori e invia gli eventi ai controller.

Se potete leggere dai vostri sensori via ordinaria USB, che è ancora meglio. Il settore nautico utilizza un paio di norme strettamente correlate come NMEA 0183 e NMEA 2000 per specificare il traffico sul bus dal sensore al controllore.

Non è necessario ancora un altro regime linguistico. Hai Python.

Rulecore è infatti scritto in parte in Python. Ma non ha molta importanza. Voi come un utente non avrebbe visto nessuno di questi dettagli di implementazione in ogni caso.

Le regole sono puramente dichiarativa e definite utilizzando XML. L'XML viene inviato in ruleCore CEP Server come gli eventi utilizzando un servizio web o JMS o altri protocolli.

Ecco un elenco di 13 aperti motori di regole di origine in java, Drools è forse la migliore di questi. http://java-sources.org/open-source/rule-engines

So ruleCore ha alcune parti scritte in Python. Ma l'API utilizza XML e ActiveMQ o WebServices quindi è su un livello di astrazione più elevato.

nebri è il modo più semplice per scrivere le regole per la domotica e altri software / macchine. Ecco un esempio per realizzare lo spegnimento della luce:

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")

E 'uno strumento ideale per l'automazione della casa dato che è possibile installare pip librerie esistenti per l'utilizzo nello script. Nest, SmartThings, Sen.se e così via. E 'solo Python!

E per una spiegazione più completa del perché Python non è un motore di regole di per sé, vedere questo articolo . Solo perché Python si può eseguire regole, non si dispone di un motore di regole sulle vostre mani. Si tratta di un enorme cambiamento architettonico di fatto.

Scrivo un semplice motore di regole in python. È possibile memorizzare le regole in JSON o una stringa YAML, e utilizzare questo motore di regole per abbinare la regola con il contesto.

https://github.com/tclh123/rule

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top