سؤال

وأنا أبحث عن محرك قواعد في C أو بيثون، ولكن إذا كنت تعرف محرك قواعد التي يتم تنفيذها في لغة أخرى وسأكون سعيدا لمعرفة ذلك.

وسوف تستخدم محرك كوسيلة لأتمتة المنزل، مثل تحويل من الضوء عندما يترك شخص غرفة الخ لذلك لا "المكتب" قواعد هناك (ويعرف أيضا باسم هل يحكم في Excel أو مثل).

ولقد بحثت في جيس ويرول التي هي في جاوة والقيام بعمل مثالية. أود أن أعرف من الآخرين، وربما باستخدام ذاكرة أقل من جافا لا. لقد سمعت من RuleCore في بيثون ولكن لا يمكن أن تجد حقا أي وثائق على ذلك (الإصدار 1.0 يتوفر في سورس ولكن يبدو أنهم يبيعون الإصدار 2.0).

تعديل : ل. بقواعد المحرك (محرك الاستدلال)، يعني لتنفيذ RETE أو ما يعادلها

هل كانت مفيدة؟

المحلول

في بحثك عن محرك قواعد RETE مقرها في بيثون إما بايك أو <وأ href = "HTTP: / /pyclips.sourceforge.net/web/ "يختلط =" noreferrer "> PyCLIPS يمكن أن تكون واحدة كنت تريد استخدامها.

وPS: كنت قد تركت تعليق على الجواب S.Lott حول بايك. لقد نشرت إجابة منفصلة حسب اقتراحه، وكذلك السماح القراء الآخرين يعرفون تماما أن محرك قواعد المذكورة في هذه الإجابة يمكن أن يكون خيارا محتملا إذا كانوا يبحثون عن واحد.

نصائح أخرى

هل يمكن أن ننظر إلى فيديو كليب وكما سبق واقترح، أو إذا كنت ترغب في دفع مبلغ من المال أو في حاجة إليها < وأ href = "http://www.pst.com/rete2.htm" يختلط = "noreferrer نوفولو"> Rete2 . لقد استعملت فيديو كليب في الماضي على يونكس وبنجاح جزءا لا يتجزأ من ذلك في تطبيقات أخرى.

وآمل أن يساعد هذا.

ruleby غير محرك حكم في مكتوب في روبي. وكان موضوع محاضرة في rubyhoedown 2008: <لأ href = "http://rubyhoedown2008.confreaks.com/10-joe-kutner-ruleby-the-rule-engine-for-ruby.html" يختلط = "noreferrer نوفولو "> ruleby رأس حكم المحرك لروبي

تم Pychinko حولها لبعض الوقت. أنا لم تستخدم في الإنتاج، ولكن التحقيق فيها لاحتمال تطبيق إنتاج في حين يعود. يبدو أن لديها ميزات جيدة ومجتمع لائق من المستخدمين.

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

في الواقع، بيثون <م> غير محرك القواعد.

و"المحرك سيتم استخدامها كوسيلة لأتمتة المنزل، مثل تحويل من الضوء عندما يترك شخص غرفة الخ."

وتحتاج إلى أجهزة الاستشعار والتحكم. أن تكتب بك "قواعد"، كما تعترض بيثون العاديين.

ولديك الرئيسية "برنامج" بجمع الأحداث من أجهزة الاستشعار الخاصة بك ويرسل الأحداث حدات التحكم الخاصة بك.

إذا كنت تستطيع قراءة من أجهزة الاستشعار الخاصة بك عن طريق USB عادي، وهذا أفضل. تستخدم الصناعات البحرية بضعة معايير ترتبط ارتباطا وثيقا مثل NMEA 0183 ونميا 2000 لتحديد حركة المرور على الحافلة من استشعار للتحكم.

وأنت لا تحتاج إلا قوانين أخرى اللغة. لديك بيثون.

وRulecore هو مكتوب في الواقع جزئيا في بيثون. ولكن لا يهم حقا. أنت كما أن المستخدم لا ترى أي من هذه التفاصيل تنفيذ أي حال.

والقواعد هي التعريفي بحتة ومحددة باستخدام XML. يتم إرسال XML إلى ruleCore CEP Server كما الأحداث باستخدام خدمات الويب أو الدائرة أو غيرها من البروتوكولات.

وهنا لائحة من 13 مفتوحة محركات قواعد مصدر في جافا، يرول هو ربما أفضل من هذه. http://java-sources.org/open-source/rule-engines

وأنا أعلم ruleCore لديه بعض أجزاء مكتوبة في بيثون. لكن يستخدم API XML وخدمات ويب ActiveMQ أو لذلك هو على مستوى التجريد العالي.

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 وهلم جرا. انها مجرد بيثون!

وللحصول على شرح أوفى لماذا بيثون ليس محرك قواعد في حد ذاته، يرى <وأ href = "https://nebrios.com/blog/implimenting-a-rules-engine-in-python/" يختلط = "نوفولو"> هذه المقالة . مجرد بيثون نفسها يمكن تنفيذ النظام، لم يكن لديك محرك قواعد على يديك. انها التحول المعماري الضخم في الواقع.

وأنا أكتب محرك حكم بسيط في بيثون. يمكنك تخزين القواعد في سلمان أو سلسلة YAML، واستخدام هذا المحرك القاعدة التي تتطابق القاعدة مع السياق.

https://github.com/tclh123/rule

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top