**الگوریتم تبرید شبیه‌سازی‌شده** (Simulated Annealing) (SA)، یک الگوریتم بهینه‌سازی فراابتکاری ساده و اثربخش در حل مسائل بهینه‌سازی در فضاهای جستجوی بزرگ است. این الگوریتم بیشتر زمانی استفاده می‌شود که فضای جستجو گسسته باشد (مثلاً همه گشت‌هایی که از یک مجموعه از شهرها میگذرند). برای مسائلی که پیدا کردن یک پاسخ تقریبی برای بهینه کلی مهمتر از پیدا کردن یک پاسخ دقیق برای بهینه محلی در زمان محدود و مشخصی است، تبرید شبیه‌سازی شده ممکن است نسبت به باقی روش‌ها مانند گرادیان کاهشی دارای ارجحییت باشد.

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

می‌توان تبرید تدریجی و آرام در این الگوریتم را به عنوان کاهش تدریجی احتمال انتخاب پاسخ‌های بدتر حین جستجو در فضای پاسخ‌ها دانست (انتخاب پاسخ‌های بدتر یک ویژگی اساسی الگوریتم‌های فراابتگاری است و پیدا کردن بهترین پاسخ را ممکن می‌سازد). شبیه سازی را می‌توان به دو صورت حل روابط کینتیکی برای توابع چگالی (مانند کار خاچاتوریان، سمونوفسکایا و وینشتاین در سال ۱۹۷۹ و ۱۹۸۱) یا استفاده از نمونه‌گیری تصادفی، انجام داد. نمونه گیری تصادفی در سال ۱۹۸۳ توسط کریک‌پاتریک، گلت و کلی معرفی شد،‌ کرنی در سال ۱۹۸۵ و خاچاتوریان، سمونوفسکایا و وینشتاین در سال ۱۹۸۵ به‌طور مستقل این ایده را مطرح کردند. این روش یک اقتباس از الگوریتم متروپولیس-هستینگز است، یک روش مونت کارلو که نمونه حالت‌هایی را از یک سیستم ترمودینامیک تولید می‌کند.

مقدمه
-----

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

### تکرار پایه‌ای

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

### همسایه‌های یک حالت

همسایه‌های یک حالت (جواب)، حالت‌های جدیدی از مسئله هستند که با تغییر در حالت کنونی و با توجه به روشی از پیش تعیین شده ایجاد می‌شوند. برای مثال در مسئله فروشندهٔ دوره‌گرد، هر حالت به‌طور کلی یک جایگشت خاص از شهرهایی است که باید ملاقات شوند. همسایهٔ یک جواب، جایگشت‌هایی هستند که با انتخاب یک جفت از شهرهای هم جوار، از کل مجموعه جایگشت‌ها، و جابجا کردن آن دو شهر ایجاد می‌شوند. عمل تغییر در جواب فعلی و رفتن به جواب‌های همسایه «حرکت» (move) خوانده می‌شود و «حرکت»‌های متفاوت، همسایه‌های گوناگون را بدست می‌دهد.

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

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

### احتمال پذیرش

احتمال یک انتقال از حالت کنونی مانند s به یک حالت کاندید جدید مانند {\displaystyle {\acute {s}}} با یک تابع احتمال پذیرش مثل {\displaystyle P(e,{\acute {e}},T)} مشخص می‌شود که در آن {\displaystyle e=E(s)} و {\displaystyle {\acute {e}}=E({\acute {s}})} است (تابع E روی فضای حالت نشان‌دهنده انرژی و T نشان‌دهنده دمای متغیر‌‌ با زمان سیستم است). حالات با انرژی کمتر بهتر از حالات با انرژی بالاتر هستند. تابع احتمال P باید مثبت باشد حتی زمانی که e کوچکتر از {\displaystyle {\acute {e}}} است. این ویژگی تضمین می‌کند که الگوریتم در یک پاسخ محلی بدتر از پاسخ سراسری بهینه گرفتار نشود.

زمانی که T به صفر میل می‌کند‌‌‌‌، احتمال P یا باید به صفر میل کند (e کوچیکتر از {\displaystyle {\acute {e}}}) یا اینکه به یک عدد مثبت میل کند ({\displaystyle {\acute {e}}} کوچکتر از e). برای مقادیر به اندازه کافی کوچک از T، سیستم به مرور به سمت نقطه با کمینه انرژی حرکت می‌کند و به سمت نقاط با انرژی بیشتر حرکت نخواهد کرد. با قرار دادن {\displaystyle T=0} مسئله به یک الگوریتم حریصانه تقلیل پیدا می‌کند که تنها به سمت نقاط با انرژی کمتر حرکاتش را انجام می‌دهد.

در صورت اولیهٔ تبرید شبیه‌سازی شده، احتمال {\displaystyle P(e,{\acute {e}},T)} زمانی که {\displaystyle {\acute {e}}} کوچکتر از e باشد برابر ۱ می‌شود، که به این معنی است که رویه همیشه مستقل از دما به سمت نقاط پایین‌تر حرکت می‌کند. بسیاری از صورت بندی‌ها و پیاده‌سازی‌های تبرید شبیه‌سازی‌شده همچنان این شرط را به عنوان بخشی از تعریف روش در نظر می‌گیرند‌، اگر چه این شرط برای کارکردن روش الزامی نیست.

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

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

سریع
### زمان‌بندی تبرید

نام و ایده بنیادین الگوریتم منشا‌ٔگرفته از ویژگی دما است. این ویژگی در واقع به گونه‌ای کنترل می‌شود که دما حین شبیه‌سازی به صورت تدریجی کاهش می‌یابد. الگوریتم با قرار دادن {\displaystyle T=\infty } شروع می‌شود (در واقع دما در ابتدا یک مقدار بزرگ را اختیار می‌کند) و در هر گام طبق یک زمان‌بندی از پیش‌تعیین‌شده کاهش می‌یابد. در تعیین این زمان‌بندی باید توجه داشت که با اتمام‌ منابع مورد استفاده مانند تعداد محاسبات، زمان انجام عملیات‌ها هم تمام شود. برای انجام این کار انتظار می‌رود در ابتدا الگوریتم در فضای بزرگی از پاسخ‌ها و بی‌توجه به تابع انرژی به دنبال جواب بگردد. سپس به سمت مناطق با انرژی کمتر پرش کند و این منطقه به مرور کوچک و کوچکتر شود تا زمانی که سیستم دقیقا به پایین‌ترین نقطه سراسری برسد.

آرام
دو شکل روبرو نشان‌دهندهٔ تأثیر زمان‌بندی تبرید بر کارایی الگوریتم هستند. مسئله بازترتیبی پیکسل‌های یک عکس به منظور کمینه کردن انرژی واقعی تصویر است، که باعث می‌شود رنگ‌های مشابه به هم نزدیک‌تر باشند و رنگ‌های متفاوت در فاصله دورتری از هم قرار بگیرند. دو شکل روبرو از دو زمان‌بندی سریع و آرام در بدست آمده‌اند.

برای هر مسئله با فضای متناهی، احتمال این که الگوریتم تبرید در یک نقطه بهینهٔ سراسری کار خود را تمام کند با افزایش زمان به ۱ میل می‌کند. اگرچه این نتیجهٔ نظری چندان راهگشا نیست زیرا میزان زمانی که لازم است تا احتمال رسیدن به جواب از حدی معقول بیشتر شود معمولاً بیشتر از زمانی است که برای جستجوی کل فضا لازم است.

ساختار کلی الگوریتم تبرید شبیه‌سازی شده
---------------------------------------

نمودار جریان الگوریتم تبرید شبیه‌سازی شده.برای حل یک مسئلهٔ بهینه‌سازی، الگوریتم SA ابتدا از یک جواب اولیه شروع می‌کند و سپس در یک حلقه تکرار به جواب‌های همسایه حرکت می‌کند. اگر جواب همسایه بهتر از جواب فعلی باشد، الگوریتم آن را به عنوان جواب فعلی قرار می‌دهد (به آن حرکت می‌کند)، در غیر این صورت، الگوریتم آن جواب را با احتمال exp(-ΔE/T) به عنوان جواب فعلی می‌پذیرد. در این رابطه ΔE تفاوت بین تابع هدف جواب فعلی و جواب همسایه‌است و T یک پارامتر به نام دما است. در هر دما، چندین تکرار اجرا می‌شود و سپس دما به آرامی کاهش داده می‌شود. در گام‌های اولیه دما خیلی بالا قرار داده می‌شود تا احتمال بیشتری برای پذیرش جواب‌های بدتر وجود داشته باشد. با کاهش تدریجی دما، در گام‌های پایانی احتمال کمتری برای پذیرش جواب‌های بدتر وجود خواهد داشت و بنابراین الگوریتم به سمت یک جواب خوب همگرا می‌شود. الگوریتم SAیک الگوریتم غیرمقید می‌باشد که برای طراحی‌های سخت به کار می‌رود.
شبه کد زیر یک پیاده‌سازی از تبرید شبیه‌سازی شده را ارائه نشان می‌دهد. این الگوریتم از حالت {\displaystyle s\_{0}} شروع می‌کند و تا رسیدن به حداکثر گام‌ها‌، {\displaystyle k\_{max}} یا رسیدن به حالتی با انرژی {\displaystyle e\_{min}} یا کمتر از آن متوقف می‌شود. در این روند، صدا کردن تابع {\displaystyle neighbor} یک همسایه رندوم حالت فعلی را انتخاب می‌کند. تابع {\displaystyle random} یک عدد را در بازه (0,1) به صورت یکنواخت انتخاب می‌کند. زمان‌بندی تبرید با صدا کردن تابع {\displaystyle temperature} تعریف می‌شود، که در هر مرحله دمای سیستم را بر حسب ‌‌‌زمان به دست می‌دهد.

