سیستم های خبره *Expert systems*

نویسنده Zohreh Gholami, بعد از ظهر 13:28:45 - 10/11/11

« شبيه سازي سيستم صف و سرويس دهنده بانک | مرجع کامل هوش مصنوعی *Artificial Intelligence* »

0 اعضا و 1 مهمان درحال دیدن موضوع.

Zohreh Gholami

سیستم های خبره *Expert systems*

سامانه‌های خِبره یا سیستم‌های خِبره (Expert systems) به دسته‌ای خاص از نرم‌افزارهای رایانه‌ای اطلاق می‌شود که در راستای کمک به کاردانان و متخصّصان انسانی و یا جایگزینی جزئی آنان در زمینه‌های محدود تخصّصی تلاش دارند. اینگونه سامانه‌ها، در واقع، نمونه‌های ابتدایی و ساده‌تری از فن‌آوری پیش‌رفته‌تر سامانه‌های مبتنی بر دانش به حساب می‌آیند.

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



مقدمه
حوزه‌های کاربرد
   کاربرد نظام های خبره در خدمات کتابداری و اطلاع رسانی
   كاربرد سيستم هاي خبره در حسابداري و امور مالي
      انواع سيستم هاي خبره تحليل مالي
         سيستم هاي خبره بينش آفرين
         سيستم هاي خبره تسهيل كننده تصميم‌گيري
نکات تاریخی
سیستم‌های خبره
   تفاوت سیستم های خبره با سایر سيستم‌هاي‌ اطلاعاتي‌
   مدل سیستم خبره
      پایگاه دانش (Knowledge Base)
      موتور استنتاج (Inference Engine)
      امکانات توضیح (Explanation Facilities)
      رابط کاربر
   مزایای یک سیستم خبره چیست؟

Zohreh Gholami

مقدمه

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

در نگاهی کلی، استفاده از دلیل و برهان برای رسیدن به یک نتیجه از فرضیاتی منطقی با استفاده از روش‌های معین، تعریفی از استدلال تلقی می‌شود؛ تعریفی که البته با دیدگاه‌های فلسفی و گاه ایده‌آل‌گرایانه از استدلال تفاوت دارد. با این حال موضوع مهم و اساسی در اینجا بحث در چیستی و چرایی این دیدگاه‌ها نیست، بلکه در مورد نحوه طراحی سیستم‌های با قدرت استدلال، با هر تعریفی، برای رسیدن به مجموعه‌ای از تصمیمات منطقی‌ ‌ با استفاده از مفروضات یا به طور دقیق‌تر دانشی است که در اختیار آن‌ها قرار می‌گیرد.

سیستم‌هایی خبره (expert systems) اساساً برای چنین هدفی طراحی می‌شوند. در حقیقت به واسطه الگوبرداری این سیستم‌ها از نظام منطق و استدلال انسان و نیز یکسان بودن منابع دانش مورد استفاده آن‌ها، حاصل کار یک سیستم خبره می‌تواند تصمیماتی باشد که درحوزه‌ها و عرصه‌های مختلف قابل استفاده، مورد اطمینان و تاثیرگذار هستند. بسیاری بر این باورند که سیستم‌های خبره بیشترین پیشرفت را در هوش مصنوعی به وجود آورده‌اند.

Zohreh Gholami

حوزه‌های کاربرد

سيستم هاي خبره در زمينه هاي بسيار متنوعي كاربرد خود را يافته اند برخي از اين زمينه ها عبارتند از پزشکی، حسابداری، کنترل فرایندها، منابع انسانی، خدمات مالی، و GIS. حسابداري، تجزيه و تحليل هاي مالي پزشكي (تشخيص بيماري)، آنژيوگرافي، باستان شناسي، توليد ويفرهاي سيليكوني و انواع خاصي از راديوگرافي در زمينه هاي مختلف ديگري نيز سيستم هاي خبره پديد آمده اند نظير: مشاوره حقوقي، مشاوره براي انتخاب بهترين معماري يا تركيب بندي سيستم كامپيوتري، مشاوره مهندسي ساختمان و غيره.

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

سیستم‌های خبره یا به عنوان جایگزین فرد متخصص یا به عنوان کمک به وی استفاده می‌شوند.


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

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

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


كاربرد سيستم هاي خبره در حسابداري و امور مالي
يكي از پر رونق ترين زمينه هاي كاربرد سيستمهاي خبره، حوزه و تجزيه و تحليل هاي مالي است. يكي از مناسب ترين زمينه‌هاي كاربرد سيستم هاي خبره حوزه حسابداري و امور مالي است. امروزه انواع زيادي از سيستم هاي خبره براي كاربردهاي مختلف در اين شاخه از دانش بشري ساخته شده است كه در مورد استفاده گروههاي مختلفي از تصميم گيرندگان نظير مديران شركت ها و سازمان ها، حسابداران، تحليلگران مالي، كارشناسان مالياتي و بالاخره عامه مردم قرار مي گيرد حتي متخصصين و كارشناسان حوزه هاي مختلف دانش حسابداري و مالي از اين نرم افزارهاي پر جاذبه به عنوان وسيله اي براي يافتن «حدس دوم» و اطمينان بيشتر نسبت به يافته ها و قضاوت هاي شخصي خود استفاده مي كنند.


كاربردهاي مختلفي از سيستم هاي خبره را در سه زمينه حسابداري، حسابداري مديريت و امور مالياتي به شرح ذيل مي باشد:
حسابرسي: ارزيابي ريسك – تهيه برنامه حسابرسي – فراهم آوردن كمكهاي فني – كشف تقلبات و جلوگيري از آنها
حسابداري مديريت: قيمت گذاري محصولات و خدمات – تعيين بهاي تمام شده – طراحي سيستمهاي حسابداري – بودجه بندي سرمايه اي – انتخاب روش حسابداري – ارزيابي اعتبار – ايجاد و برقراري كنترل
امور مالياتي: توصيه هاي مالياتي – محاسبه مابه التفاوتهاي مالياتي – برنامه‌ريزي مالي شخصي.

تحليلگران مالي نيز امروزه يكي از استفاده كنندگان سيستم هاي خبره هستند به هنگام بررسي وضعيت مالي يك شركت يا مشتري معين، تحليگران مالي در كنار برداشت خود از داده هاي مالي، نظر سيستم خبره را نيز به عنوان يك نظر تخصصي اضافي در اختيار دارد و در مواردي كه اين نظر يا قضاوت دوم با نظر خود او مخالفتي داشته باشد تلاش مي‌كند تا در تحليل هاي خود دقت بيشتري به عمل آورده و حتي در مواردي تجديد نظر كند سيستم هاي خبره در مورد بررسي صورت هاي مالي شركت قبل از ارائه به مديران ارشد بررسي گزارش هاي واصله از شعب يا شركت هاي تابعه شركت ارزيابي يك شركت ارزيابي اعتبار مالي فروشندگان و خريداران (طرف هاي تجاري) و در بسياري از زمينه هاي ديگر مالي امروز كاربردهاي خود را يافته اند.


انواع سيستم هاي خبره تحليل مالي
از آنجا كه در قضاوت هاي مختلف مالي عملاً هر چهار مرحله فرآيند تصميم گيري يعني گردآوري داده ها، انجام تجزيه و تحليل كسب بينش مشخص راجع به موضع و بالاخره اتخاذ تصميم دخالت دارد سيستم هاي خبره مرتبط با موضوع تحليل مالي نيز بر اساس نوع كمكي كه به مراحل مختلف فرآيند تصميم گيري مي كنند در سه حوزه تقسيم مي شوند.

اين سه حوزه عبارتند از:
كمك به كسب بينش يا بينش آفرين Insight facititaing
تسهيل تصميم گيري Decision facitiating
اتخاذ تصميم Decision Making

