موتور قواعد چیست؟

موتور قواعد چیست؟

در این مقاله من سعی می کنم تا موتور قواعد را به زبان ساده برای شما توضیح دهم. بگذارید ابتدا از مشکلی که پایه ی این مفهوم را گذاشته است شروع کنیم. فرض کنید، من از شما درخواست کنم که یک اپلیکیشن بانک بسازید که در آن منطق زیر را باید پیاده کنید.

منطق:

یک شخص برای دریافت وام خرید خودرو واجد شرایط است اگر حقوق ماهانه ی بیشتری از ۷۰۰۰۰ داشته باشد و امتیاز حساب بانکی او از 200 بیشتر باشد؛ آنگاه وام را تایید کن.

شما به راحتی می توانید این سبک از قواعد یا منطق را در اپلیکیشن خود پیاده کنید. اما اگر نیازهای جدیدی مثل موارد زیر دریافت کنید چه می کنید؟

  • اگر تعداد زیادی منطق وجود دارد، چگونه بین آن ها جست و جو می کنید و به صورت بهینه آن ها را اعمال می کنید؟ (عملکرد خوب)
  • اگر شما به طور معمول منطق های خود را در اپلیکیشن پیاده می کنید و منطق ها به طور مرتب تغییر می کنند، شما چطور این موضوع را مدیریت می کنید و کد خود را تغییر می دهید؟ (پرهیز از بارگزاری های پرتکرار)
  • اپلیکیشن را طوری طراحی کنید که به راحتی قابل نگهداری و فهم توسط افراد تیم بازرگانی باشد. ( استفاده توسط اعضای غیر فنی)
  • اگر شما می بایست تمام منطق تجاری خود را در یک جا به صورت متمرکز نگهداری و آن را از تمام اپلیکیشن ها جدا می کردید، آن را کجا نگهداری می کردید؟

ما می توانیم از موتور قواعد برای ارضای تمام نیازمندی های بالا استفاده کنیم. اما قبل از اینکه به موتور قواعد بپردازیم، بگذارید با ادبیات این موضوع و پیش زمینه ی مورد نیاز آن آشنا شویم.

ادبیات موضوع:

قاعده: به مجموعه ای از شرط ها که مجموعه ای از نتایج را در پی دارند، قاعده می گوییم. قاعده در واقع منطق سیستم را نشان می دهد. به طور معمول قواعد به صورت اگر-آنگاه ارائه می شوند. قاعده از دو جزء اصلی تشکیل می شود: شرط و نتیجه. قاعده با نام ترکیب نیز شناخته می شود.

قاعده = شرط + نتیجه

به شرط، مقدم و به نتیجه، موخر نیز گفته می شود.

انسان خبره: به فردی که در موضوع مورد بحث مهارت و تخصص دارد، خبره می گوییم. این فرد اطلاعات را در قالب قواعد مهیا می کند. برای مثال در منطق وام خودرو، یک فرد خبره در بانک، منطق ارائه شده را تهیه کرده است.

اطلاعات در قالب قواعد:

قاعده ی ۱: آیا یک فرد برای دریافت وام خرید خودرو، صلاحیت لازم را دارد؟

اگر:

  1. حقوق ماهانه ی او بیشتر از ۷۰۰۰۰ است.
  2. امتیاز حساب او از ۲۰۰ بیشتر است.

آنگاه:

  1. وام مورد تایید است.

قاعده ی ۲: آیا یک فرد برای دریافت وام خرید خودرو، صلاحیت لازم را دارد؟

اگر:

  1. حقوق ماهانه ی او بیشتر از 35000 است.
  2. امتیاز حساب او از 500 بیشتر است.

آنگاه:

  1. وام مورد تایید است.

سامانه ی خبره: یک برنامه است که از دانش یک فرد خبره استفاده می کند تا مشکلات را حل کند و راه حل ارائه دهد. سامانه ی خبره با نام سامانه بر پایه ی قاعده نیز شناخته می شود.

موتور استنتاج: مغز سامانه ی خبره است که تعداد زیادی از قواعد را در سامانه ی خبره مدیریت می کند. کار موتور استنتاج انتخاب قواعد و اعمال آن ها روی داده ها و ارائه ی پاسخ است. ما این موضوع را با جزئیات بیشتر توضیح خواهیم داد.