```
    Let s = s0
    For k = 0 through kـmax (exclusive):
        T ← temperature(k ∕ kـmax)
        Pick a random neighbour, snew ← neighbour(s)
        If P(E(s), E(sـnew), T) ≥ random(0, 1):
            s ← sـnew
    Output: the final state s

```

انتخاب پارمترهای الگوریتم
-------------------------

برای اعمال تبرید شبیه‌سازی‌شده به یک مسئله خاص، باید این پارامترها را مشخص کرد: فضای حالت،‌ تابع انرژی E، تابع {\displaystyle neighbor}، تابع احتمال پذیرش P، و تابع زمان‌بندی {\displaystyle temperature} و البته مقدار اولیه برای دما. این انتخاب‌ها می‌توانند تأثیرات اساسی روی کارایی این روش بگذراند. متاسفانه، هیچ روشی برای انتخاب پارامترهای مناسب برای تمام مسائل وجود ندارد و برای هر مسئله باید به‌طور خاص بهترین پارامترها را یافت. در ادامه نکاتی در همین زمینه گفته خواهد شد.

تبرید شبیه‌سازی‌شده می‌تواند مانند یک قدم‌زدن تصادفی روی یک گراف جستجو مدل شود که راس‌های آن تمام حالات ممکن هستند و یال‌های آن حرکات کاندید. یک شرط لازم برای تابع {\displaystyle neighbor} این است که باید یک مسیر نسبتا کوتاه را از حالت اولیه به هر حالت دیگری را که می‌تواند بهینهٔ سراسری باشد فراهم کند. در واقع قطر گراف جستجو باید کوتاه باشد. در مسئله فروشندهٔ دوره‌گرد اندازه‌ٔ فضای حالت دارای برای ۲۰ شهر برابر۲۴۳۲۹۰۲۰۰۸۱۷۶۶۴۰۰۰۰ است، ولی تابع همسایه که دو شهر نزدیک را همسایه می‌گیرد می‌تواند در حداکثر ۱۹۰ گام به بهینه سراسری برسد.

### احتمال گذار

برای تحقیق در رفتار تبرید شبیه‌سازی‌شده در یک مسئله خاص، توجه به احتمالات گذار که نتیجهٔ انتخاب‌های اولیه در پیاده‌سازی هستند، راهگشا خواهد بود. برای هر یال {\displaystyle (s,{\acute {s}})} در گراف جستجو، احتمال گذار برابر احتمال آن است که الگوریتم به حالت {\displaystyle {\acute {s}}} برود زمانی که حالت کنونی s است. این احتمال به دمای کنونی که توسط تابع {\displaystyle temperature} تعیین می‌شود، به ترتیبی که توسط {\displaystyle neighbor} تعیین می‌شود و به تابع احتمال پذیرش P بستگی دارد. (دقت کنید که احتمال گذار تنها {\displaystyle P(e,{\acute {e}},T)} نیست زیرا همسایه‌های کاندید در این روش تک تک بررسی می‌شوند.)

### احتمالات پذیرش

تعیین توابع {\displaystyle neighbour}، {\displaystyle temperature} و P شامل کمی فزون‌کاری است. در عمل تابع P برای بسیاری از مسائل یکسان انتخاب می‌شود و دو تابع دیگر با توجه به مسئله تعیین می‌شوند. 

در فرمول‌بندی مسئله توسط کریک‌پاتریک و همکاران، تابع {\displaystyle P(e,{\acute {e}},T)} زمانی که {\displaystyle {\acute {e}}} کوچکتر از e باشد برابر ۱ و در غیر این صورت برابر {\displaystyle exp(-({\acute {e}}-e)/T)} تعریف می‌شود. این فرمول به صورت سطحی طبق گذارهای یک سیستم فیزیکی توجیه‌پذیر است. در واقع این فرمول‌بندی مطابق الگوریتم متروپلیس-هستینگز است زمانی که {\displaystyle T=1} و توزیع استفاده شده در متروپلیس-هستنیگز متقارن است. با این حال، این احتمال پذیرش اکثرا در تبرید ‌شبیه‌سازی‌شده استفاده می‌شود، حتی زمانی که تابع {\displaystyle neighbor} متقارن نباشد یا حتی زمانی که احتمالاتی نباشد. در نتیجه، احتملالات گذار در الگوریتم تبرید‌ شبیه‌سازی‌شده مطابق گذارهای سیستم فیزیکی مذکور نیستند و در توزیع حالات در بلند مدت در یک دمای ثابت T ملزم به شباهت به یک توزیع تعادل ترمودینامیکیروی حالات سیستم فیزیکی در هیچ دمایی نیست. در هر حال، بیشتر صورت‌های تبرید شبیه‌سازی‌شده همان صورت اولیه را انتخاب می‌کنند که احتمالا بارها پیاده‌سازی شده‌است.

### تولید کاندیدهای مناسب

در انتخاب تابع {\displaystyle neighbor} باید این را در نظر گرفت که پس از تعداد معقولی تکرار الگوریتم، انتظار می‌رود حالت سیستم، انرژی به مراتب کمتری از حالت ابتدایی داشته باشد. بنابراین به عنوان یک قانون کلی باید تولیدکننده کاندیدها یا همان {\displaystyle neighbour} را به سمت کاندیدی حرکت داد که انرژی حالت جدید {\displaystyle {\acute {s}}}، شبیه به انرژی حالت کنونی باشد. این روش فراابتکاری (که اساس الگوریتم متروپولیس-هستینگز هم هست) معمولاً حرکات *بسیار خوب* و حرکات *بسیار بد* را حذف میکند. البته بیشتر حرکات بد ممکن هستند تا حرکات خوب و این نشان می‌دهد که الگوریتم تقریباً کارا عمل می‌کند.

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

یک بیان دقیق‌تر از این روش فراابتکاری این است که حالات {\displaystyle {\acute {s}}} که برای آن‌ها {\displaystyle P(e,{\acute {e}},T)} بزرگ است را انتخاب کند. بنابراین، در مثال فروشندهٔ دوره‌گرد، می‌توان از {\displaystyle neighbour} ی استفاده کرد که احتمال انتخاب دو شهر برای جابه‌جایی با افزایش فاصله آن‌ها کاهش يابد.

### اجتناب از موانع

برای انتخاب تابع {\displaystyle neighbour} علاوه بر ملاحظات قبلی باید تلاش کرد تا تعداد کمینه‌های محلی *عمیق* (حالاتی که به میزان زیادی از همسایه‌هایشان انرژی کمتری دارند) را کاهش داد. چنین نقاطی می‌توانند الگوریتم تبرید‌ شبیه‌سازی‌شده را با احتمال بالایی (تقریبا متناسب با کل تعداد حالات در یک همسایگی) و برای زمان زیادی (تقریبا نمایی بر حسب تفاوت انرژی با همسایه‌ها در همسایگی) به دام بیاندازند.

به عنوان یک اصل، طراحی یک تولیدکننده‌ کاندید که بتواند این هدف را ارضا کند غیرممکن است. به علاوه معمولاً میتوان کارایی تبرید ‌شبیه‌سازی‌شده را با تغییرات ساده در تابع {\displaystyle neighbour} به میزان زیادی افزایش داد.

### زمان‌بندی کاهش دما

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

شروع‌های دوباره
---------------

گاهی اوقات بهتر است تا به یک پاسخی که قبلا پیدا شده‌است و بسیار بهتر بوده برگردیم تا اینکه از همین حالت فعلی حرکتی را انجام دهیم. این رویه را شروع دوباره یا restarting می‌گویند. برای انجام این کار باید در شبه کد بالا s و e را برابر sbest و ebest قرار دهیم و دوباره الگوریتم را آغاز کنیم. تصمیم برای آغاز مجدد می‌تواند بر حسب معیارهای مختلفی باشد. یکی از رایج‌ترین روش‌ها شروع مجدد بعد از تعدادی گام مشخص، شروع مجدد به دلیل رد شدن از حداکثر انرژی سیستم، شروع مجدد تصادفی و ... است.

روش‌های مرتبط
-------------

* الگوریتم‌های متروپلیس-هستینگز تعاملی (مونت کارلو ترتیبی)، حرکات تبرید شبیه‌سازی‌شده را با مکانیزم بازیافتی تعاملی ترکیب می‌کند.
* تبرید کوانتومی، از نوسانات کوانتومی به جای نواسانات حرارتی استفاده می‌کند تا از موانع بلند ولی کوچک عبور کند.
* تونل‌زنی تصادفی، تلاش می‌کند بر سخت‌شدن تدریجی که تبرید شبیه‌سازی‌شده با آن در خروج از کیمنه محلی حین کاهش دما روبرو است با تونل‌زدن در موانع غلبه کند.
* جستجوی تابو یا Tabu search، به صورت کاملاً عادی به سمت همسایه‌های با انرژی کمتر حرکت می‌کند، اما زمانی که خود را در یک کمینهٔ محلی گرفتار می‌بیند به سمت بالا حرکت می‌کند و از گرفتارشدن در یک دور با نگه‌داشتن یک لیست جلوگیری می‌کند.
* خانواده الگوریتم‌های دوگان-فاز که الگوریتم تبرید شبیه‌سازی‌شده هم از آن‌ها است، در واقع یک رویکردی بینابینی به جستجوی کلی و محلی دارند.
* بهینه‌سازی جستجوی انفعالی بر ترکیب یادگیری ماشین با بهینه‌سازی تمرکز می‌کند و برای این کار یک حلقه فیدبک داخلی به منظور تنظیم پارامترهای آزاد یک الگوریتم با توجه به ویژگی‌های مسئله، اضافه می‌کند.
* گرادیان کاهشی تصادفی که تعداد زیادی جستجوی حریصانه را از نقاط تصادفی مختلف شروع میکند.
* الگوریتم‌های ژنتیک دسته‌ای از جواب‌ها را به جای تنها یک جواب معرفی می‌کنند. کاندید‌های جدید برای جواب با جهش یا با بازترکیبی تو جواب از دسته اولیه تولید می‌شوند. معیارهای احتمالاتی همانند آنچه در تبرید شبیه‌سازی‌شده مدنظر بود، به منظور انتخاب کاندیدها برای جهش یا بازترکیبی یا حذف تعدادی از جواب‌ها در دسته مذکور استفاده می‌شوند.
* بهینه‌سازی گام به گام، به صورت تدریجی تابع هدف را حین بهینه‌سازی هموار می‌کند.
* بهینه‌سازی کولونی مورچه یا ant colony optimization، تعدادی زیادی مورچه را برای طی کردن فضای جواب و پیداکردن مناطق محلی مناسب استفاده میکند.
* روش آنتروپی متقابل یا cross-entropy، به کمک یک توزیع احتمال پارامتری جواب‌های کاندید را تولید می‌‌کند. پارامترها با استفاده از کمینه‌سازی آنتروپی متقابل دوباره مقدار می‌گیرند تا در مرحله بعد بتوانند نمونه‌های بهتری تولید کنند.
* جستجوی هارمونی، از موسیقی‌داناندر فرایند بدیهه‌سازی تقلید می‌کنند به گونه‌ای که هر موسیقیدان یک نوت موسقی را برای پیدا کردن بهترین هارمونی می‌نوازد.
* بهینه‌سازی تصادفی، شامل بسیاری از روش‌ها از جمله تبرید شبیه‌سازی‌شده است.
* بهینه‌سازی ازدحام ذره یا particle swarm optimization، الگوریتمی است که ازدحام ذرات را به منظور یافتن جواب بهینه مدل می‌کند.
* الگوریتم ریشهٔ زمینی-ریشهٔ هوایی یا runner-root، یک روش فراابتکاری برای حل مسائل تک مدله و چند مدله است که از ریشه‌ٔ هوایی و ریشهٔ زمینی گیاهان در طبیعت الهام گرفته‌است.
* الگوریتم قطرات آب هوشمند یا Intelligent water drops، که رفتار طبیعی قطرات آب را برای بهینه‌سازی استفاده می‌کند.