در اين نوع سيستمهاي خبره، هدف اصلي ارائه تحليل هاي مربوط به كمك تحليل نسبتها و نمودار هاست اين نسبت ها و نمودارها براي دست اندركاران تحليل مالي در ايجاد بينش دقيق تري در مورد وضع مالي و چشم انداز آتي يك موسسه، يعني مفيد است با چنين هدفي عملاً مراحل اول و دوم از فرآيند چهار مرحله اي تصميم گيري به كمك اين سيستمها انجام مي شود اين نرم افزارها را به اين دليل بينش آفرين مي خوانيم كه هدفشان كمك به كارگزاران و دست اندركاران مالي براي انجام يك مشاهده بينش آفرين مشخص است بنابر اين درجه تبحر و تخصص موجود در زمره سيستم هاي خبره واقعي به حساب آورده نمونه هايي از اين قبيل نرم افزارها عبارتند از: INsiGht و NEWVIEWS كه هر دو عملاً يك سيستم جامع حسابداري مشتمل بر تحليل هاي مالي اند يعني در عين اينكه همه عمليات حسابداري را انجام مي دهند. در محيط هاي شبيه صفحه گسترده تحليلهاي مالي خود را نيز عرضه مي كنند نرم افزار شناخته شده ديگر REFLEX نام دارد كه 12 نسبت كليدي را محاسبه كرده و تحليل و تفسيرهاي پيشنهادي خود را نيز ارائه مي كند اين تحليل ها همراه با ارائه نسبت ها، روندها و نمودارهاي مناسب است.


سيستم هاي خبره تسهيل كننده تصميم‌گيري
در اين نوع از سيستمهاي خبره مالي يك پايگاه دانش وجود دارد كه ضمن تحليل نسبتهاي مالي مي تواند بينشهاي خود نسبت به موضوع مورد تحليل را نيز ارائه دهد و همين امر موجب تمايز آن از سيستمهاي دسته اول مي شود بنابر اين در اين قبيل سيستمها سه مرحله از چهار مرحله فرآيند تصميم گيري انجام مي شود يك نمونه از اين سيستم هاي خبره « ANSWERS » است.

Zohreh Gholami

نکات تاریخی

تا ابتدای دههٔ 1980 (م) کار چندانی در زمینهٔ ساخت و ایجاد سامانه‌های خِبره توسط پژوهش گران هوش مصنوعی صورت نگرفته بود. از آن زمان به بعد، کارهای زیادی در این راستا و در دو حوزهٔ متفاوت ولی مرتبط سامانه‌های کوچک خبره و نیز سامانه‌های بزرگ خبره انجام شده است.

در دهه 1970، ادواردفيگن بام در دانشگاه استانفورد به دنبال كشف روش حل مساله اي بود كه خيلي كلي و همه منظوره نباشد. محققين دريافتند كه يك متخصص معمولاً داراي تعدادي رموز و فوت و فن خاص براي كار خود مي باشد و در واقع از مجموعه اي از شگردهاي مفيد و قواعد سرانگشتي در كار خود بهره مي برد، اين يافته مقدمه پيدايش سيستم خبره بود . سيستم خبره با اخذ اين قواعد سر انگشتي از متخصصين و به تعبيري با تبديل فرآيند استدلال و تصميم گيري متخصصين به برنامه‌هاي كامپيوتري مي تواند به عنوان ابزار راهنماي تصميم گيري در اختيار غيرمتخصص و حتي متخصصين كم تجربه قرار گيرد.


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


مباحث کاربردی و مهم در تحقق یک سیستم هوش مصنوعی:
سیستم‌های خبره (Expert Systems)
شبکه‌های عصبی (Neural Network)
الگوریتم‌های ژنتیک (Genetic Algorithms)
سیستم‌های منطق فازی (Fuzzy Logic Systems)

Zohreh Gholami

سیستم‌های خبره

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

- متخصص: آیا میوه سبز است؟
- استفاده کننده: خیر.

- متخصص: آیا میوه قرمز است؟
- استفاده کننده: بله.

- متخصص: آیا این میوه روی درخت رشد می کند؟
- استفاده کننده: خیر.

- متخصص: آیا این میوه روی یک بوته رشد می کند؟
- استفاده کننده: بله.

- متخصص: آیا این بوته تیغ دارد؟
- استفاده کننده: بله.

- متخصص: این میوه تمشک است!


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

اگر بخواهيم تعريفي از سيستم هاي خبره ارایه دهيم مي توان گفت
سيستم هاي خبره برنامه هاي كامپيوتري هستند كه با استفاده از قواعد مورد استفاده متخصصين به حل مسایل در زمينه اي خاص مي پردازند. وجه تمايز اصلي سيستم هاي خبره نسبت به برنامه‌هاي كاربردي گذشته آن است كه از استدلال مبتني بر استنباط و استنتاج استفاده مي كند در برنامه هاي كاربردي معمولي داراي الگوريتم و روش حل مساله ثابتي هستيم اما در روش هاي شهودي مي توان با آزمون و خطا مسایل دشوارتري را حل كرد و به جواب رضايت بخش رسيد.

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

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


تفاوت سیستم های خبره با سایر سيستم‌هاي‌ اطلاعاتي‌
سيستم‌هاي‌ خبره‌ برخلاف‌ سيستم‌هاي‌ اطلاعاتي‌ كه‌ بر روي‌ داده‌ها (Data) عمل‌ مي‌كنند، بر دانش‌ (Knowledge) متمركز شده‌ است‌. همچنين‌ دريك‌ فرآيند نتيجه‌گيري‌، قادر به‌ استفاده‌ از انواع‌ مختلف‌ داده‌ها عددي‌ (Digital)، نمادي‌ Symbolic و مقايسه‌ ای (Analog) مي‌باشند. يكي‌ ديگر ازمشخصات‌ اين‌ سيستم‌ها استفاده‌ از روش هاي‌ ابتكاري‌ (Heuristic) به‌ جاي‌روش هاي‌ الگوريتمي‌ مي‌باشد. اين‌ توانايي‌ باعث‌ قرار گرفتن‌ محدودوسيعي‌ از كاربردها در برد عملياتي‌ سيستم‌هاي‌ خبره‌ مي‌شود. فرآيند نتيجه‌گيري‌ در سيستم‌هاي‌ خبره‌ بر روش هاي‌ استقرايي‌ و قياسي‌ پايه‌گذاري‌شده‌ است‌. از طرف‌ ديگر اين‌ سيستم‌ها مي‌توانند دلايل‌ خود در رسيدن‌به‌ يك‌ نتيجه‌گيري‌ خاص‌ و يا جهت‌ و مسير حركت‌ خود به‌ سوي‌ هدف‌را شرح‌ دهند. با توجه‌ به‌ توانايي‌ اين‌ سيستم‌ها در كار در شرايط فقدان‌اطلاعات‌ كامل‌ و يا درجات‌ مختلف‌ اطمينان‌ در پاسخ‌ به‌ سئوالات‌ مطرح‌شده‌، سيستم‌هاي‌ خبره‌ نماد مناسبي‌ براي‌ كار در شرايط عدم‌ اطمينان ‌(Uncertainty) و يا محيط هاي‌ چند وجهي‌ مي‌باشند.


مدل سیستم خبره
یک مدل سیستم خبره مشتمل بر چهار بخش اصلی است:
پایگاه دانش (Knowledge Base)
موتور استنتاج (Inference Engine)
امکانات توضیح (Explanation Facilities)
رابط کاربر


پایگاه دانش (Knowledge Base)
محلی است که دانش خبره به صورت کدگذاری شده و قابل فهم برای سیستم ذخیره می شود. با این توصیف دو اصطلاح زیر تعریف می‌شود:
- شیء (Object): منظور از شیء در اینجا نتیجه ای است که با توجه به قوانین مربوط به آن تعریف می گردد.
- شاخص (Attribute): منظور از شاخص یا «صفت» یک کیفیت ویژه است که با توجه به قوانینی که برای آن در نظر گرفته شده است به شما در تعریف شیء یاری می دهد.


