هوش مصنوعی

الگوریتم تورینه -RETE

الگوریتم تورینه -RETE

الگوریتم تورینه -RETE

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

 

الگوریتم های بهینه سازی

الگوریتم‌های بهینه سازی از یک روند سیستماتیک برای پیدا کردن یک جواب بهینه برای مسئله تعریف شده استفاده می‌کند. این کار به‌وسیله اکتشاف فضای مورد جستجو به‌صورت تکرار شونده یا Iterative صورت می‌گیرد. الگوریتم‌های بهینه سازی معمولاً بر تکنیک‌های ریاضی متکی هستند و جواب پیدا شده توسط این الگوریتم‌ها می‌تواند به صورت قطعی (Deterministic) و یا احتمالی (Probabilistic) باشند. الگوریتم‌های بهینه سازی معمولاً برای حل مسائل مشخصی ایجاد می‌شوند. الگوریتم‌هایی مانند  الگوریتم ژنتیک، الگوریتم ذوب شبیه سازی شده (Simulated Annealing) و الگوریتم بهینه سازی ازدحام ذرات یا PSO از این دسته هستند.

الگوریتم های ابتکاری

الگوریتم‌های ابتکاری یا هیوریستیک، از یک دامنه مشخص استفاده می‌کنند تا در زمانی کوتاه به جواب قابل قبولی برسند بنابراین تضمین نمی‌کنند که جواب داده شده، جواب بهینه باشد. این الگوریتم‌ها بر پایه جستجو ساخته شده‌اند و با کاهش فضای جستجو، سعی در پیدا کردن جواب دارند. برای مسائل بسیار سخت و پیچیده معمولاً استفاده از الگوریتم‌های ابتکاری منطقی به‌نظر می‌رسد؛ چرا که ممکن است یافتن جوابی بهینه غیرممکن (Infeasible) باشد و یا نیازمند زمان بالایی برای پیدا کردن آن باشد. از نمونه الگوریتم‌های هیوریستیک می‌توان به الگوریتم‌های حریصانه (Greedy) و تپه‌نوردی (Hill Climbing) اشاره کرد.الگوریتم تورینه -RETE

الگوریتم های فرا ابتکاری

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

حتما بخوانید :

الگوریتم های بهینه سازی چگونه کار می‌کنند؟

همان‌طور که در ابتدای مقاله گفته شد، هدف الگوریتم های بهینه سازی، یافتن یک جواب با توجه به محدودیت‌های اعمال شده و نیاز یک مسئله است. ممکن است تعداد جواب‌های یک مسئله زیاد باشد؛ اما الگوریتم‌های بهینه سازی سعی در پیدا کردن اپتیمال‌ترین یا همان بهینه‌ترین جواب دارند. برای محقق کردن این امر، الگوریتم‌ها از تابعی به نام تابع هزینه (Cost Function) استفاده می‌کنند. این تابع با توجه به نوع و هدف مسئله تغییر می‌کند؛ به عنوان مثال، ممکن است در جستجوی اینترنتی، تابع هزینه زمان پیدا کردن آیتم مورد نظر باشد.

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

بررسی مراحل بهینه سازی

در متون علمی، معمولاً 4 مرحله برای حل مسئله با الگوریتم های بهینه سازی مطرح می‌شود: فرموله کردن مسئله، مدل‌سازی، بهینه سازی و استقرار مسئله

 

  1. فرموله کردن مسئله: برای شروع حل یک مسئله، ابتدا می‌بایست ساختار کلی آن را تعریف کنیم. به این صورت که تمامی پارامترهای مهم به ترتیب مشخص شوند، اهداف مسئله تعیین گردد و پارامترهای ورودی و خروجی مشخص شوند. ادامه مراحل انجام فرآیند وابسته به این مرحله می‌باشد؛ بنابراین فرموله کردن دقیق و با جزئیات، بسیار در حل مسائل بهینه سازی موثر است.
  2. مدل سازی مسئله: بعد از فرموله کردن مسئله، نوبت به ایجاد یک مدل ریاضی برای مسئله می‌شود. مسائل بسیار گوناگونی وجود دارد که برای بعضی از آنها فرمول‌های بسیار زیادی ایجاد شده است؛ بنابراین می‌توانیم از مدل‌های از پیش تعریف شده استفاده کنیم و یا مدل‌های مشابه را با تغییرات جزئی به مدل مدنظر خودمان تغییر دهیم.
  3. بهینه سازی مسئله: در این مرحله با استفاده از اعمال الگوریتم‌ها بر روی مدل ساخته شده، سعی می‌کنیم یک جواب بهینه یا تقریباً بهینه (بستگی به انتخاب الگوریتم‌مان دارد) پیدا کنیم. لازم است بگوییم که جواب پیدا شده در این مرحله برای مدل ساخته شده است و استفاده از آن در دنیای واقعی بر روی مسائل واقعی ممکن است منجر به پیدا کردن جوابی متفاوت شود.
  4. استقرار مسئله: در این مرحله، جواب به دست آمده بررسی می‌شود و تصمیم نهایی برای درستی مدل ایجاد شده و انتخاب الگوریتم گرفته می‌شود. اگر جواب به‌دست آمده قابل قبول باشد، کار بهینه سازی همین جا تمام می‌شود. در غیر این صورت باید به مراحل قبلی برگردیم و مجدداً فرآیندها را انجام دهیم.

انواع مسائل بهینه سازی

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

  1. مسائل بهینه سازی بدون محدودیت (Unconstrained Optimization Problems): در این مسائل، هدف کلی ما بیشینه کردن و یا کمینه کردن تابع هدفمان است و هیچ گونه محدودیتی بر روی پارامترهای تعیین شده اعمال نمی‌شود. این مسائل از پیچیدگی کمتری برخوردارند و مدل‌سازی آنها نیز ساده‌تر است.
  2. مسائل بهینه سازی با محدودیت (Constrained Pptimization Problems): در این مسائل، برروی بعضی از پارامترها و یا تمامی پارامترها، محدودیت اعمال می‌شود. محدودیت می‌تواند با توجه به نیازهایمان باشد و یا محدودیت‌های رفتاری در دنیای واقعی و وابسته به فیزیک و طبیعت باشد؛ به عنوان مثال فرض کنید در جواب یک مسئله بهینه سازی، سرعت یک ماشین 500 کیلومتر در ساعت در نظر گرفته شود. می‌دانیم که از نظر فیزیکی و قانونی این سرعت ممکن نیست بنابراین محدودیت سرعت (مثلاً 100) برروی متغیر سرعت اعمال می‌شود و یا متغیر هزینه نهایی برای یک کار ساده ساختمانی به چند ده میلیارد برسد که غیرمنطقی به نظر می‌رسد (شاید چند سال بعد منطقی بنظر برسد). در این جا با محدودیت قیمت گذاشتن بر روی متغیر هزینه، جواب نهایی را پیدا می‌کنیم. انتخاب الگوریتم و روش بهینه سازی نیز با توجه به این محدودیت ها صورت می‌گیرد

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *