طابق تقييم القاعدة و "غير دقيق" المباريات (EJ: X <3000)

StackOverflow https://stackoverflow.com/questions/1471712

  •  16-09-2019
  •  | 
  •  

سؤال

أقوم بتصميم نظام تقييم القاعدة تحتاج إلى التعامل مع قاعدة بيانات الحقائق وقواعد معينة حول قاعدة البيانات. لدينا حاليا نسخة معدلة من الخدابة التي تعمل جزئيا مع بعض العيوب.

المشكلة هي القواعد لا تحد من التطابقات الدقيقة ولكن يجب عليها أيضا دعم عدم المساواة (كما هو الحال في أقل من) وأنواع أخرى من الحسابات الغامضة.

أمثلة، لنفترض أن لديك هذه الحقائق

(الراتب جون 58000) (الراتب سارة 78000) (موظف يوحنا) (بوس سارة) (متزوج جون سارة) (يعمل جون ستاكلو)

قد يكون لديك قاعدة تقول:

(الراتب؟ ث <60000) / (متزوج؟ W) / (يعمل؟ W Stackoverflow) ==> أيا كان

من الواضح أن النتيجة ستؤدي إلى القاعدة مع قيمة "John"، ولكن الطريقة التي نقوم بها الآن هي الحلقات من خلال حوض من خلال كل عنصر في قاعدة الحقائق التي تتطابق مع تنسج التعبير الأول (الراتب XX) ثم جعل المقارنة وتخزين النتائج في الواقع قاعدة تكنولوجيا المعلومات. على سبيل المثال، بعد المرور الأول، سيكون لديك العنصر التالي المضافة إلى قاعدة الحقائق:

(الراتب جون 58000 <60000)

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

من ناحية أخرى، يمكنك تطبيق عدة قواعد بالتعبير الأول ويمكنك الاستمرار في استخدام خوارزمية المطابقة القياسية لتشغيل القواعد.

هل يعرف أحد بأي أنماط أو مراجع أو طرق تتعامل مع هذا النوع من السلوك؟ القفزات المعتادة، تعامل، خوارزميات الشبكة تعامل فقط (بقدر ما أعرف) مطابقة "بالضبط".

بالمناسبة، هذا هو C # .NET.

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

المحلول

دبابيس وقد دعمت العناصر الشرطية طالما أنني كنت على علم بها - ما لا يقل عن 15 عاما. تفحص ال دليل البرمجة الأساسية للمقاطع وهذه مقاطع تعليمي للأمثلة. يمكنك إلقاء نظرة على (أو تعديل) مصدر مقاطع مجانا.

تستخدم مقاطع تدوين البادئة، لذلك قد تبدو مثالك الشرطية:

(defrule fat-boy
    (person-data (name ?name) (weight ?weight))
    (test (> ?weight 100))
=>
    (printout t ?name " weighs " ?weight " kg! " crlf)
)

نصائح أخرى

بقدر ما أفهم المشكلة، فإن جميع القواعد الغامضة تقسم القيمة العددية أو القيمة العائمة تتراوح في عدد محدود من الأخبار. على سبيل المثال، إذا تمت مقارنة الراتب ب 58000، 60000، 78000 قيم، لديك 4 نطاقات: <58000، 58000-60000، 60000-78000،> 78000.

إذا كان هذا هو الحال، فربما يمكنك إعادة تعريف المتغيرات الخاصة بك لتكون أعداد صحيحة هي إما 0،1،2،3، وبالتالي تحويل قواعد عدم المساواة إلى قواعد المساواة.

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