بنابراین می توان پایگاه دانش را به صورت لیستی از اشیاء که در آن قوانین و شاخص‌های مربوط به هر شیء نیز ذکر شده است در نظر گرفته شود. در ساده‌ترین حالت(که در اکثر کاربردها نیز همین حالت بکار می رود) قانونی که به یک شاخص اعمال می‌شود این مطلب را بیان می‌کند که آیا شیء مورد نظر شاخص دارد یا ندارد؟
یک سیستم متخصص که انواع مختلف میوه را شناسایی می‌کند احتمالاً دارای بانک اطلاعاتی به صورت زیر خواهد بود:

شیء قانون شاخص
سیب دارد روی درخت رشد می کند.
دارد گرد است
دارد رنگ قرمز یا زرد است
ندارد در کویر رشد می کند
انگور ----- -------------------

بانک ساده شده بالا، تنها با استفاده از قانون <<دارد>>:






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


موتور استنتاج (Inference Engine)
حتی زمانی که قلمرو دانش را با قوانین نمایش می دهیم، باز هم یک فرد خبره باید مشخص کند که کدام قوانین را برای حل مساله خاصی به کار می برد. علاوه بر این باید مشخص کند که این قوانین را در چه رده ای به کار می برد. به طور مشابه یک سیستم خبره نیاز خواهد داشت تا تصمیم بگیرد که چه قانونی و در چه مورد و رده ای باید برای ارزیابی انتخاب شود.

دستگاه استنتاج در واقع قلب يك سيستم خبره است. يك نظام پيچيده كه قواعد استنتاج را كه به صورت مجموعه اي از قواعد "اگر ... پس ..." براي يافتن پاسخ يا قضاوت نهايي به كار مي گيرد چيزي كه سيستم خبره را سيستم خبره مي‌كند روشي است كه اين قواعد براساس آن مورد پردازش قرار مي گيرند .دستگاه استنتاج براي رسيدن به قضاوت مي تواند به دو صورت عمل كند و در واقع از سلسله مراتب قواعد استدلال به دو طريق عبور كند يكي از دو شيوه روش استدلال پيش رو است كه از داده ها شروع مي كند و به نتيجه مي رسد يعني با درنظر گرفتن داده هاي مربوط به موضوع مورد سوال از (اگر) ها شروع كرده و به نتايج يا (پس) هاي مناسب مي رسد به عبارت ديگر در زنجيره پيش رو از مقدمات به نتايج مي رسيم، روش دوم استنتاج آن است كه از نتايج شروع مي كند و براي چنان نتايج مشخص به دنبال مقامات يا شرايط اوليه مناسب مي گردد به عبارت ديگر نقطه شروع (پس) ها هستند و از آن ها به (اگر) ها دست مي يابد. روش اول استنتاج را روش مبتني بر داده و روش دوم را روش مبتني بر هدف مي خوانند .


امکانات توضیح (Explanation Facilities)
برای نشان دادن مراحل نتیجه گیری سیستم خبره برای یک مساله خاص با واقعیات خاص به زبان قابل فهم برای کاربر به کار می رود. این امکانات این فایده را دارد که کاربر با دیدن مراحل استنتاج اطمینان بیشتری به تصمیم گرفته شده توسط سیستم خواهد داشت. و خبره ای که دانش او وارد پایگاه دانش شده است اطمینان حاصل خواهد کرد که دانش او به صورت صحیح وارد پایگاه دانش شده است.


رابط کاربر
منظور از رابط كاربر، مجموعه اي از تجهيزات و نرم افزارها است كه به صورت كانال ارتباط كاربر و سيستم خبره عمل مي كند يعني به كاربر امكان ارایه اطلاعات مربوط به مساله مورد نظر را به سيستم مي دهد و از طرف ديگر استنتاجات سيستم را در اختيار كاربر مي گذارد.

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


مزایای یک سیستم خبره چیست؟
میزان مطلوب بودن یک سیستم خبره اصولا به میزان قابلیت دسترسی به آن و میزان سهولت کار با آن بستگی دارد.


مزاياي‌ سيستم‌هاي‌ خبره‌ را مي‌توان‌ به‌ صورت‌ زير دسته‌بندي‌ كرد:
افزايش قابليت‌ دسترسي‌: تجربيات‌ بسياري‌ از طريق‌ كامپيوتر دراختيار قرار مي‌گيرد و به‌ طور ساده‌تر مي‌توان‌ گفت‌ يك‌ سيستم‌ خبره‌، توليد انبوه‌ تجربيات‌ است‌.
كاهش‌هزينه‌: هزينه‌ كسب‌ تجربه‌ براي‌ كاربر به‌طور زيادي ‌كاهش ‌مي‌يابد.
كاهش‌ خطر: سيستم‌ خبره‌ مي‌تواند در محيط هايي‌ كه‌ ممكن‌ است ‌براي‌ انسان‌ سخت‌ و خطرناك‌ باشد نيز بكار رود.
دائمي‌ بودن‌: سيستم‌هاي‌ خبره‌ دائمي‌ و پايدار هستند. به عبارتي‌ مانندانسان‌ها نمي‌ميرند و فنا ناپذيرند.
تجربيات‌ چندگانه‌: يك‌ سيستم‌ خبره‌ مي‌تواند مجموع‌ تجربيات‌ وآگاهي‌هاي‌ چندين‌ فرد خبره‌ باشد.
افزايش‌ قابليت‌ اطمينان‌: سيستم‌هاي‌ خبره‌ هيچ‌ وقت‌ خسته‌ و بيمار نمي‌شوند، اعتصاب‌ نمي‌كنند و يا عليه‌ مديرشان‌ توطئه‌ نمي‌كنند، درصورتي‌ كه‌ اغلب‌ در افراد خبره‌ چنين‌ حالاتي‌ پديد مي‌آيد.
قدرت‌ تبيين‌ (Explanation): يك‌ سيستم‌ خبره‌ مي‌تواند مسير و مراحل‌ استدلالي‌ منتهي‌ شده‌ به‌ نتيجه‌گيري‌ را تشريح‌ نمايد. اما افراد خبره‌ اغلب‌ اوقات‌ به دلايل‌ مختلف‌ (خستگي‌، عدم‌ تمايل‌ و...) نمي‌توانند اين‌ عمل‌ را در زمان هاي‌ تصميم‌گيري‌ انجام‌ دهند. اين‌ قابليت‌، اطمينان‌ شما را در مورد صحيح‌ بودن‌ تصميم‌گيري‌ افزايش‌ مي‌دهد.
پاسخ‌دهي‌سريع‌: سيستم‌هاي ‌خبره‌، سريع‌ و دراسرع‌ وقت ‌جواب ‌مي ‌دهند.
پاسخ‌دهي‌ در همه‌ حالات‌: در مواقع‌ اضطراري‌ و مورد نياز، ممكن‌ است‌ يك‌ فرد خبره‌ به خاطر فشار روحي‌ و يا عوامل‌ ديگر، صحيح ‌تصميم‌گيري‌ نكند ولي‌ سيستم‌ خبره‌ اين‌ معايب‌ را ندارد.
پايگاه‌ تجربه‌: سيستم‌ خبره‌ مي‌تواند همانند يك‌ پايگاه‌ تجربه‌عمل‌ كند وانبوهي‌ از تجربيات‌ را در دسترس‌ قرار دهد.
آموزش‌ كاربر(Intelligent Tutor): سيستم‌ خبره‌ مي‌تواند همانند يك‌ خودآموز هوش‌ عمل‌ كند. بدين‌ صورت‌ كه‌ مثال هايي‌ را به‌ سيستم‌ خبره‌ مي‌دهند و روش‌ استدلال‌ سيستم‌ را از آن‌ مي‌خواهند.
سهولت‌ انتقال‌ دانش‌: يكي‌ از مهم ترين‌ مزاياي‌ سيستم‌ خبره‌، سهولت‌ انتقال‌ آن‌ به‌ مكان‌هاي‌ جغرافيايي‌ گوناگون‌ است‌. اين‌ امر براي‌ توسعه‌ كشورهايي ‌كه‌ استطاعت‌ خريد دانش‌ متخصصان‌ را ندارند، مهم‌است‌.


