تالار گفتمان مانشت
تابع دما در الگوریتم simulated annealing - نسخه‌ی قابل چاپ

تابع دما در الگوریتم simulated annealing - fatemeh69 - 05 اردیبهشت ۱۳۹۵ ۰۸:۴۲ ب.ظ

سلام
من می خواستم برای یک مساله ای الگوریتم simulated anneling را پیاده سازی کنم اما نمی دونم تابع دما رو چجوری تعریف کنم؟
می دونم که باید نزولی باشه اما نمی دونم دقیقا چی باشه

احیانا نمی شه خود تابع دمایی که تو فیزیک هست رو گذاشت؟ (همونی که تو درسهای معادلات دیفرانسل ممکنه بهش برخورده باشید)
یا اساسا تابع خوش دستی برای این کار هست؟


لطفا هر نوع نظری که فکر می کنه بهم کمک کنه رو بهم بگید برای پایان نامه م لازم دارم

RE: تابع دما در الگوریتم simulated annealing - آرتا - ۱۷ اردیبهشت ۱۳۹۵ ۰۴:۴۸ ب.ظ

سلام وقت بخیر

همون طوری که اشاره داشتین، تعریف دما یا همون متغیر T در الگوریتم SA به صورت زیر است:

T(k): schedule of ‘‘annealing’’ the ‘‘temperature’’ T in annealing-time steps k

در الگوریتم استاندارد SA یا همون Boltzmann Annealing که از توزیع Boltzmann استفاده شده، طبق رفرنس زیر :

S. Geman and D. Geman, Stochastic relaxation, Gibbs distribution and the Bayesian
restoration in images, IEEE Trans. Patt. Anal. Mac. Int. 6 (6), 721-741 (1984).

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

[tex]T(k)=\frac{T_0}{Lnk}[/tex]

لازم به ذکره که در نسخه سریع الگوریتم SA یا همون Fast Annealing بر خلاف الگوریتم پایه، از توزیع کوشی استفاده شده و در پی اون دما به صورت زیر کم می شود:

[tex]T(k)=\frac{T_0}{k}[/tex]

میشه یک مقدار [tex]\epsilon[/tex] هم برای جلوگیری از خطای تقسیم در مخرج اضافه کرد.

برای مطالعه بیشتر نیز می تونید به فایلی که اینجا گذاشتم مراجعه کنید


مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.


امیدوارم مفید باشه توضیحات
موفق باشید Smile

RE: تابع دما در الگوریتم simulated annealing - fatemeh69 - 18 اردیبهشت ۱۳۹۵ ۰۷:۲۸ ب.ظ

سلام خیلی خوب بود ممنون از توضیحاتتون

RE: تابع دما در الگوریتم simulated annealing - davood_2016 - 18 اردیبهشت ۱۳۹۵ ۱۰:۰۹ ب.ظ

سلام
تابعی که دوستمون معرفی کردند احتمالا بهتره ولی شکل الگوریتم پایه به صورت پیوست هست که در کتاب معروف راسل اومده.
[attachment=19906]
منظور از خط آخر اینه که یک عدد تصادفی بین ۰ تا ۱ تولید کنید اگر حاصل از [tex]_e\frac{\bigtriangleup E}{T}[/tex] کمتر بود انتساب انجام بشه وگرنه انجام نشه.
باز بستگی به مسئله تون داره ولی من خیلی وقت پیش از این تابع استفاده کردم و دقیق خاطرم نیست اما فکر می کنم برای برخی توابع بنچمارک چندمتغیره نتایج خوبی رو با همین تابع پایه داشتم.

RE: تابع دما در الگوریتم simulated annealing - fatemeh69 - 19 اردیبهشت ۱۳۹۵ ۰۵:۳۸ ق.ظ

(۱۸ اردیبهشت ۱۳۹۵ ۱۰:۰۹ ب.ظ)davood_2016 نوشته شده توسط:  سلام
تابعی که دوستمون معرفی کردند احتمالا بهتره ولی شکل الگوریتم پایه به صورت پیوست هست که در کتاب معروف راسل اومده.

منظور از خط آخر اینه که یک عدد تصادفی بین ۰ تا ۱ تولید کنید اگر حاصل از [tex]_e\frac{\bigtriangleup E}{T}[/tex] کمتر بود انتساب انجام بشه وگرنه انجام نشه.
باز بستگی به مسئله تون داره ولی من خیلی وقت پیش از این تابع استفاده کردم و دقیق خاطرم نیست اما فکر می کنم برای برخی توابع بنچمارک چندمتغیره نتایج خوبی رو با همین تابع پایه داشتم.
سلام کتاب راسل را خوانده ام و منظورم تابع تصمیم گیری نبود منظورم تابع دما بود که چی بذاریم

RE: تابع دما در الگوریتم simulated annealing - davood_2016 - 19 اردیبهشت ۱۳۹۵ ۰۸:۲۷ ب.ظ

(۱۹ اردیبهشت ۱۳۹۵ ۰۵:۳۸ ق.ظ)fatemeh69 نوشته شده توسط:  
(18 اردیبهشت ۱۳۹۵ ۱۰:۰۹ ب.ظ)davood_2016 نوشته شده توسط:  سلام
تابعی که دوستمون معرفی کردند احتمالا بهتره ولی شکل الگوریتم پایه به صورت پیوست هست که در کتاب معروف راسل اومده.

منظور از خط آخر اینه که یک عدد تصادفی بین ۰ تا ۱ تولید کنید اگر حاصل از [tex]_e\frac{\bigtriangleup E}{T}[/tex] کمتر بود انتساب انجام بشه وگرنه انجام نشه.
باز بستگی به مسئله تون داره ولی من خیلی وقت پیش از این تابع استفاده کردم و دقیق خاطرم نیست اما فکر می کنم برای برخی توابع بنچمارک چندمتغیره نتایج خوبی رو با همین تابع پایه داشتم.
سلام کتاب راسل را خوانده ام و منظورم تابع تصمیم گیری نبود منظورم تابع دما بود که چی بذاریم

بله ببخشید. درست میگید.

RE: تابع دما در الگوریتم simulated annealing - fatemeh69 - 20 اردیبهشت ۱۳۹۵ ۰۲:۲۸ ق.ظ

(۱۹ اردیبهشت ۱۳۹۵ ۰۸:۲۷ ب.ظ)davood_2016 نوشته شده توسط:  بله ببخشید. درست میگید.

خواهش می کنم