2010-01-24 15 views
9

के विकास के लिए कौन सा पैटर्न/पैटर्न सबसे अच्छा काम करता है मैं निर्णय इंजन/नियम मूल्यांकन इंजन पर काम कर रहा हूं।नियम/निर्णय इंजन

इनपुट:: ग्राहक और सभी अपराधों ग्राहक

आउटपुट के द्वारा किया: अपराधों के परिणाम

एक नमूना मामले की जाएगी:

इनपुट: ग्राहक (Jhonny Chimpo, 999 उदाहरण के लिए -00-1111), अपराध (तोड़ दिया खिड़की, थप्पड़ मारा मालिक, उसकी कमर में लात मारी टीम का नेतृत्व)

आउटपुट: गुलाबी पर्ची हो जाता है

इसलिए कोड का टुकड़ा जो मैं लिखना चाहता हूं, प्रत्येक अपराध और संयुक्त अपराध के नियमों के आधार पर अलग-अलग अपराधों का मूल्यांकन करता है। वर्तमान कोड सिर्फ अगर और अन्य बयान की भूलभुलैया है। मुझे यकीन है कि ऐसी व्यावसायिक समस्याएं आम हैं। इस तरह की समस्या को हल करने के लिए आमतौर पर किस डिजाइन/एंटरप्राइज़ पैटर्न का उपयोग किया जाता है?

क्या यह विनिर्देश पैटर्न है? मैं विस्तार, स्वच्छ और लचीलापन के लिए कोड खोलना चाहता हूं।

+0

क्या आप एक लिखना चाहते हैं? आप जेस http://www.jessrules.com/ – Joe

उत्तर

3

मूल रूप से व्यापार के नियम

forall rules: 
    if <condition> then doAction(); 
की तरह लग रहे http://www.jboss.org/drools/

यह एक BRMS है

स्कोर का उपयोग करके गंभीरता से सभी अपराधों को वर्गीकृत करने के बारे में क्या, अक्सर "बुराई-डी के लिए अतिरिक्त बोनस ओर्स ", कुछ अपराध समय-बाधित हो सकते हैं और जो भी आवश्यक हो।

फिर एक एल्गोरिथ्म का एक मोटा मसौदा हो सकता है: एक ग्राहक के सभी स्कोर (भारित)

  • अधिकतम
  • की तुलना यह सीधे आगे हो डाटा संरचनाओं का उपयोग कर होगा की

    • योग कई (संभवतः गहराई से घोंसला) के बजाय यदि....तो चीजें हैं।

    +0

    का उल्लेख करने के लिए .net प्लेटफ़ॉर्म +1 में विकसित करने का प्रयास कर रहा हूं, वर्तमान कोड हमारे पास है अगर अन्य लूप – Perpetualcoder

    -1

    मुझे लगता है कि आप एक विशेषज्ञ प्रणाली विकसित करने की कोशिश कर रहे हैं। आप शब्द की जांच कर सकते हैं और फिर उचित प्रोग्रामिंग भाषाओं को prolog आदि के रूप में देख सकते हैं।

    +0

    पर एक नज़र डाल सकते हैं मैं एक विशेषज्ञ प्रणाली बनाने की कोशिश नहीं कर रहा हूं। – Perpetualcoder

    +2

    @Perpetualcoder वास्तव में, जो आपने सूचीबद्ध किया है वह एक विशेषज्ञ प्रणाली है। –

    +0

    एक विशेषज्ञ प्रणाली भी एक विशिष्ट नौकरी करने के लिए एक सीखने की मशीन नहीं है? – Perpetualcoder

    3

    मैं आपको एक ऐसा टूल सुझा सकता हूं जिसका उपयोग हम इसी तरह की समस्या को हल करने के लिए करते थे।

    JBoss Drools पर एक नज़र डालें: व्यापार नियम प्रबंधन प्रणाली

    यहाँ यह एक परिचयात्मक वीडियो है: http://www.jboss.com/products/platforms/brms/

    +0

    मैं महान उत्पाद – Perpetualcoder

    1

    मुझे यकीन नहीं है कि उपरोक्त में से कोई भी उत्तर उपयोगी है।

    मैंने expression trees का उपयोग करके समान घटक लिखे हैं। आप लैम्ब्डा अभिव्यक्तियों का निर्माण कर सकते हैं जो सभी गतिशील रूप से पूर्वानुमानित, संकलित और निष्पादित करते हैं, और फिर प्रतिक्रिया में कुछ क्रियाओं को ट्रिगर करते हैं। यह दृष्टिकोण शक्तिशाली, लचीला है और यदि सभी/अन्य डरावनी (जो निश्चित रूप से जाने का तरीका नहीं है) बाहर स्ट्रिप्स करता है।

    हालांकि, आप वास्तव में किस बारे में बात कर रहे हैं तर्क प्रोग्रामिंग है। .NET पर Prolog के कई कार्यान्वयन हैं।Prolog एक तर्क आधारित भाषा है, एआई अनुप्रयोगों के लिए बहुत उपयोग किया जाता है, जो आपके सिर के प्रतिमान के चारों ओर एक बार गंभीरता से शक्तिशाली बनने लगता है।

    इनमें से कुछ पर एक नज़र ..

    +0

    यह वास्तव में दिलचस्प है। मैं वहां – Perpetualcoder

    +0

    पर व्यापार नियम इंजन के प्रशंसक नहीं हूं लेकिन ..:) ... मैं प्रोलॉग प्रशंसक नहीं हूं..मुझे बस यह आश्चर्यजनक लगता है :) – Perpetualcoder

    +0

    अभिव्यक्ति पेड़ देखें। – flesh

    0

    को कुछ इसी तरह की कोशिश कर सकते मुझे लगता है कि किसी भी RETE एल्गोरिथ्म है आधारित नियम इंजन के लिए काम करेगा आपका मुकदमा। आप drools कोशिश कर सकते हैं।

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