فرایند پیدا کردن فرد مناسب برای ازدواج را تاحدی میشود با بهینهسازی مقایسه کرد. یک تابع هدف داریم که مثلا میشود گفت اینکه چقدر فکر میکنم این فرد به درد ما میخورد! یک فضای جواب هم داریم که مثلاً میشود کل مجردهای جنس مخالف (البته اگر همجنسگرا باشید که خوب فرق میکند این فضای جواب!!).
البته اینجا یک نکتهی ظریفی هست! از آنجایی که فضای جواب اصلی مساله یک فضای گسسته است! میتوانیم یک بحث دیگری مثل درجهی آشنایی با فرد را هم وارد کنیم تا مساله پیوسته شود. مثلا اگر نقطهی A در فضای جواب شخص A را نشان دهد مثلا میتوان گفت اگر ۵۰ درصد با شخص آشنا شدهاید به فاصلهی ۰٫۵ از او قرار دارید! اگر ۸۰ درصد آشنا شدهاید به فاصلهی ۰٫۲. جالبی مساله آنجاست که اولاً شما نمیدانید چقدر با این فرد آشنا شدهاید! پس اگر در حد فعلی آشناییتان به میزان x از او خوشتان میآید نمیدانید که با بیشتر شناختن این فرد بیشتر خوشتان خواهد آمد یا کمتر. حالا فرض کنیم آمدید و به این نتیجه رسیدید که با این فرد ۱۰۰ درصد آشنا شدهاید و به میزان y از او خوشتان میآید. یک جورهایی میشود گفت به بهینهی محلی رسیدهاید! حالا از کجا بدانید این بهینهی محلی که بهش رسیدهاید بهینهی سراسری باشد؟
۱. واقعیت این است که شما نمیتوانید تمام فضای جواب را به امید یافتن بهینهی سراسری جستجو کنید.
۲. آشنایی بیشتر به معنی حرکت در مسیر بهینهی محلی است.
روشهای کلاسیک بهینهسازی نیاز به داشتن فرم تابع هدف دارند ولی اکثر اوقات ما فقط یک بلکباکس داریم که مختصات نقطه را میدهیم و مقدار تابع هدف را میگیریم. در این مسائل معمولا از روشهای فراابتکاری (Metaheuristic) همچون الگوریتم ژنتیک یا PSO (بهینهسازی گروه پرندگان!) استفاده میشود. در این روشهای فرا ابتکاری برای اینکه تضمین کنیم در یک بهینهی محلی کم ارزش به تله نمیافتیم معمولا بخشی تصادفی قرار داده میشود که به نوعی کل فضای جواب را پوشش دهد (مثل جهش ژنتیکی در الگوریتم ژنتیک).
فرض کنید با شخصی آشنا میشوید و این اولین مواجهی شما از نوع خاص است!!! یعنی اولین کاندیدای شماست. کمکم با او آشنا میشوید و میبینید هر چه بیشتر آشنا میشوید بیشتر خوشتان میآید پس یعنی در مسیر یک جواب بهینه قرار گرفتهاید. حال از کجا مطمئن میشوید این شخص یک بهینهی سراسری است؟ شاید این سطح از تابع هدف در مقایسه با جوابهای بهینهی محلی دیگر خیلی هم پایین باشد!
به نظرتان چه چیزی را باید به این الگوریتم آشنایی اضافه کنیم تا در بهینهی محلی گیر نیافتیم؟
پ.ن.
شرمنده اگر اصلاً خوب درنیامد!