2009-12-17 5 views
7

मैं सी या पायथन में एक नियम इंजन की तलाश में हूं, लेकिन यदि आप किसी अन्य भाषा में लागू नियम इंजन को जानते हैं तो मुझे इसके बारे में जानकर खुशी होगी।सी या पायथन में नियम इंजन

इंजन का उपयोग घर को स्वचालित करने के तरीके के रूप में किया जाएगा, जैसे कोई व्यक्ति कमरे छोड़ने पर प्रकाश बंद कर देता है। इसलिए कोई "कार्यालय" नियम नहीं है (उर्फ आप एक्सेल या ऐसे में नियम करते हैं)।

मैंने जेस और ड्रोल में देखा है जो जावा में हैं और एक आदर्श काम करते हैं। मैं दूसरों के बारे में जानना चाहता हूं और जावा की तुलना में कम स्मृति का उपयोग करना चाहता हूं। मैंने पाइथन में रूलकोर के बारे में सुना है लेकिन वास्तव में इस पर कोई दस्तावेज नहीं मिला है (संस्करण 1.0 SourceForge पर उपलब्ध है लेकिन ऐसा लगता है कि वे v। 2.0 बेच रहे हैं)।

EDIT: नियम इंजन (अनुमान इंजन) द्वारा, मेरा मतलब आरईटीई या समकक्ष का कार्यान्वयन है।

+0

http://stackoverflow.com/questions/467738/implementing-a-rules-engine-in-python http://www.google.com/search?client=safari&rls=en&q=python+rule+ इंजन और यानी = यूटीएफ -8 और ओई = यूटीएफ -8 –

+0

धन्यवाद, मैंने यह प्रश्न देखा था और मैं एक नया नियम इंजन लागू करने की तलाश नहीं कर रहा हूं। लेकिन मैंने पहली बार CLIPS का संदर्भ नहीं देखा :) – Yanik

उत्तर

5

पायथन में आरईटीई आधारित नियम इंजन के लिए आपकी खोज में Pyke या PyCLIPS वह हो सकता है जिसे आप उपयोग करना चाहते हैं।

पीएस: मैंने पीके के बारे में एसएलॉट के जवाब पर एक टिप्पणी छोड़ दी थी। मैंने उनके सुझाव के अनुसार एक अलग उत्तर पोस्ट किया है और अन्य पाठकों को आसानी से यह भी पता चलेगा कि इस उत्तर में वर्णित नियम इंजन एक संभावित विकल्प हो सकता है यदि वे एक की खोज कर रहे हैं।

+0

यह पिकलिप्स है। और मेरे जेस नियमों को CLIPS में अनुवाद करना वास्तव में आसान है। – Yanik

1

ruleby रूबी में लिखे गए एक नियम इंजन है। यह rubyhoedown 2008 में एक प्रस्तुति का विषय था: ruleby-the-rule-engine-for-ruby

+0

नाइस :) (मैं रूबी प्रशंसक हूं) और वीडियो के लिए धन्यवाद। – Yanik

1

पिचिनको थोड़ी देर के लिए आसपास रहा है। मैंने इसे कभी भी उत्पादन में उपयोग नहीं किया है, लेकिन कुछ समय पहले संभावित उत्पादन आवेदन के लिए इसकी जांच की है। ऐसा लगता है कि इसमें बहुत अच्छी सुविधाएं और उपयोगकर्ताओं का एक सभ्य समुदाय है।

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

+1

धन्यवाद। क्या आप समुदाय के लिए किसी मेलिंग सूचियों या आईआरसी चैनलों के बारे में जानते हैं? ऐसा लगता है कि यह अब और बनाए रखा नहीं है .. और क्या आपने पिक्लिप्स के बारे में सुना है (मुझे अभी पता चला है)? – Yanik

0

वास्तव में, अजगर एक नियम इंजन है।

"इंजन का उपयोग घर को स्वचालित करने के तरीके के रूप में किया जाएगा, जैसे कोई व्यक्ति कमरे छोड़ देता है।"

आपको सेंसर और नियंत्रकों की आवश्यकता है। आप अपने "नियम" को सामान्य पायथन वस्तुओं के रूप में लिखते हैं।

आपका मुख्य "प्रोग्राम" आपके सेंसर से ईवेंट एकत्र करता है और ईवेंट को आपके नियंत्रकों को भेजता है।