حال که با ادبیات مورد استفاده آشنا شدیم، می توانیم سعی کنیم تا موتور قواعد را درک کنیم.

موتور قواعد:

موتور قواعد یک برنامه ی سامانه ی خبره است که روی داده ها کار می کند و تصمیم مناسب را بر اساس شرایط اتخاذ و اجرا می کند.

در نمودار بالا نشان داده شده است که ما، دانش را به صورت قواعد اگر-آنگاه جمع آوری و ذخیره می کنیم. قواعد می توانند در هرگونه حافظه ای ذخیره شود و شما می توانید از فایل یا پایگاه داده برای ذخیره ی قواعد استفاده کنید. سپس موتور استنتاج قواعد را بر اساس نیازمندی ها انتخاب می کند و آن ها را روی داده های ورودی یا درخواست داده شده اعمال می کند. در صورتی که داده ی ورودی مطابق با هرکدام از قواعد باشد، کار متناظر با آن حالت انجام می شود و نتیجه یا راه حل برگردانده می شود.

موتور استنتاج:

موتور استنتاج، یک جزء از سیستم هوشمند در هوش مصنوعی است که قواعد منطقی را بر پایگاه دانش ما اعمال می کند تا اطلاعات جدیدی را بر اساس دانش موجود استنتاج کند و در اختیار ما بگذارد. اولین موتور استنتاج، بخشی از سامانه ی خبره بوده است. موتور استنتاج به طور معمول در دو حالت کار می کند: 

زنجیره سازی جلوسو (Forward chaining)

زنجیره سازی عقب سو (Backward chaining)

برنامه ی موتور استنتاج، برای اعمال قواعد بر داده ی ورودی سه فاز را طی می کند.

فاز ۱ – انطباق: در این فاز موتور استنتاج، داده ها را با مجموعه ی قواعد انطباق می دهد. این فرایند را تطابق الگو (Pattern matching) می نامیم. از الگوریتم های زیر می توان برای تطابق الگو استفاده کرد:

  • Linear
  • Rete
  • Treat
  • Leaps

Drools یک پیاده سازی از موتور قواعد است که برای تطابق الگو از الگوریتم Rete استفاده می کند. این الگوریتم برای تطابق الگو، یکی از بهترین ها است.

خروجی فاز اول یک مجوعه ی ناسازگار (conflict set) است. منظور از مجموعه ی ناسازگار این است که برای یک شرایط ممکن است بیشتر از یک قاعده ارضا شود. بنابراین در انتهای این فاز ما یک مجموعه ی ناسازگار داریم.

فاز ۲ – رفع تناقض: در این فاز موتور استنتاج ترتیب قواعد ناسازگار را مدیریت می کند و پس از رفع ناسازگاری ها قاعده ی منتخب را به عنوان خروجی این فاز تحویل می دهد. برای رفع ناسازگاری ها می توان از الگوریتم های زیر استفاده کرد:

  • Lex
  • Recency
  • MEA
  • Refactor
  • Priority wise

فاز ۳ – اجرا: در این فاز موتور استنتاج، کار متناظر با قاعده ی منتخب را روی داده ها اجرا می کند و خروجی را به کاربر تحویل می دهد.

روش های استنتاج:

موتور های قواعد به طور معمول برای پیاده سازی یک موتور استنتاج از یکی از دو روش زیر استفاده می کنند.

  1. زنجیره سازی جلوسو
  2. زنجیره سازی عقب سو

اما قبل از اینکه روش استنتاج را توضیح دهیم باید فرایند نتیجه گیری (reasoning) را درک کنیم. دو نوع سبک نتیجه گیری وجود دارد که آن ها را معرفی می کنیم.

۱- نتیجه محور / نتیجه گیری عقب سو (Goal-Directed/Backward Reasoning): در این روش ما از سمت نتیجه یا هدف اصلی شروع می کنیم و در می یابیم که برای رسیدن به این نتیجه یا هدف، به چه هدف های فرعی دیگری باید رسیده باشیم؟