مثال هایی از سیستم‌های خبره تجاری:
MYCIN: اولین سیستم متخصص موفق جهان بود که در سال 1970 در دانشگاه استنفورد طراحی شد. هدف از ساخت این سیستم کمک به پزشکان در تشخیص بیماری‌های ناشی از باکتری بود. مشکل عمده در تشخیص بیماری برای یک پزشک آن است که تشخیص سریع و قاطع یک بیماری با توجه به تعداد بسیار زیاد بیماری موجود، عملی دشوار است.MYCIN با تشخیص دادن قاطع بیماری‌ها توانست که این نیاز را برآورده سازد.

PROSPECTOR: یک متخصص در امر زمین‌شناسی است که احتمال وجود رسوبات معدنی در یک ناحیه بخصوص را پیش بینی می کند. این سیستم در سال 1987 توسط «ریچارد دودا» و «پیتر هارد» و «رنه ربو» ساخته شد.

در اوایل دهه 80 سیستم‌های متخصص به بازار عرضه شد که می توانستند مشورت‌های مالیاتی، توصیه‌های بیمه ای و یا قانونی را به استفاده کنندگان خود ارائه دهند.

Zohreh Gholami

شبکه‌های عصبی مصنوعی *Artificial Neural Network - ANN*

شبکه‌های عصبی مصنوعی (Artificial Neural Network - ANN) یا به زبان ساده‌تر شبکه‌های عصبی سیستم‌ها و روش‌های محاسباتی نوینی هستند برای یادگیری ماشینی، نمایش دانش، و در انتها اعمال دانش به دست آمده در جهت بیش‌بینی پاسخ‌های خروجی از سامانه‌های پیچیده. ایدهٔ اصلی این گونه شبکه‌ها (تا حدودی) الهام‌گرفته از شیوهٔ کارکرد سیستم عصبی زیستی، برای پردازش داده‌ها، و اطلاعات به منظور یادگیری و ایجاد دانش قرار دارد. عنصر کلیدی این ایده، ایجاد ساختارهایی جدید برای سامانهٔ پردازش اطلاعات است. این سیستم از شمار زیادی عناصر پردازشی فوق العاده بهم‌پیوسته با نام نورون تشکیل شده که برای حل یک مسأله با هم هماهنگ عمل می‌کند.

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

این شبکه‌ها برای تخمین (Estimation) و تقریب (Approximation) کارایی بسیار بالایی از خود نشان داده اند. گستره کاربرد این مدل‌های ریاضی بر گرفته از عملکرد مغز انسان، بسیار وسیع می‌باشد که به عنوان چند نمونه کوچک می توان استفاده از این ابزار ریاضی در پردازش سیگنال‌های بیولوییکی، مخابراتی و الکترونیکی تا کمک در نجوم و فضا نوردی را نام برد.

اگر یک شبکه را هم‌ارز با یک گراف بدانیم، فرآیند آموزش شبکه تعیین نمودن وزن هر یال و bias اولیه خواهد.

Zohreh Gholami

الگوریتم ژنتیک *Genetic Algorithm - GA*

الگوریتم ژنتیک (Genetic Algorithm - GA) تکنیک جستجویی در علم رایانه برای یافتن راه‌حل تقریبی برای بهینه‌سازی و مسائل جستجو است. الگوریتم ژنتیک نوع خاصی از الگوریتم های تکامل است که از تکنیک های زیست‌شناسی فرگشتی مانند وراثت و جهش استفاده می‌کند.

در واقع الگوریتم‌های ژنتیک از اصول انتخاب طبیعی داروین برای یافتن فرمول بهینه جهت پیش‌بینی یا تطبیق الگو استفاده می‌کنند.الگوریتم‌های ژنتیک اغلب گزینه خوبی برای تکنیک‌های پیش‌بینی بر مبنای رگرسیون هستند. مختصراً گفته می‌شود که الگوریتم ژنتیک (یا GA) یک تکنیک برنامه‌نویسی است که از تکامل ژنتیکی به عنوان یک الگوی حل مسئله استفاده می‌کند.مسئله‌ای که باید حل شود ورودی است و راه‌حلها طبق یک الگو کد گذاری می‌شوند که تابع fitness نام دارد هر راه حل کاندید را ارزیابی می‌کند که اکثر آنها به صورت تصادفی انتخاب می‌شوند.

کلاً این الگوریتم‌ها از بخش های زیر تشکیل می‌شوند: تابع برازش - نمایش – انتخاب – تغییر



مقدمه
هنگامی که لغت تنازع بقا به کار می‌رود اغلب بار ارزشی منفی آن به ذهن می‌آید. شاید همزمان قانون جنگل به ذهن برسد و حکم بقای قوی‌ترها! البته همیشه هم قوی‌ترین‌ها برنده نبوده‌اند. مثلاً دایناسورها با وجود جثه عظیم و قوی‌تر بودن در طی روندی کاملاً طبیعی بازیِ بقا و ادامه نسل را واگذار کردند در حالی که موجوداتی بسیار ضعیف‌تر از آنها حیات خویش را ادامه دادند. ظاهراً طبیعت، بهترین‌ها را تنها بر اساس هیکل انتخاب نمی‌کند! در واقع درست‌تر آنست که بگوییم طبیعت مناسب ترین‌ها (Fittest) را انتخاب می‌کند نه بهترین‌ها.

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

مثلا فرض کنید گونه خاصی از افراد، هوش بیشتری از بقیه افرادِ یک جامعه یا کولونی دارند. در شرایط کاملاً طبیعی، این افراد پیشرفت بهتری خواهند کرد و رفاه نسبتاً بالاتری خواهند داشت و این رفاه، خود باعث طول عمر بیشتر و باروری بهتر خواهد بود (توجه کنید شرایط، طبیعیست نه در یک جامعه سطح بالا با ملاحظات امروزی؛ یعنی طول عمر بیشتر در این جامعه نمونه با زاد و ولد بیشتر همراه است). حال اگر این خصوصیت (هوش) ارثی باشد بالطبع در نسل بعدی همان جامعه تعداد افراد باهوش به دلیل زاد و ولد بیشترِ این‌گونه افراد، بیشتر خواهد بود. اگر همین روند را ادامه دهید خواهید دید که در طی نسل‌های متوالی دائماً جامعه نمونه ما باهوش و باهوش‌تر می‌شود. بدین ترتیب یک مکانیزم ساده طبیعی توانسته است در طی چند نسل عملاً افراد کم هوش را از جامعه حذف کند علاوه بر اینکه میزان هوش متوسط جامعه نیز دائماً در حال افزایش است.

بدین ترتیب می‌توان دید که طبیعت با بهره‌گیری از یک روش بسیار ساده (حذف تدریجی گونه‌های نامناسب و در عین حال تکثیر بالاتر گونه‌های بهینه)، توانسته است دائماً هر نسل را از لحاظ خصوصیات مختلف ارتقاء بخشد. البته آنچه در بالا ذکر شد به تنهایی توصیف کننده آنچه واقعاً در قالب تکامل در طبیعت اتفاق می‌افتد نیست. بهینه‌سازی و تکامل تدریجی به خودی خود نمی‌تواند طبیعت را در دسترسی به بهترین نمونه‌ها یاری دهد.


اجازه دهید تا این مسأله را با یک مثال شرح دهیم:
پس از اختراع اتومبیل به تدریج و در طی سال‌ها اتومبیل‌های بهتری با سرعت‌های بالاتر و قابلیت‌های بیشتر نسبت به نمونه‌های اولیه تولید شدند. طبیعی است که این نمونه‌های متأخر حاصل تلاش مهندسان طراح جهت بهینه‌سازی طراحی‌های قبلی بوده‌اند. اما دقت کنید که بهینه‌سازی یک اتومبیل، تنها یک "اتومبیل بهتر" را نتیجه می‌دهد.


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

در این میان آنچه شاید بتواند تا حدودی ما را در فهم این مسأله یاری کند مفهومیست به نام تصادف یا جهش.