यदि आप सामान्य यूएसबी के माध्यम से अपने सेंसर से पढ़ सकते हैं, तो यह भी बेहतर है। समुद्री उद्योग सेंसर से नियंत्रक तक बस पर यातायात निर्दिष्ट करने के लिए एनएमईए 0183 और एनएमईए 2000 जैसे दो करीबी संबंधित मानकों का उपयोग करता है।

आपको अभी तक एक और नियम भाषा की आवश्यकता नहीं है। आपके पास पाइथन है।

+2

मुझे तुम्हारा क्या मतलब है, इस बारे में अनिश्चित हूं, लेकिन मुझे लगता है कि आप कह सकते हैं कि कोई भी ट्यूरिंग पूर्ण भाषा वास्तव में एक नियम इंजन है। मुझे शायद आरईटीई एल्गोरिदम का उल्लेख करना चाहिए जो हर नियम के खिलाफ एक तथ्य की जांच करने से बहुत तेज प्रदर्शन करता है। चूंकि मैं पाइथन विशेषज्ञ नहीं हूं, इसलिए मुझे यकीन नहीं है कि आप यह कैसे करेंगे। क्या आपके पास कोई लिंक है जहां इसे समझाया गया है? – Yanik

+0

@ यैनिक: यदि अनुमान समस्या स्थान का हिस्सा है, तो इस तथ्य को शामिल करने के लिए प्रश्न को अद्यतन करें। नियम प्रसंस्करण में अनुमान शामिल नहीं होना चाहिए। यदि आपको अनुमान की आवश्यकता है, तो अपना प्रश्न अपडेट करें, कृपया इसे स्पष्ट रूप से बताने के लिए। –

+1

यदि आप अपने नियमों में अनुमान लगाने की तलाश में हैं तो Pyke [http://pyke.sourceforge.net/] पर ध्यान देना उपयोगी होगा – ardsrk

2

आप पहले ही सुझाए गए अनुसार CLIPS देख सकते हैं या यदि आप पैसे का भुगतान करना चाहते हैं या Rete2 की आवश्यकता है। मैंने यूनिक्स पर अतीत में CLIPS का उपयोग किया है और इसे अन्य अनुप्रयोगों में सफलतापूर्वक एम्बेड किया है।

उम्मीद है कि इससे मदद मिलती है।

0

रूलेकोर वास्तव में पायथन में आंशिक रूप से लिखा गया है। लेकिन यह वास्तव में कोई फर्क नहीं पड़ता। आप एक उपयोगकर्ता के रूप में वैसे भी इन कार्यान्वयन विवरण में से कोई भी नहीं देख पाएंगे।

नियम पूरी तरह से घोषणात्मक और एक्सएमएल का उपयोग करके परिभाषित हैं। XML को वेब सेवा या जेएमएस या अन्य प्रोटोकॉल का उपयोग करके ईवेंट के रूप में नियम कोर सीईपी सर्वर में भेजा जाता है।

0

जावा में 13 ओपन सोर्स नियम इंजनों की एक सूची यहां दी गई है, ड्रॉल्स संभवतः इनमें से सर्वश्रेष्ठ है। http://java-sources.org/open-source/rule-engines

0

मुझे नियम पता है कोर के कुछ भाग पायथन में लिखे गए हैं। लेकिन एपीआई एक्सएमएल और एक्टिवएमक्यू या वेब सर्विसेज का उपयोग करता है, इसलिए यह एक उच्च अमूर्त स्तर पर है।

0

Nebri घर स्वचालन और अन्य सॉफ़्टवेयर/मशीनों के नियम लिखने का सबसे आसान तरीका है।

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

यह अपने घर को स्वचालित जब से तुम रंज कर सकते हैं अपनी स्क्रिप्ट में उपयोग के लिए मौजूदा पुस्तकालयों स्थापित के लिए एक आदर्श उपकरण है: यहाँ प्रकाश शटऑफ पूरा करने के लिए एक उदाहरण है। नेस्ट, SmartThings, Sen.se और इतने पर। यह सिर्फ पायथन है!

और पाइथन एक नियम इंजन नहीं है, तो एक पूर्ण व्याख्या के लिए, this article देखें। सिर्फ इसलिए कि पाइथन स्वयं नियमों को निष्पादित कर सकता है, आपके पास अपने हाथों पर नियम इंजन नहीं है। यह वास्तव में एक विशाल वास्तुशिल्प बदलाव है।