جستارهای وابسته
---------------

* الگوریتم‌های فراابتکاری
* تبرید کوانتومی

منابع
-----

1. ↑  Cerny, V. , A thermodynamical approach to the traveling salesman problem: An efficient simulation algorithm, Journal of Optimization Theory and Applications, Vol. 45, pp. 41–51, 1985
2. 1 2  Kirkpatrick, S. , Gelatt, C. D. , and Vecchi, M. P. , Optimization by simulated annealing, Science, Vol. 220, pp. 671–680 1983
3. ↑  الگوریتم‌های بهینه‌سازی فراابتکاری/تالیف مسعود یقینی، محمد رحیم اخوان کاظم‌زاده. جهاد دانشگاهی واحد صنعتی امیر کبیر شابک ‎۹۷۸−۹۶۴−۲۱۰−۰۷۸−۱

| * ن
* ب
* و
بهینه‌سازی: تئوری، روش‌ها، و ابتکارها |
| --- |
| 

| برنامه‌سازی نامقید غیرخطی: روش‌ها با استفاده از |
| --- |
| 

|  |  |
| --- | --- |
| … تابع‌ها | 
* Golden section search
* Interpolation methods
* Line search
* روش نلدر - مید
* Successive parabolic interpolation

 |
| … و گرادیان‌ها | 

|  |  |
| --- | --- |
| Convergence | 
* Trust region
* Wolfe conditions

 |
| Quasi–Newton | 
* روش بی‌اف‌جی‌اس and L-BFGS
* DFP
* Symmetric rank-one (SR1)

 |
| Other methods | 
* Gauss–Newton
* Gradient
* الگوریتم لونبرگ-مارکارد
* Conjugate gradient

 |

 |
| … و هشین‌ها | 
* Newton's method

 |

 |

 | The graph of a strictly concave quadratic function is shown in blue, with its unique maximum shown as a red dot. Below the graph appears the contours of the function: The level sets are nested ellipses.Optimization computes maxima and minima. |
| 

| برنامه‌سازی مقید غیرخطی |
| --- |
| 

|  |  |
| --- | --- |
| کلی | 
* Barrier methods
* روش پنالتی

 |
| مشتق‌پذیر | 
* Augmented Lagrangian methods
* Sequential quadratic programming
* Successive linear programming

 |

 |

 |
| 

| بهینه‌سازی محدب |
| --- |
| 

|  |  |
| --- | --- |
| بهینه‌سازی محدب | 
* Cutting-plane method
* Reduced gradient (Frank–Wolfe)
* Subgradient method

 |
| برنامه‌ریزی خطی ودرجه دو | 

|  |  |
| --- | --- |
| برنامه‌ریزی خطی | 
* Ellipsoid algorithm of Khachiyan
* الگوریتم کارمارکار

 |
| Basis-الگوریتم حریصانه | 
* الگوریتم غیر مرکب
* Revised simplex algorithm
* Criss-cross algorithm
* Principal pivoting algorithm of Lemke

 |

 |

 |

 |
| 

| بهینه‌سازی ترکیبیاتی |
| --- |
| 

|  |  |
| --- | --- |
| الگو‌ها | 
* الگوریتم تقریبی
* برنامه‌ریزی پویا
* الگوریتم حریصانه
* بهینه‌سازی خطی عدد صحیح
	+ شاخه و حد یا شاخه و برش

 |
| الگوریتم‌هایگراف | 

|  |  |
| --- | --- |
| درخت پوشای کمینه | 
* الگوریتم بلمن–فورد
* الگوریتم بروکا
* الگوریتم دیکسترا
* الگوریتم فلوید-وارشال
* الگوریتم جانسون
* الگوریتم کراسکال

 |

 |
| شبکه شاره | 
* الگوریتم دینیک
* الگوریتم ادموندز کارپ
* الگوریتم فورد–فالکرسون
* الگوریتم ارسال-برچسب

 |

 |

 |
| 

| الگوریتم‌های فراابتکاری |
| --- |
| 
* الگوریتم تکاملی
* الگوریتم تپه‌نوردی
* الگوریتم جستجوی محلی (بهینه‌سازی)
* الگوریتم تبرید شبیه‌سازی شده
* الگوریتم جستجوی ممنوعه

 |

 |
| 
* **رده‌ها**
	+ روش‌ها
	+ ابتکارها
* **نرم‌افزارها**

 |