به عبارتی طرح هواپیما نسبت به طرح اتومبیل یک جهش بود و نه یک حرکت تدریجی. در طبیعت نیز به همین گونه‌است. در هر نسل جدید بعضی از خصوصیات به صورتی کاملاً تصادفی تغییر می‌یابند سپس بر اثر تکامل تدریجی که پیشتر توضیح دادیم در صورتی که این خصوصیت تصادفی شرایط طبیعت را ارضا کند حفظ می‌شود در غیر این‌صورت به شکل اتوماتیک از چرخه طبیعت حذف می‌گردد.

در واقع می‌توان تکامل طبیعی را به این‌صورت خلاصه کرد: جست‌وجوی کورکورانه (تصادف یا Blind Search) + بقای قوی‌تر.
[/b][/color]

حال ببینیم که رابطه تکامل طبیعی با روش‌های هوش مصنوعی چیست. هدف اصلی روش‌های هوشمندِ به کار گرفته شده در هوش مصنوعی، یافتن پاسخ بهینه مسائل مهندسی است. بعنوان مثال اینکه چگونه یک موتور را طراحی کنیم تا بهترین بازدهی را داشته باشد یا چگونه بازوهای یک ربات را متحرک کنیم تا کوتاه‌ترین مسیر را تا مقصد طی کند (دقت کنید که در صورت وجود مانع یافتن کوتاه‌ترین مسیر دیگر به سادگی کشیدن یک خط راست بین مبدأ و مقصد نیست) همگی مسائل بهینه‌سازی هستند.

روش‌های کلاسیک ریاضیات دارای دو اشکال اساسی هستند. اغلب این روش‌ها نقطه بهینه محلی (Local Optima) را بعنوان نقطه بهینه کلی در نظر می‌گیرند و نیز هر یک از این روش‌ها تنها برای مسأله خاصی کاربرد دارند. این دو نکته را با مثال‌های ساده‌ای روشن می‌کنیم.


به شکل زیر توجه کنید. این منحنی دارای دو نقطه ماکزیمم می‌باشد. که یکی از آنها تنها ماکزیمم محلی است. حال اگر از روش‌های بهینه‌سازی ریاضی استفاده کنیم مجبوریم تا در یک بازه بسیار کوچک مقدار ماکزیمم تابع را بیابیم. مثلاً از نقطه 1 شروع کنیم و تابع را ماکزیمم کنیم. بدیهی است اگر از نقطه 1 شروع کنیم تنها به مقدار ماکزیمم محلی دست خواهیم یافت و الگوریتم ما پس از آن متوقف خواهد شد. اما در روش‌های هوشمند، به ویژه الگوریتم ژنتیک بدلیل خصلت تصادفی آنها حتی اگر هم از نقطه 1 شروع کنیم باز ممکن است در میان راه نقطه A به صورت تصادفی انتخاب شود که در این صورت ما شانس دست‌یابی به نقطه بهینه کلی (Global Optima) را خواهیم داشت.


بهینه محلی و بهینه کلی

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



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

برای مثال اگر بخواهیم نوسانات قیمت نفت را با استفاده از عوامل خارجی و ارزش رگرسیون خطی ساده مدل کنیم، این فرمول را تولید خواهیم کرد:

قیمت نفت در زمان t = ضریب 1 نرخ بهره در زمان t + ضریب 2 نرخ بیکاری در زمان t + ثابت 1

سپس از یک معیار برای پیدا کردن بهترین مجموعه ضرایب و ثابت‌ها جهت مدل کردن قیمت نفت استفاده خواهیم کرد. در این روش 2 نکته اساسی وجود دارد. اول این که روش خطی است و مسئله دوم این است که ما به جای اینکه در میان "فضای پارامترها" جستجو کنیم، پارامترهای مورد استفاده را مشخص کرده‌ایم.

با استفاده از الگوریتم‌های ژنتیک ما یک ابر فرمول یا طرح، تنظیم می‌کنیم که چیزی شبیه "قیمت نفت در زمان t تابعی از حداکثر 4 متغیر است" را بیان می‌کند. سپس داده‌هایی برای گروهی از متغیرهای مختلف، شاید در حدود 20 متغیر فراهم خواهیم کرد. سپس الگوریتم ژنتیک اجرا خواهد شد که بهترین تابع و متغیرها را مورد جستجو قرار می‌دهد. روش کار الگوریتم ژنتیک به طور فریبنده‌ای ساده، خیلی قابل درک و به طور قابل ملاحظه‌ای روشی است که ما معتقدیم حیوانات آنگونه تکامل یافته‌اند. هر فرمولی که از طرح داده شده بالا تبعیت کند فردی از جمعیت فرمول‌های ممکن تلقی می‌شود.

متغیرهایی که هر فرمول داده‌شده را مشخص می‌کنند به عنوان یکسری از اعداد نشان داده‌شده‌اند که معادل [دی ان ای|دی.ان.ای](DNA) آن فرد را تشکیل می‌دهند.

موتور الگوریتم ژنتیک یک جمعیت اولیه از فرمول ایجاد می‌کند. هر فرد در برابر مجموعه‌ای از داده‌های مورد آزمایش قرار می‌گیرند و مناسب ترین آنها (شاید 10 درصد از مناسب ترین‌ها) باقی می‌مانند، بقیه کنار گذاشته می‌شوند. مناسب ترین افراد با هم جفتگیری (جابجایی عناصر دی ان ای) و تغییر (تغییر تصادفی عناصر دی ان ای) کرده‌اند. مشاهده می‌شود که با گذشت از میان تعداد زیادی از نسلها، الگوریتم ژنتیک به سمت ایجاد فرمول‌هایی که دقیقتر هستند، میل می‌کنند. در حالی که شبکه‌های عصبی هم غیرخطی و غیرپارامتریک هستند، جذابیت زیاد الگوریتم‌های ژنتیک این است نتایج نهایی قابل ملاحظه‌ترند. فرمول نهایی برای کاربر انسانی قابل مشاهده خواهد بود، و برای ارائه سطح اطمینان نتایج می‌توان تکنیک‌های آماری متعارف را بر روی این فرمول‌ها اعمال کرد. فناوری الگوریتم‌های ژنتیک همواره در حال بهبود است و برای مثال با مطرح کردن معادله ویروس‌ها که در کنار فرمول‌ها و برای نقض کردن فرمول‌های ضعیف تولید می‌شوند و در نتیجه جمعیت را کلاً قوی تر می‌سازند.

مختصراً گفته می‌شود که الگوریتم ژنتیک (یا GA) یک تکنیک برنامه‌نویسی است که از تکامل ژنتیکی به عنوان یک الگوی حل مسئله استفاده می‌کند. مسئله‌ای که باید حل شود ورودی است و راه حلها طبق یک الگو کدگذاری می‌شوند که تابع fitness نام دارد و هر راه حل کاندید را ارزیابی می‌کند که اکثر آنها به صورت تصادفی انتخاب می‌شوند.

الگوریتم ژنتیک (GA) یک تکنیک جستجو در علم رایانه برای یافتن راه حل بهینه و مسائل جستجو است. الگوریتم‌های ژنتیک یکی از انواع الگوریتم‌های تکاملی‌اند که از علم زیست‌شناسی مثل وراثت، جهش، [انتخاب ناگهانی(زیست‌شناسی)|انتخاب ناگهانی]، انتخاب طبیعی و ترکیب الهام گرفته شده.

عموماً راه‌حل ها به صورت 2 تایی 0 و 1 نشان داده می‌شوند، ولی روش های نمایش دیگری هم وجود دارد. تکامل از یک مجموعه کاملاً تصادفی از موجودیت‌ها شروع می‌شود و در نسل های بعدی تکرار می‌شود. در هر نسل، مناسب ترین‌ها انتخاب می‌شوند نه بهترین‌ها.

یک راه‌حل برای مسئله مورد نظر، با یک لیست از پارامترها نشان داده می‌شود که به آنها کروموزوم یا ژنوم می‌گویند. کروموزوم‌ها عموماً به صورت یک رشته ساده از داده‌ها نمایش داده می‌شوند، البته انواع ساختمان داده‌های دیگر هم می‌توانند مورد استفاده قرار گیرند. در ابتدا چندین مشخصه به صورت تصادفی برای ایجاد نسل اول تولید می‌شوند. در طول هر نسل، هر مشخصه ارزیابی می‌شود وارزش تناسب (fitness) توسط تابع تناسب اندازه‌گیری می‌شود.

گام بعدی ایجاد دومین نسل از جامعه است که بر پایه فرآیندهای انتخاب، تولید از روی مشخصه‌های انتخاب شده با عملگرهای ژنتیکی است: اتصال کروموزوم‌ها به سر یکدیگر و تغییر.

برای هر فرد، یک جفت والد انتخاب می‌شود. انتخاب‌ها به گونه‌ای‌اند که مناسب ترین عناصر انتخاب شوند تا حتی ضعیف ترین عناصر هم شانس انتخاب داشته باشند تا از نزدیک شدن به جواب محلی جلوگیری شود. چندین الگوی انتخاب وجود دارد: چرخ منگنه‌دار(رولت)، انتخاب مسابقه‌ای (Tournament) ،... .

معمولاً الگوریتم‌های ژنتیک یک عدد احتمال اتصال دارد که بین 0.6 و 1 است که احتمال به وجود آمدن فرزند را نشان می‌دهد. ارگانیسم‌ها با این احتمال دوباره با هم ترکیب می‌شوند. اتصال 2 کروموزوم فرزند ایجاد می‌کند، که به نسل بعدی اضافه می‌شوند. این کارها انجام می‌شوند تا این که کاندیدهای مناسبی برای جواب، در نسل بعدی پیدا شوند. مرحله بعدی تغییر دادن فرزندان جدید است. الگوریتم‌های ژنتیک یک احتمال تغییر کوچک و ثابت دارند که معمولاً درجه‌ای در حدود 0.01 یا کمتر دارد. بر اساس این احتمال، کروموزوم‌های فرزند به طور تصادفی تغییر می‌کنند یا جهش می‌یابند، مخصوصاً با جهش بیت‌ها در کروموزوم ساختمان داده‌مان.

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



شرایط خاتمه الگوریتم‌های ژنتیک عبارتند از:
به تعداد ثابتی از نسل‌ها برسیم.
بودجه اختصاص داده‌شده تمام شود(زمان محاسبه/پول).
یک فرد(فرزند تولید شده) پیدا شود که مینیمم (کمترین) ملاک را برآورده کند.
بیشترین درجه برازش فرزندان حاصل شود یا دیگر نتایج بهتری حاصل نشود.
بازرسی دستی.
ترکیب های بالا.



روش های نمایش
قبل از این که یک الگوریتم ژنتیک برای یک مسئله اجرا شود، یک روش برای کد کردن ژنوم‌ها به زبان کامپیوتر باید به کار رود. یکی از روش‌های معمول کد کردن به صورت رشته‌های باینری است: رشته‌های 0 و 1. یک راه حل مشابه دیگر کدکردن راه حل‌ها در آرایه‌ای از اعداد صحیح یا اعشاری است، که دوباره هر جایگاه یک جنبه از ویژگی‌ها را نشان می‌دهد. این راه حل در مقایسه با قبلی پیچیده‌تر و مشکل‌تر است. مثلاً این روش توسط استفان کرمر، برای حدس ساختار 3 بعدی یک پروتئین موجود در آمینو اسید‌ها استفاده شد. الگوریتم‌های ژنتیکی که برای آموزش شبکه‌های عصبی استفاده می‌شوند، از این روش بهره می‌گیرند.

سومین روش برای نمایش صفات در یک GA یک رشته از حروف است، که هر حرف دوباره نمایش دهنده یک خصوصیت از راه حل است.

خاصیت هر 3 تای این روش‌ها این است که آنها تعریف سازنده‌ایی را که تغییرات تصادفی در آنها ایجاد می‌کنند را آسان می‌کنند: 0 را به 1 و برعکس، اضافه یا کم کردن ارزش یک عدد یا تبدیل یک حرف به حرف دیگر.



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


یک روش دیگر که توسط John Koza توسعه یافت، برنامه‌نویسی ژنتیک (genetic programming) است. که برنامه‌ها را به عنوان شاخه‌های داده در ساختار درخت نشان می‌دهد. در این روش تغییرات تصادفی می‌توانند با عوض کردن عملگرها یا تغییر دادن ارزش یک گره داده شده در درخت، یا عوض کردن یک زیر درخت با دیگری به وجود آیند.



عملگرهای یک الگوریتم ژنتیک
در هر مسئله قبل از آنکه بتوان الگوریتم ژنتیک را برای یافتن یک پاسخ به کار برد به دو عنصر نیاز است: در ابتدا روشی برای ارائه یک جواب به شکلی که الگوریتم ژنتیک بتواند روی آن عمل کند لازم است. در روش سنتی یک جواب به صورت یک رشته از بیتها، اعداد یا نویسه ها نمایش داده می‌شود. دومین جزء اساسی الگوریتم ژنتیک روشی است که بتواند کیفیت هر جواب پیشنهاد شده را با استفاده از توابع تناسب محاسبه نماید. مثلاً اگر مسئله هر مقدار وزن ممکن را برای یک کوله پشتی مناسب بداند بدون اینکه کوله پشتی پاره شود، (مسئله کوله پشتی را ببینید) یک روش برای ارائه پاسخ می‌تواند به شکل رشته ای از بیتهای ۰ و۱ در نظر گرفته شود، که ۱ یا ۰ بودن نشانه اضافه شدن یا نشدن وزن به کوله پشتی است.تناسب پاسخ، با تعیین وزن کل برای جواب پیشنهاد شده اندازه گیری می‌شود.


شبه کد





شمای کلی شبه کد



ایده اصلی
در دهه هفتاد میلادی دانشمندی از دانشگاه میشیگان به نام جان هلند ایده استفاده از الگوریتم ژنتیک را در بهینه‌سازی‌های مهندسی مطرح کرد. ایده اساسی این الگوریتم انتقال خصوصیات موروثی توسط ژن‌هاست. فرض کنید مجموعه خصوصیات انسان توسط کروموزوم‌های او به نسل بعدی منتقل می‌شوند. هر ژن در این کروموزوم‌ها نماینده یک خصوصیت است. به عنوان مثال ژن 1 می‌تواند رنگ چشم باشد، ژن 2 طول قد، ژن 3 رنگ مو و الی آخر. حال اگر این کروموزوم به تمامی، به نسل بعد انتقال یابد، تمامی خصوصیات نسل بعدی شبیه به خصوصیات نسل قبل خواهد بود. بدیهیست که در عمل چنین اتفاقی رخ نمی‌دهد. در واقع بصورت همزمان دو اتفاق برای کروموزوم‌ها می‌افتد. اتفاق اول جهش (Mutation) است. "جهش" به این صورت است که بعضی ژن‌ها به صورت کاملاً تصادفی تغییر می‌کنند. البته تعداد این گونه ژن‌ها بسیار کم می‌باشد اما در هر حال این تغییر تصادفی همانگونه که پیشتر دیدیم بسیار مهم است. مثلاً ژن رنگ چشم می‌تواند بصورت تصادفی باعث شود تا در نسل بعدی یک نفر دارای چشمان سبز باشد. در حالی که تمامی نسل قبل دارای چشم قهوه‌ای بوده‌اند. علاوه بر "جهش" اتفاق دیگری که می‌افتد و البته این اتفاق به تعداد بسیار بیشتری نسبت به "جهش" رخ می‌دهد چسبیدن ابتدای یک کروموزوم به انتهای یک کروموزوم دیگر است. این مسأله با نام Crossover شناخته می‌شود. این همان چیزیست که مثلاً باعث می‌شود تا فرزند تعدادی از خصوصیات پدر و تعدادی از خصوصیات مادر را با هم به ارث ببرد و از شبیه شدن تام فرزند به تنها یکی از والدین جلوگیری می‌کند.



روش های انتخاب
روش‌های مختلفی برای الگوریتم‌های ژنتیک وجود دارند که می‌توان برای انتخاب ژنوم‌ها از آن‌ها استفاده کرد. اما روش‌های لیست شده در پایین از معمول‌ترین روش‌ها هستند.

انتخاب Elitist
مناسب‌ترین عضو هر اجتماع انتخاب می‌شود.

انتخاب Roulette
یک روش انتخاب است که در آن عنصری که عدد برازش (تناسب) بیشتری داشته باشد، انتخاب می‌شود. در واقع به نسبت عدد برازش براي هر عنصر يك احتمال تجمعي نسبت ميدهيم و با اين احتمال است كه شانس انتخاب هر عنصر تعيين مي شود.

انتخاب Scaling
به موازات افزایش متوسط عدد برازش جامعه، سنگینی انتخاب هم بیشتر می‌شود و جزئی‌تر. این روش وقتی کاربرد دارد که مجموعه دارای عناصری باشد که عدد برازش بزرگی دارند و فقط تفاوت‌های کوچکی آن‌ها را از هم تفکیک می‌کند.

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

بعضی از روش‌های دیگر عبارتند از:Hierarchical Selection, Steady-State Selection, Rank Selection, Tournament Selection


مثال عملی
در این مثال می خواهیم مسئله ی ۸ وزیر را بوسیله ی این الگوریتم حل کنیم . هدف مشخص کردن چیدمانی از ۸ وزیر در صفحه ی شطرنج است به نحوی که هیچ یک همدیگر را تهدید نکند. ابتدا باید نسل اولیه را تولید کنیم . صفحه شطرنج ۸ در ۸ را در نظر بگیرید. ستونها را با اعداد ۰ تا ۷ و سطرها را هم از ۰ تا ۷ مشخص می کنیم . برای تولید حالات ( کروموزومها ) اولیه بصورت تصادفی وزیرها را در ستونهای مختلف قرار می دهیم . باید در نظر داشت که وجود نسل اولیه با شرایط بهتر سرعت رسیدن به جواب را افزایش می دهد ( اصالت نژاد ) به همین خاطر وزیر i ام را در خانه‌ی تصادفی در ستون i ام قرار می دهیم ( به جای اینکه هر مهره ای بتواند در هر خانه خالی قرار بگیرد ). با اینکار حداقل از برخورد ستونی وزیرها جلوگیری می شود. توضیح بیشتر اینکه مثلا وزیر اول را بطور تصادفی در خانه های ستون اول که با ۰ مشخص شده قرار می دهیم تا به اخر. i=۰.....۷ حال باید این حالت را به نحوی کمی مدل کرد . چون در هر ستون یک وزیر قرار دادیم هر حالت را بوسیله ی رشته اعدادی که عدد k ام در این رشته شماره ی سطر وزیر موجود در ستون i ام را نشان می دهد. یعنی یک حالت که انتخاب کردیم می‌تواند بصورت زیر باشد: ۶۷۲۰۳۴۲۲ که ۶ شماره ی سطر ۶ است که وزیر اول که شماره‌ی ستونش ۰ است می باشد تا اخر. فرض کنید ۴ حالت زیر به تصادف تولید شده‌اند.این چهار حالت را به عنوان کروموزومهای اولیه بکار می گیریم.
1) ۶۷۲۰۳۴۲۲
2) ۷۰۰۶۳۳۵۴
3) ۱۷۵۲۲۰۶۳
4)۴۳۶۰۲۴۷۱

حال نوبت به تابع برازش fitness function می رسد. تابعی را که در نظر می گیریم تابعی است که برای هر حالت تعداد برخوردها (تهدیدها) را در نظر می گیرد . هدف صفر کردن یا حداقل کردن این تابع است. پس احتمال انتخاب کروموزومی برای تولید نسل بیشتر است که مقدار محاسبه شده توسط تابع برازش برای آن کمتر باشد. (روش های دیگری نیز برای انتخاب وجود دارد) مقدار برازش برای حالات اولیه بصورت زیر می باشد: (مقدار عدد برازش در جلوی هر کروموزوم (با رنگ قرمز) همان تعداد برخوردهای وزیران می باشد)
1) ۶۷۲۰۳۴۲۰ ۶
2)۷۰۰۶۳۳۵۴ ۸
3)۱۷۵۲۲۰۶۳ ۲
4) ۴۳۶۰۲۴۷۱ ۴


پس احتمال ها به صورت زیر است:
p(۳)>p(۴)>p(۱)>p(۲
در اینجا کروموزوم هایی را انتخاب می کنیم که برازندگی کمتری دارند. پس کروموزوم ۳ برای crossover با کروموزوم های ۴ و ۱ انتخاب می شود. نقطه ی ترکیب را بین ارقام 6 و 7 در نظر می گیریم.

۴و۳:
1) ۷۱ ۱۷۵۲۲۰
2)۶۳ ۴۳۶۰۲۴

۱و۳:
1)۲۰ ۱۷۵۲۲۰
2)۶۳ ۶۷۲۰۳۴

حال نوبت به جهش می رسد. در جهش باید یکی از ژن ها تغییر کند. فرض کنید از بین کروموزوم های ۵ تا ۸ کروموزوم شماره ی ۷ واز بین ژن چهارم از ۲ به ۳ جهش یابد. پس نسل ما شامل کروموزوم های زیر با امتیازات نشان داده شده می باشد: (امتیازات تعداد برخوردها می باشد)
1- ۶۲۲۰۳۴۲۰ ۶
2- ۷۰۰۶۳۳۵۴ ۸
3- ۱۷۵۲۲۰۶۳ ۲
4- ۴۳۶۰۲۴۷۱ ۴
5- ۱۷۵۲۲۰۷۱ ۶
6- ۴۳۶۰۲۴۶۳ ۴
7- ۱۷۵۳۲۰۳۰ ۴
8- ۶۷۲۰۳۴۶۳ ۵

کروموزوم ۳ کاندیدای خوبی برای ترکیب با ۶ و ۷ می باشد. (فرض در این مرحله جهشی صورت نگیرد و نقطه ی اتصال بین ژن های ۱ و ۲ باشد)
1- ۶۷۲۰۳۴۲۰ ۶
2- ۷۰۰۶۳۳۵۴ ۸
3- ۱۷۵۲۲۰۶۳ ۲
4- ۴۳۶۰۲۴۷۱ ۴
5- ۱۷۵۲۲۰۷۱ ۶
6- ۴۳۶۰۲۴۶۳ ۴
7- ۱۷۵۳۲۰۳۰ ۴
8- ۶۷۲۰۳۴۶۳ ۵
9- ۱۳۶۰۲۴۶۳ ۲
10- ۴۷۵۲۲۰۶۳ ۲
11- ۱۷۵۳۲۰۳۰ ۴
12- ۱۷۵۲۲۰۶۳ ۲

کروموزوم های از ۹ تا ۱۲ را نسل جدید می گوییم. به طور مشخص کروموزوم های تولید شده در نسل جدید به جواب مسئله نزدیکتر شده اند. با ادامه ی همین روند پس از چند مرحله به جواب مورد نظر خواهیم رسید.

Zohreh Gholami

منطق فازی

مفهوم منطق فازی (Fuzzy logic) اولین بار در پی تنظیم نظریهٔ مجموعه‌های فازی به وسیلهٔ پروفسور لطفی زاده (۱۹۶۵ م) در صحنهٔ محاسبات نو ظاهر شد.



مقدمه

دانش مورد نیاز برای بسیاری از مسائل مورد مطالعه به دو صورت متمایز ظاهر می‌شود:
۱. دانش عینی مثل مدل‌ها، و معادلات، و فورمول‌های ریاضی که از پیش تنظیم شده و برای حل و فصل مسائل معمولی فیزیک، شیمی، یا مهندسی مورد استفاده قرار می‌گیرد.
۲. دانش شخصی مثل دانستنی‌هایی که تا حدودی قابل توصیف و بیان زبان‌شناختی بوده، ولی، امکان کمی کردن آن‌ها با کمک ریاضیات سنتی معمولاً وجود ندارد.