مثال: 

اگر ما برای می خواهیم یک عصر را بیرون از خانه بگذرانیم و برای آن برنامه داریم تا به سینما، پارک و رستوران برویم، آنگاه گذراندن یک عصر در بیرون خانه هدف اصلی ما و رفتن به سینما، پارک و رستوران اهداف فرعی ما هستند که برای رسیدن به هدف اصلی باید به آن ها برسیم.

۲- داده محور / نتیجه گیری جلوسو (Data-Driven/Forward Reasoning): در این روش با اطلاعات در دسترس شروع می کنیم و از قواعد استفاده می کنیم تا اطلاعات بیشتری استخراج کنیم. این فرایند را تا آنجا انجام می دهیم که به پاسخی مناسب برسیم.

مثال: 

فرض کنید می خواهیم رنگ یک حیوان خانگی به اسم فریتز را با داده ها و قواعد داده شده بفهمیم.

قواعد:

۱. اگر X قورقور می کند و X حشرات را می خورد، آنگاه X یک قورباغه است.

۲. اگر X چهچه می زند و X دانه می خورد، آنگاه X یک قناری است.

۳. اگر X قورباغه است، آنگاه X سبز است.

۴. اگر X قناری است، آنگاه X زرد است.

داده ها:

۱. فریتز قوقور می کند.

۲. فریتز حشرات را می خورد.

حال ما با استفاده از این قواعد و داده ها می توانیم اطلاعات بیشتری مثل زیر به دست بیاوریم.

  • فریتز قوباغه است.
  • فریتز سبز است.

اکنون می توانیم روش های استنتاج را بررسی کنیم:

زنجیره سازی جلوسو:

  • یک پیاده سازی از نتیجه گیری جلوسو است.
  • داده محور است.
  • یک یا چند قاعده می توانند به صورت همزمان درست باشند.

زنجیره سازی عقب سو:

  • یک پیاده سازی از نتیجه گیری عقب سو است.
  • هدف محور است.
  • با نتیجه (هدف) شروع می کند و اگر آن را پیدا نکرد به دنبال اهداف فرعی و زیر مجموعه ی هدف اصلی می گردد.

یک دسته بندی دیگر نیز با نام زنجیره سازی ترکیبی نیز وجود دارد که ترکیبی از دو نوع زنجیره سازی جلوسو و عقب سو است. Drools از این روش استفاده می کند.

مزیت های موتور قواعد

  1. خواندن قواعد و اضافه کردن به آن ها برای هر فرد غیر فنی ای آسان است و شما می توانید روی کاری که می خواهید انجام دهید تمرکز کنید نه روی اینکه چگونه آن را انجام دهید.
  2. شما همه ی قواعدتان را در یک حافظه ی مرکزی ذخیره می کنید و در این جا به همه ی آن ها دسترسی دارید. این حافظه ی مرکزی مرجع صحت و درستی قواعد برای شما است.
  3. منطق تصمیم گیری از منطق اپلیکیشن شما جدا شده و می توانید آن را بارها استفاده کنید.
  4. در موتور قواعد، ما از الگوریتم های مختلفی برای تطابق الگو و رفع ناسازگاری ها استفاده می کنیم که به ما عملکرد خوب و بهینه ای را می دهد.
  5. با تغییر شرایط ما می توانید قواعد را به روز کنیم و نیازی نیست تا کد برنامه را تغییر دهیم.
  6. پیاده سازی شروط در کد باعث پیچیده شدن کد می شود. موتور قواعد این کار را بهتر انجام می دهد و با استفاده از یک قالب مشخص برای نشان دادن قواعد استفاده می کند.
  7. اپلیکیشن های مختلفی می توانند از یک موتور قواعد مشترک استفاده کنند.

در این مقاله با کلیت موتور قواعد و عبارت های مورد استفاده در این زمینه آشنا شدیم. امیدوارم این مقاله برای شما مفید بوده باشد و از آن استفاده برده باشید.

منبع:

https://medium.com/@er.rameshkatiyar/what-is-rule-engine-86ea759ad97d

 

نظرات
اگر login نکردی برامون ایمیلت رو بنویس: