آموزش نرم افزار Clips برای پیاده سازی سیستم های خبره

در اين بخش مي‌توانيد در مباحث مربوط ديگر زبانهاي برنامه نويسي به بحث بپردازيد

مدیران انجمن: Azadi.Isatis, abbas.m.k, athlon64x2, شوراي نظارت

Captain
Captain
نمایه کاربر
پست: 542
تاریخ عضویت: شنبه ۱۹ اسفند ۱۳۸۵, ۷:۰۱ ب.ظ
سپاس‌های ارسالی: 112 بار
سپاس‌های دریافتی: 369 بار
تماس:

Re: آموزش نرم افزار Clips برای پیاده سازی سیستم های خبره

پست توسط Azadi.Isatis »

بعد از نصب نرم افزار با محیطی مانند شکل زیر روبه رو می شویم که در ادامه به توضیح مختصری در مورد هریک از بخش های این محیط می پردازیم.

تصویر


قسمت اصلی ابزار کلیپس که در آن تمامی دستورات نوشته شده و اجرا می شوند (DialogWindow)


در این قسمت تمام واقعیت های ایجاد شده نمایش داده می شوند (Fact)

در این بخش اشیایی مانند متغیرها که به صورت سراسری تعریف شده اند نمایش داده می شوند (Global)

در این قسمت نام پنجره فعال از میان تمام پنجره های مورد نظر را نشان میدهد (Focus)

در این بخش تمامی Rule های فعال نمایش داده می شوند (Agenda)



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


الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.
Captain
Captain
نمایه کاربر
پست: 542
تاریخ عضویت: شنبه ۱۹ اسفند ۱۳۸۵, ۷:۰۱ ب.ظ
سپاس‌های ارسالی: 112 بار
سپاس‌های دریافتی: 369 بار
تماس:

Re: آموزش نرم افزار Clips برای پیاده سازی سیستم های خبره

پست توسط Azadi.Isatis »

استفاده از منوها
منو File :
new : ایجاد یک فایل جدید
Open : باز نمودن فایلی که قبلا ایجاد شده است
Save : ذخیره یک فایل
Load : بارگزاری برنامه
close : بستن برنامه
exit : خارج شدن از محیط کلیپس

منوی Edit :
بخش های Undo , cut , copy , past , Delete , SelectAll قسمت هایی هستند که در ویندوز با آنها مرتبا کار میکنیم و نیاز به توضیحات خاصی ندارند
Comment : اعمال توضیحات به برنامه ( توضیحات در ابزار کلیپس با استفاده از علامت ; اعمال میشوند)
UnComment : خارج نمودن از حالت توضیحات

منوی Buffer :
از این منوی برای انجام عملیاتی از قبیل Search , Replace (جستجو و جایگزینی) استفاده می شود

منوی Execution :
Reset : برای حذف اطلاعات تمامی Fact (واقعیت ها) به کار میرود .
Run : دستوری برای اجرا برنامه می باشد.
Step: برای اجرای شرایط (Rule ) های فعال برنامه به کار میرود .
Clear: برای حذف تمامی Rule, Fact ها از حافظه به کار می رود.
تمامی قسمت های این منو در بخش های بعدی کامل تر توضیح داده خواهد شد
حتما قبل از اجرای برنامه از دستور Reset استفاده نمایید.



منو Browes :
از این منو برای مدیریت ساختارهای موجود در کلیپس استفاده می شود
که هر ساختار در جای خود توضیح داده خواهد شد.

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


منو Help :
مهمترین قسمت این منو ClipsHelp می باشد که برای نمایش ساختار کلی هر دستور و نحوه استفاده از هر دستور به کار می رود.
قسمت دیگر این منو بخش Command Complete می باشد که می توانید با قرار دادن مکان نما برر وی یک دستور قالب کلی آن دستور و همچنین دستورات مشابه دستور انتخاب شده را ببینید.
 برای هر چیز زکاتی است و زکات علم نشر دادن آن است.  


الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.
Captain
Captain
نمایه کاربر
پست: 542
تاریخ عضویت: شنبه ۱۹ اسفند ۱۳۸۵, ۷:۰۱ ب.ظ
سپاس‌های ارسالی: 112 بار
سپاس‌های دریافتی: 369 بار
تماس:

Re: آموزش نرم افزار Clips برای پیاده سازی سیستم های خبره

پست توسط Azadi.Isatis »