از آن جا که در عمل هر دو نوع دانش مورد نیاز است منطق فازی می‌کوشد آن‌ها را به صورتی منظم، منطقی، و ریاضیاتی بایکدیگر هماهنگ گرداند.



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



مجموعه‌های قطعی
مجموعه‌های قطعی (Crisp sets) در واقع همان مجموعه‌های عادی و معمولی هستند که در ابتدای نظریهٔ کلاسیک مجموعه‌ها معرفی می‌شوند. افزودن صفت قطعی به واقع وجه تمایزی را ایجاد می‌نماید که به کمک آن می‌شود یکی از مفاهیم ابتکاری و حیاتی در منطق فازی موسوم به تابع عضویت را به آسانی در ذهن به وجود آورد.

در حالت مجموعه‌های قطعی، تابع عضویت فقط دو مقدار در برد خود دارد:
آری و خیر (یک و صفر) که همان دو مقدار ممکن در منطق دوارزشی کلاسیک هستند. بنابراین:




که در اینجا تابع عضویت عنصر x در مجموعه قطعی A است.



مجموعه‌های فازی
برد تابع عضویت از {0,1} در مورد مجموعه‌های قطعی به بازهٔ بستهٔ [0,1] برای مجموعه‌های فازی تبدیل می‌شود.



متغیرهای زبانی
متغیرهای زبانی به متغیرهایی گفته می‌شود که مقادیر مورد قبول برای آن‌ها به جای اعداد، کلمات و جملات زبان های انسانی یا ماشینی هستند. همچنین که در محاسبات ریاضی از متغیرهای عددی استفاده می‌گردد در منطق فازی نیز از متغیرهای زبانی (گفتاری یا غیر عددی) استفاده می گردد متغیرهای زبانی بر اساس ارزش های زبانی (گفتاری) که در مجموعه عبارت (کلمات /اصطلاحات) قرار دارند بیان می‌شود: عبارت زبانی (گفتاری Linguistic terms) صفاتی برای متغیرهای زبانی هستند.

به عنوان مثال متغیر زبانی «سن» بسته به تقسیمات مورد نظرشخصی وشرایط می‌تواند مجموعه عبارت از قبیل «نوجوان»، «جوان»، «میان سال»، «سالمند» باشد: مجموعه عبارات (اصطلاحات)فازی (سن) = { «جوان»، «نه جوان»، «نه چندان جوان»، «خیلی جوان»، ...، «میان سال»، «نه چندان میان سال»، ...، «پیر»، «نه پیر»، «خیلی پیر»، «کم و بیش پیر»، ...، «نه خیلی جوان و نه خیلی پیر»، «نه جوان و نه پیر»... }

یا مثال دیگر، فشار (خون) را می‌شود متغیری زبانی در نظر گرفت، که ارزش‌های (خصوصیت‌های) از قبیل پایین، بالا، ضعیف، متوسط، و قوی را می‌تواند در خود جای دهد. به زبان ریاضی داریم (T = Terms):
{پایین، بالا، ضعیف، متوسط، قوی} = (فشار)T

توابع عضویت
تابع عضویت تابعی است از تصویرمجموعه کلی به Ù نسبت به بازه [0,1]. مجموعه فازی A با تابع عضویت φA در U تعریف شده‌است.

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


فرم‌های توابع عضویت
درحالت نمایش دوبعدی در محور افقی ارزش‌های پشتیبان (عضو مربوطه) و در محور عمودی ارزشهای حاصل از تابع عضویت نمایش می‌گردد. توابع عضویت بصورت زیر تقسیم بندی می‌گردد:
انواع نقطه‌ای
انواع خطی
انواع غیر خطی


توابع عضویت خطی
شکل کلی حالت خطی برگرفته از اشکال چندضلعی هندسی(پلیگون) است:
تابع عضویت چندضلعی منطقع
تابع عضویت ذوزنقه‌ای
تابع عضویت مستطیلی
تابع عضویت مثلث
تابع عضویت L شکل
تابع عضویت s شکل


توابع عضویت غیرخطی
شکل کلی حالت غیر خطی نیز برگرفته از اشکال زنگوله‌ای است:
تابع عضویت گاوس
تابع عضویت پی (چپ یا راست)
تابع عضویت L شکل
تابع عضویت s شکل



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



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

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

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

متغیرها در طبیعت یا در محاسبات بر دو نوعند: ارزش‌های کمی که می‌توان با یک عدد معین بیان نمود و ارزش‌های کیفی که براساس یک ویژگی بیان می‌شود.

این دو ارزش قابل تبدیل هستند:
مثلا در مورد قد افراد با ارزش عددی (سانتی‌متر)اندازه‌گیری شود و افراد را به دسته‌های قدکوتاه و قدبلند تقسیم‌بندی کنیم و حد آستانه ۱۸۰ سانتی‌متر برای قد بلندی مدنظر باشد. تمامی افراد زیر ۱۸۰ سانتی متر براساس منطق قدیم قدکوتاهند حتی اگر قد فرد ۱۷۹ سانتی‌متر باشد. ولی در مجموعه فازی هر یک از این صفات براساس تابع عضویت تعریف و بین صفر تا یک ارزشگذاری می‌شود. از آن جا که ذهن ما با منطق دیگری کارهایش را انجام می‌دهد و تصمیماتش را اتّخاذ می‌کند، جهت شروع، ایجاد و ابداع منطق‌های تازه و چندارزشی مورد نیاز است که منطق فازی یکی از آن‌ها می‌باشد.

Tags:

Share via facebook Share via linkedin Share via telegram Share via twitter Share via whatsapp

https://www.meta4u.com/forum/Themes/Comet/images/post/xx.png
پاکسازی سیستم از فایل های غیر ضروری, System Optimize Expert 3.2.7.6

نویسنده Amir Shahbazzadeh در نرم افزار بهینه سازی, Optimisation

0 ارسال
1511 مشاهده
آخرین ارسال: قبل از ظهر 10:26:46 - 09/04/12
توسط
Amir Shahbazzadeh
https://www.meta4u.com/forum/Themes/Comet/images/post/xx.png
معرفی اجمالی انواع طراحی سیستم های سازه ای

نویسنده Hooman Ghayouri در مقالات عمران

0 ارسال
1245 مشاهده
آخرین ارسال: قبل از ظهر 11:56:47 - 07/01/11
توسط
Hooman Ghayouri
https://www.meta4u.com/forum/Themes/Comet/images/post/xx.png
آیکون های فولدر مخصوص سیستم عامل, OS-specific icons

نویسنده maxim354 در آیکون, Icon

0 ارسال
1601 مشاهده
آخرین ارسال: بعد از ظهر 14:40:28 - 07/17/12
توسط
maxim354
https://www.meta4u.com/forum/Themes/Comet/images/post/xx.png
مدل سازی و تحلیل دینامیک های سیستم خروج نخبگان از کشور

نویسنده Zohreh Gholami در مقالات صنایع

3 ارسال
3246 مشاهده
آخرین ارسال: بعد از ظهر 15:50:12 - 10/16/11
توسط
Zohreh Gholami
https://www.meta4u.com/forum/Themes/Comet/images/post/xx.png
آموزش تصویری استفاده از کلید های Ctrl+Alt+Del در سیستم عامل لینوکس (Linux)

نویسنده Amir Shahbazzadeh در سیستم عامل Linux

1 ارسال
3306 مشاهده
آخرین ارسال: بعد از ظهر 15:36:04 - 08/23/11
توسط
Amir Shahbazzadeh
https://www.meta4u.com/forum/Themes/Comet/images/post/xx.png
مشکل در سیستم بعد از بک اپ

نویسنده behzad_vb.net در مدیریت محتوای Joomla

1 ارسال
1463 مشاهده
آخرین ارسال: بعد از ظهر 15:12:31 - 12/07/11
توسط
aria_com63
https://www.meta4u.com/forum/Themes/Comet/images/post/xx.png
آموزش سیستم Customize یو تم YOOtheme

نویسنده متا در تم های YouTheme

1 ارسال
1793 مشاهده
آخرین ارسال: بعد از ظهر 14:43:21 - 05/09/17
توسط
متا