2012-07-25 11 views
5

हमारे पास एक ऐसी प्रणाली है जिसमें हजारों इकाइयां होंगी। प्रत्येक इकाई में 5-10 मीटर होंगे और प्रत्येक मीटर के साथ एक मूल्य होगा। इन मीटरों के मूल्य बदलते हैं और हमें रीयलटाइम में इन परिवर्तनों का जवाब देने में सक्षम होने के लिए हमारे नियम इंजन की आवश्यकता होती है।क्या मुझे एकाधिक ज्ञान अड्डों का उपयोग करना चाहिए?

हमारे पास इस तरह के नियम होंगे "अगर यूनिट # 1 का पहला मीटर 10 से बड़ा है और यूनिट # 1 का दूसरा मीटर 30 से कम है ...", हालांकि नियमों की तुलना में काफी लंबा हो सकता है इस। प्रत्येक इकाई के लिए नियम पूरी तरह से स्वतंत्र होंगे, इसलिए दो अलग-अलग इकाइयों से दो अलग-अलग मीटर के मूल्यों पर शर्त नहीं होगी।

हमारे पास लगभग 30 नियम होंगे जो प्रत्येक इकाई के लिए समान होंगे, और फिर प्रत्येक इकाई के पास लगभग 5-15 कस्टम नियम होंगे। नियम इंजन चल रहा है, जबकि इन नियमों को गतिशील रूप से जोड़ा जाना चाहिए। यह संभावना है कि एक यूनिट 5-10 नियमों को सही तरीके से जोड़ देगा और फिर उस बिंदु से सप्ताह में एक बार जैसे किसी नियम को जोड़ या निकाल देगा।

हमने इसके लिए ड्रोल का उपयोग करने का निर्णय लिया और मैं यह समझने की कोशिश कर रहा हूं कि इसे कैसे कार्यान्वित किया जाए। मैं वास्तव में ड्रूल्स के लिए नया हूं इसलिए मैं थोड़ी उलझन में हूं। क्या प्रत्येक इकाई के लिए अपना ज्ञान आधार होना समझदारी होगी? यदि हां, तो क्या प्रत्येक इकाई के लिए नियमों को साझा करने का कोई तरीका है?

मुझे चिंता है कि हमारे पास इन सभी नियमों को स्टोर करने के लिए पर्याप्त स्मृति नहीं हो सकती है, इसलिए मैं सोच रहा था कि क्या हमारे पास प्रत्येक इकाई के लिए ज्ञान आधार है, हम केवल सभी ज्ञान अड्डों को क्रमबद्ध कर सकते हैं, उन्हें डेटाबेस में रख सकते हैं, और जब हमें उनकी आवश्यकता होती है तो उन्हें पुनः प्राप्त करें। क्या यह उचित होगा?

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

साथ ही, इंजन चल रहा है, जबकि गतिशील रूप से नियम जोड़ रहा है? क्या सभी नियमों को फिर से तैयार किया जाना चाहिए? यह कितना समय लगेगा और क्या यह संभव है कि इंजन को रीयलटाइम में मीटर परिवर्तनों का जवाब देने की आवश्यकता हो?

धन्यवाद दोस्तों।

उत्तर

1

क्या प्रत्येक इकाई के लिए अपना ज्ञान आधार होना समझदारी होगी? यदि हां, तो क्या प्रत्येक इकाई के लिए नियमों को साझा करने का कोई तरीका है?

प्रत्येक इकाई पर अपना ज्ञान आधार रखने के लिए नीचे देखें। संगठन के उद्देश्य के लिए, आप उन्हें अलग-अलग पैकेजों में रखने के बारे में सोच सकते हैं। पैकेज के बीच नियम साझा करने के लिए, आप वैश्विक क्षेत्र में नियम बना सकते हैं और उन्हें आयात कर सकते हैं। हालांकि यह सामान्य नियमों को साझा करने में मदद करेगा, इसमें कुछ त्रुटियां हैं:

  • जब आपके पास बड़ी संख्या में पैकेज हैं, तो आपको उन्हें पहली बार मैन्युअल रूप से आयात करने की आवश्यकता होगी।
  • जब आप किसी विशिष्ट पैकेज में आयातित नियम को संशोधित करते हैं, तो यह वैश्विक नियम बदल देगा और इसलिए परिवर्तन आयात किए गए हर दूसरे पैकेज को प्रभावित करता है। Guvnor UI में स्पष्ट रूप से यह बताने का कोई तरीका नहीं है कि कोई नियम आयात किया गया है या पैकेज के लिए विशिष्ट है या नहीं।

मैं चिंतित हम इन सभी नियमों को स्टोर करने के लिए पर्याप्त स्मृति नहीं हो सकता हूँ, इसलिए अगर हम प्रत्येक इकाई के लिए एक ज्ञान का आधार था मैं सोच रहा था, हम बस सभी ज्ञान अड्डों को क्रमानुसार सकता है, उन्हें में डाल एक डेटाबेस, और जब हमें उनकी आवश्यकता होती है तो उन्हें पुनर्प्राप्त करें। क्या यह उचित होगा?

यह एक विकल्प है, लेकिन यदि नियम बदलते हैं तो आपको ज्ञान अड्डों को फिर से बनाने की आवश्यकता होगी।

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

पुस्तक Drools JBoss नियम 5.0 डेवलपर की मार्गदर्शिकामीकल बाली से कहते हैं

Rete एल्गोरिथ्म के प्रदर्शन ज्ञान का आधार में नियमों की संख्या का सैद्धांतिक रूप से स्वतंत्र है।

इसके अलावा,

आप उत्सुक हैं और कुछ मानक देखना चाहते हैं, तो आप उन्हें drools-उदाहरण मॉड्यूल Drools वेब साइट से डाउनलोड करने योग्य है कि में पा सकते हैं। ऐसी कुछ वेब साइटें भी हैं जो नियमित रूप से गणितीय समस्याओं (आमतौर पर 'मिस मैनर्स' परीक्षण और 'वाल्टज़') को हल करने वाले विभिन्न नियम इंजनों के बेंचमार्क प्रकाशित करती हैं, उदाहरण के लिए, http://illation.com.au/ बेंचमार्क /। ड्रॉल्स का प्रदर्शन अन्य ओपन सोर्स या यहां तक ​​कि वाणिज्यिक इंजनों के समान है।

साथ ही, इंजन चल रहा है, जबकि गतिशील रूप से नियम जोड़ रहा है? क्या सभी नियमों को फिर से तैयार किया जाना चाहिए? यह कितना समय लगेगा और क्या यह संभव है कि इंजन को रीयलटाइम में मीटर परिवर्तनों का जवाब देने की आवश्यकता हो?

यहां कोई ठोस विचार नहीं है लेकिन मुझे यकीन है कि नियमों का उपयोग करने योग्य होने के लिए पुन: संकलित करने की आवश्यकता है। पहले बनाए गए केबेस का उपयोग तब भी किया जा सकता है जब नए पैकेजों का पुन: संकलन किया जा रहा हो। वे स्वतंत्र हैं।

संबंधित मुद्दे