خب امروز میخواهم برم سراغ اولین دستور (سعی میکنم دستوراتی را بگم که کاربرد بیشتری دارند)
قبل از نوشتن دستورات لازمه چند نکته ای را بگم:
1- دستورات را میتونید داخل DialogWindow بنویسید و اجرا کنید
2- یک فایل جدید باز کنید و داخل اون دستورات را بنویسید
که در صورت انتخاب مسیر دوم باید :
حتما بعد از ذخیره فایل اون فایل را load کنید
سپس دستور run را اجرا کنید
** البته حتما قبل از اجاری دستور run از دستور reset استفاده کنید**


دستور ایجاد Fact یا واقعیت ها :
Fact یا واقعیت ها در اصل همان ورودی های کاربر به سیستم خبره می باشند که سیستم خبره برای حل مسائل خود به این واقعیت ها نیاز دارد
Fact ها به 3 صورت پیاده سازی میشوند :
1- به صورت تکی
2- به صورت گروهی
3- به صورت template

قالب روش اول به صورت زیر می باشد:
 (color red) واقعیتی با عنوان color و مقدار red تعریف می شود.  البته این نکته نباید فراموش شود که برای مقدار دهی به واقعیت ها حتما بایستی از دستور Assert استفاده شود برای مثال وقتی می خواهیم واقعیتی را مانند قبل تعریف کنیم حتما بایستی به صورت زیر باشد   (assert (color red)   از اجرای این دستور در پنجره Facts یک واقعیت جدید ایجاد می    (assert (color red) (shape circle)   اجرای این دستور دو واقعیت جداگانه در پنجره fact به وجود می ایند.   روش دوم به صورت گروهی یعنی تعریف چندین واقعیت باهم :   انجام این عمل از دستور Deffacts استفاده میکنیم.   ((deffacts sample (color red)(shape circle)   اجرای دستور فوق یک گروه با نام Sample که درای دو واقعیت است به عنوان دانش اولیه به پایگاه اضافه می شود.   سوم را در دستورات بعدی توضیح میدهیم .  factها میتوانند به دو صورت slot (تک مقداری) و multi (چند مقداری تعریف شوند)  اما چند نکته :  تمامی دستورات در کلیپس بین دو علامت پرانتز باز و بسته قرار میگیرند  در راهنمای کلیپس بعضی از علائم زیر وجود دارند که به توضیح مختصری در مورد انها می پردازم :   1- علامت * به معنی این که این قسمت از دستور می تواند صفر یا چند بار نوشته شود   2- علامت + به معنی این که این قسمت از دستور باید حداقل یک بار نوشته شود   3- علامت [] به معنی این که این قسمت اختیاری می باشد.   4- علامت | به معنی (یا) میباشد یعنی شما میتوانید یک قسمت از محتویات اورده شده برای این قسمت از دستور را استفاده کنید   5- علامت <> یعنی بایستی حتما مقداری جایگزین این قسمت از دستور بشود. 
 برای هر چیز زکاتی است و زکات علم نشر دادن آن است.  


الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.
Captain
Captain
نمایه کاربر
پست: 542
تاریخ عضویت: شنبه ۱۹ اسفند ۱۳۸۵, ۷:۰۱ ب.ظ
سپاس‌های ارسالی: 112 بار
سپاس‌های دریافتی: 369 بار
تماس:

Re: آموزش نرم افزار Clips برای پیاده سازی سیستم های خبره

پست توسط Azadi.Isatis »

دستور deftemplate:
از این دستور برای ایجاد ساختار اولیه Fact ها استفاده میکنیم . بعد از استفاده از این دستور هیچ گونه Fact ایجاد نمی شود بلکه ساختار اولیه آن تعریف میگردد و بایستی بعدا با استفاده از دستور assert
این ساختار را مقدار دهی نمود
این دستور شباهت زیادی به دستور structure در دیگر زبان های برنامه نویسی دارد
قالب کلی این دستور به شکل زیر میباشد:
Please Login or Register to see this code

deftemplate-name نام الگوی ما را مشخص میکند
[<comment>] همان گونه که مشخص است این قسمت برا ینوشتن توضیحات پیرامون الگوی نوشته شده به کار می رود که البته به صورت اختیاری می باشد
<slot-definition> برای تعریف fact ها می باشد

نکته :
fact ها می تواندد به دو صورت slot , multi تعریف شوند
slot مانند ali , 24
multi مانند ali reza


به عنوان نمونه مثال زیر را مشاهده کنید

Please Login or Register to see this code

با استفاده از این دستور یک الگو با نام person ایجاد می شود که دارای واقعیت های Lname , Fname به صورت چند مقداری و age به صورت تک مقداری می باشد
 برای هر چیز زکاتی است و زکات علم نشر دادن آن است.  


الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.
Captain
Captain
نمایه کاربر
پست: 542
تاریخ عضویت: شنبه ۱۹ اسفند ۱۳۸۵, ۷:۰۱ ب.ظ
سپاس‌های ارسالی: 112 بار
سپاس‌های دریافتی: 369 بار
تماس:

Re: آموزش نرم افزار Clips برای پیاده سازی سیستم های خبره

پست توسط Azadi.Isatis »

تعریف متغیرها
متغیرها نیز مانند Fact ها می توانند در دوحالت تک مقداری و چند مقداری تعریف شوند
قالب کلی تعریف متغییرها به شکل زیر می باشد:

Please Login or Register to see this code

دو علامت ؟ و ؟$ به عنوان ویلکارد (Wildcard) شناخته می شوند و مانند علامت * در جستجو ها می توانند مورد استفاده قرار می گیرند.

برای تعریف متغیرها به صورت عمومی از دستور defglobal به شکل زیر استفاده می شود:

Please Login or Register to see this code
البته موقع فراخوانی متغیرهای سراسری بایستی حتما به شکلی که نوشته می شوند آورده شوند برای مثال
*Variable*?
چند نکته مهم :
دو نوع فیلد عددی
صحیح (Integer) و ممیزشناور (Float) وجود دارد
فیلدهای نشانه ای
1- حاوی کاراکترهای اسکی می باشند
2- کلیپس به حروف بزرگ و کوچک حساس می باشد
3-از علائم ؟ و ؟$ نمیتوان در شروع کاراکترها استفاده کرد ( زیرا همان گونه که قبلا هم گفته شد این دو جز علائم رزرو شده می باشند)
فیلدهای رشته ای
در بین دابل کوتیشن " " قرار می گیرند
برای استفاده از علامت بک اسلش \ بایستی از قالب زیر پیروی کرد
" A \ " BCDE"


برای مقدار دهی متغیرها بایستی از دستور bind به شکل زیر استفاده نمود

Please Login or Register to see this code

استفاده از دستور read در مقدار دهی متغیرها باعث می شود تا ورودی از طریق صفحه کلید ازکاربر گرفته شود و تا موقعی که کاربر کاراکتری را به عنوان ورودی ثبت نکند برنامه منتظر دریافت ورودی می ماند.
 برای هر چیز زکاتی است و زکات علم نشر دادن آن است.  


الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.
Captain
Captain
نمایه کاربر
پست: 542
تاریخ عضویت: شنبه ۱۹ اسفند ۱۳۸۵, ۷:۰۱ ب.ظ
سپاس‌های ارسالی: 112 بار
سپاس‌های دریافتی: 369 بار
تماس:

Re: آموزش نرم افزار Clips برای پیاده سازی سیستم های خبره

پست توسط Azadi.Isatis »

تعریف Rule (شرایط، قوانین)

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

قالب کلی تعریف Rule ها به شکل زیر می باشد:
Please Login or Register to see this code

Rule-name در این قسمت عنوانی را برای rule نوشته شده انتخاب میکنیم
comment هامن گونه که قبلا هم اشاره شد این بخش برای اضافه کردن توضیحات به کار می رود و به صورت اختیاری می باشد
conditional-element در این قسمت یکسری عوامل مانند Fact ها چک می شوند و در صورت صحیح بودن آن عوامل دستورات Rule در قسمت Action اجرا میگردند
البته این قسمت به دلیل وجود علامت * می تواند وجود نداشته باشد که در این صورت همیشه Rule مربوطه اجرا میگردد
نکته دیگر در این بخش قابلیت استفاده از دستورات منطقی مانند And - Or - Not می باشد.
به طور مثال :
Please Login or Register to see this code

Action در این بخش دستوراتی اجرا میگردند مانند مقدار دهی به Factها و یا ساخت یک fact جدید و ....
در این قسمت می توان از دستورات شرطی if و یا حلقه های تکرار مانند While - for و... هم استفاده نمود

یک نمونه Rule نوشته شده :
Please Login or Register to see this code
 برای هر چیز زکاتی است و زکات علم نشر دادن آن است.  


الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.
Captain
Captain
نمایه کاربر
پست: 542
تاریخ عضویت: شنبه ۱۹ اسفند ۱۳۸۵, ۷:۰۱ ب.ظ
سپاس‌های ارسالی: 112 بار
سپاس‌های دریافتی: 369 بار
تماس:

Re: آموزش نرم افزار Clips برای پیاده سازی سیستم های خبره

پست توسط Azadi.Isatis »

دستور printout

از این دستور برای چاپ مقادیر متغیرها و رشته ها استفاده می شود .
قالب کلی این دستور به شکل زیر می باشد :
Please Login or Register to see this code

logical-name : از این قسمت برای تعیین محل خروجی چاپ استفاده می شود به عنوان مثال قرار دادن حرف t در این قسمت به معنی چاپ خروجی در terminal یا همان صفحه نمایش است .
البته در مواردی هم می توان خروجی را در یک فایل چاپ نمود که در قسمت های بعد دستورات کار با فایل ها را مورد بررسی قرار می دهیم.

Expression : در این قسمت متن مورد نظر با آیتم های مختلف برای چاپ مورد استفاده قرار میگیرد . برای مثال یکی از آیتم های چاپ دستور crlf می باشد که باعث می شود بعد از چاپ متن مکان نما به خط جدید منتقل گردد .

مثال هایی از دستور:

Please Login or Register to see this code
 برای هر چیز زکاتی است و زکات علم نشر دادن آن است.  


الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.
Captain
Captain
نمایه کاربر
پست: 542
تاریخ عضویت: شنبه ۱۹ اسفند ۱۳۸۵, ۷:۰۱ ب.ظ
سپاس‌های ارسالی: 112 بار
سپاس‌های دریافتی: 369 بار
تماس:

Re: آموزش نرم افزار Clips برای پیاده سازی سیستم های خبره

پست توسط Azadi.Isatis »

دستور ساخت توابع DefFunction
با استفاده از این دستور می توانید توابعی را تعریف کنید و در طول برنامه از اونها استفاده کنید

قالب کلی دستور به شکل

Please Login or Register to see this code

همان گونه که قبلا هم گفته شده قسمت name برای دادن عنوانی به تابع مورد نظر می باشد تا بتوان از طریق این نام بعدا در برنامه ارتباط بقرار نمود
comment به صورت اختیاری و برای گذاشتن توضیحات به کار می رود
parameter این قسمت نیز می تواند وجود نداشته باشد اما در صورت ارسال مقادیر به این تابع بایتس این بخش تکمیل گردد
action هم برای عملیات مورد نظر به کار می رود.

مثالPlease Login or Register to see this code

لازم به تذکر است که محاسبات عددی در کلیپس به صورت پیشوندی یا Prefix می باشد
به طور مثال
Please Login or Register to see this code
 برای هر چیز زکاتی است و زکات علم نشر دادن آن است.  


الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.
Captain
Captain
نمایه کاربر
پست: 542
تاریخ عضویت: شنبه ۱۹ اسفند ۱۳۸۵, ۷:۰۱ ب.ظ
سپاس‌های ارسالی: 112 بار
سپاس‌های دریافتی: 369 بار
تماس:

Re: آموزش نرم افزار Clips برای پیاده سازی سیستم های خبره

پست توسط Azadi.Isatis »

چند نمونه از پر کاربردترین دستورات :

1- reset : از این دستور برای حذف اطلاعات fact ها استفاده می شود.
2- clear : از این دستور برای حذف تمامی اطلاعات داخل حافظه کلیپس استفاده می شود و استفاده از این دستور مانند خروج از کلیپس و ورود دوباره است.
3- retract : این دستور برای حذف یک fact به کار گرفته می شود (برای استفاده از این دستور بایستی شماره Fact مورد نظر را داشته باشیم)
4- undefrule : از این دستور برای حذف یک rule استفاده می شود ( برای حذف یک rule نام آن را باید ذکر کنیم)
5- run : از این دستور برای اجرای برنامه استفاه می شود
 برای هر چیز زکاتی است و زکات علم نشر دادن آن است.  


الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.
Captain
Captain
نمایه کاربر
پست: 542
تاریخ عضویت: شنبه ۱۹ اسفند ۱۳۸۵, ۷:۰۱ ب.ظ
سپاس‌های ارسالی: 112 بار
سپاس‌های دریافتی: 369 بار
تماس:

Re: آموزش نرم افزار Clips برای پیاده سازی سیستم های خبره

پست توسط Azadi.Isatis »

ایجاد محدودیت برای slot ها
قبلا نحوه تعریف یک الگو یا template را بیان کردیم . حالا به بیان نحوه ایجاد محدودیت ها برای فیلدهای یک template می پردازیم .
1- اولین محدودیتی که می توان اعمال نمود تعریف نوع خاص برای یک فیلد است . به طور مثال شما می توانید نوع یک فیلد را عددی یا رشته ای تعریف کنید تا از این طریق کاربر فقط بتواند رشته یا عددی را به عنوان ورودی به سیستم بدهد.
به عنوان مثال ما دو فیلد با عناوین name و نوع string (رشته ای ) و age با نوع integer (عددی) تعریف میکنیم.
Please Login or Register to see this code

2- نوع دوم گذاشتن محدودیتی از نوع symbol میباشد . بدین صورت که شما مقادیری خاص را تعریف کرده و کاربر مجبور به انتخاب یکی ازآن مقادیر می شود .
به عنوان نمونه ما فیلدی به نام gender (جنسیت) را تعریف کرده و دو مقدار male , female را برای آن قرار میدهیم.

Please Login or Register to see this code

3- محدودیت های دیگری نیز وجود دارند که در اینجا فقط به ذکر قالب کلی آنها بسنده میکنیم :

Please Login or Register to see this code

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


الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.
Captain
Captain
نمایه کاربر
پست: 542
تاریخ عضویت: شنبه ۱۹ اسفند ۱۳۸۵, ۷:۰۱ ب.ظ
سپاس‌های ارسالی: 112 بار
سپاس‌های دریافتی: 369 بار
تماس:

Re: آموزش نرم افزار Clips برای پیاده سازی سیستم های خبره

پست توسط Azadi.Isatis »

تغییر مقادیر Fact ها با دستور Modify :
از دستور Modify موقعی می توان استفاده نمود که قالب fact ها با استفاده از Deftemplate ایجاد شده باشد.

قالب کلی دستور به شکل زیر می باشد :
Please Login or Register to see this code

برای اعمال تغییرات بایستی شماره fact مورد نظر را داشته باشید
دستور modify در ابتداfact قبلی را حذف نموده و یک fact جدید با مقدار جایگزین که شما برای آن انتخاب نموده اید می سازد .

مثال :
Please Login or Register to see this code

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


در حین استفاده از این دستور می توان مقادیر جدیدی را نیز جایگزین مقادیر قبلی نمود.

قالب کلی دستور:
Please Login or Register to see this code

این دستور از لحاظ ساختاری مشابه دستور modify می باشد و تمام پارامترهای ورودی آنها مشابه است
 برای هر چیز زکاتی است و زکات علم نشر دادن آن است.  


الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.
Captain
Captain
نمایه کاربر
پست: 542
تاریخ عضویت: شنبه ۱۹ اسفند ۱۳۸۵, ۷:۰۱ ب.ظ
سپاس‌های ارسالی: 112 بار
سپاس‌های دریافتی: 369 بار
تماس:

Re: آموزش نرم افزار Clips برای پیاده سازی سیستم های خبره

پست توسط Azadi.Isatis »

نمایش و حذف ساختارها

دستور ppdefrule :
نمایش ساختار قواعد یا همان Rule های که تعریف کرده ایم . برای استفاده از این دستور نام Rule مورد نیاز است.
Please Login or Register to see this code

دستور ppdeftemplate :
نمایش سورس و ساختار الگوها یا همان template های تعریف شده. برای استفاده از این دستور نام template مورد نیاز است.
Please Login or Register to see this code

دستور ppfact :
نمایش ساختار fact های که با دستور Assert تعریف شده اند . برای استفاده از این دستور شماره fact مورد نیاز است .
Please Login or Register to see this code

به منظور حذف ساختار ها از Un استفاده می شود برای مثال
undefRule
undefTemplate

ولی برای حذف یک fact بایستی از دستور retract استفاده نمود.
 برای هر چیز زکاتی است و زکات علم نشر دادن آن است.  


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

بازگشت به “Other Programming”