برنامه نویسی

مقایسه الگوریتم های بهینه سازی: درسهایی از عملکرد Himmelblau

الگوریتم های بهینه سازی قهرمانان ناخوشایند در پشت بسیاری از کارهای محاسباتی هستند ، از آموزش مدل های یادگیری ماشین تا حل مشکلات مهندسی. یک مقاله اخیر ، یک تجزیه و تحلیل مقایسه ای از الگوریتم های بهینه سازی: مطالعه موردی عملکرد Himmelblau (22 آوریل 2025) ، به چگونگی مقابله با چهار الگوریتم با عملکرد Himmelblau ، یک مشکل آزمایش دشوار با راه حل های متعدد فرو می رود. این مقاله یافته های اصلی این مطالعه را برای توسعه دهندگان تقسیم می کند و جزئیات فنی را دست نخورده اما ساده و عاری از ریاضی نگه می دارد.

عملکرد Himmelblau چیست؟

عملکرد Himmelblau یک مشکل معیار است که برای آزمایش الگوریتم های بهینه سازی استفاده می شود. این مانند یک منظره تپه ای با چهار “دره” یکسان (مینیما جهانی) است که بهترین راه حل ها در آن قرار دارند ، به علاوه برخی از “غرق کم عمق” (حداقل محلی) که می تواند الگوریتم ها را به دام بیندازد. پیچیدگی آن باعث می شود تا مقایسه شود که الگوریتم ها به خوبی دره های واقعی را در مقابل گیر شدن پیدا می کنند.

الگوریتم های آزمایش شده

این مطالعه چهار الگوریتم بهینه سازی را مقایسه می کند ، هر کدام 360 بار در عملکرد Himmelblau اجرا می شوند:

SA_NOISE: بازپخت شبیه سازی شده با تصادفی اضافه شده برای کشف بیشتر چشم انداز.

SA_T10: بازپخت شبیه سازی شده با “دمای” ثابت 10 ، کنترل میزان آن در مقابل سوء استفاده ها را کنترل می کند.

Hybrid_SA_ADAM: ترکیبی از بازپرداخت شبیه سازی شده و بهینه ساز آدام ، اکتشافی را با مراحل دقیق ترکیب می کند.

ADAM_LR0.01: بهینه ساز آدام با میزان یادگیری 0.01 ، یک انتخاب محبوب در یادگیری ماشین برای پیشرفت پایدار.

چگونه آنها مورد قضاوت قرار گرفتند

عملکرد توسط:

مراحل برای همگرایی: چند تکرار برای حل و فصل راه حل انجام شد.

ضرر نهایی: چقدر مقدار راه حل به صفر نزدیک بود (مقدار ایده آل برای دره های عملکرد Himmelblau).

میزان موفقیت: درصد دویدن با ضرر نهایی زیر 1.0 (به اندازه کافی نزدیک به دره).

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

نتایج کلیدی

در تمام اجراها ، الگوریتم ها به طور متوسط ​​238.73 مرحله ، از دست دادن نهایی 0.52 و میزان موفقیت 81.11 ٪ بودند. اما هر الگوریتم نقاط قوت و ضعف خاص خود را داشت:

مراحل همگرایی

SA_NOISE و SA_T10: فوق العاده سریع ، به طور متوسط ​​به حدود 52-62 مرحله نیاز دارید. آنها مانند Sprinters هستند و به یک راه حل می روند.

Hybrid_SA_ADAM: کندتر ، برداشتن مراحل 194-208 ، تعادل سرعت و احتیاط.

ADAM_LR0.01: کمترین سرعت ، به 585-693 مرحله نیاز دارد ، زیرا از نظر روش به سمت بهترین راه حل اینچ می رود.

باخت نهایی

Hybrid_SA_ADAM و ADAM_LR0.01: آن را میخکوب کردند و از دست دادن نزدیک صفر (0.00-0.00) برخورد کردند ، به این معنی که آنها به طور مداوم دره های واقعی را پیدا می کردند.

SA_NOISE و SA_T10: دقیق تر ، با تلفات 0.69-1.38 و 0.87-1.38 ، که اغلب به جای دره ها در قسمت های کم عمق فرود می آیند.

فاصله با راه حل واقعی

تمام الگوریتم ها در حدود 4.05-4.41 واحد از نزدیکترین دره به پایان رسیدند ، اما Hybrid_SA_ADAM محکم ترین دامنه (4.08-4.28) را نشان می داد و دقت را نشان می داد.

بینش بصری

Boxplots: SA_NOISE و SA_T10 را به سرعت اما شلخته نشان داد ، در حالی که Hybrid_SA_ADAM و ADAM_LR0.01 کندتر اما نقطه ای بودند.

طرح همگرایی: ADAM_LR0.01 تنها در 200 مرحله به ضرر نزدیک صفر کاهش یافت و با دقت از دیگران پیشی گرفت.

نقشه برداری از خرابی ها: SA_T10 بیشترین تلاش را می کرد ، و هنگامی که حدود 4.0 واحد از یک دره گیر کرده بود ، ضررهای زیادی را به دست آورد.

متریک

ارزش کلی

تعداد اجرا

360

مراحل متوسط

238.73

میانگین ضرر نهایی

0.52

میزان موفقیت (<1.0)

81.11 ٪

این برای devs معنی دارد

این مطالعه یک تجارت کلاسیک را نشان می دهد: سرعت در مقابل دقت.

به سرعت نیاز دارید؟ SA_NOISE و SA_T10 مانند سیستم های زمان واقعی که در آن یک راه حل “به اندازه کافی خوب” کار می کند ، به دنبال نتایج سریع شما هستند.

به دقت نیاز دارید؟ Hybrid_SA_ADAM و ADAM_LR0.01 برای کارهایی مانند یادگیری ماشین ، که در آن یافتن بهترین راه حل مطلق مهم است ، درخشش می دهند.

Mix and Match: رویکرد ترکیبی نشان می دهد که ترکیب الگوریتم ها می توانند اکتشاف (یافتن مناطق جدید) و بهره برداری (افتخار در بهترین نقطه) را متعادل کنند.

چرا باحال است

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

انتخاب الگوریتم مهم: مشکلات مختلف به استراتژی های مختلف نیاز دارند. دره های متعدد عملکرد Himmelblau از چالش های دنیای واقعی مانند آموزش شبکه عصبی یا تخصیص منابع تقلید می کند.

آزمایش مهم است: اجرای 360 آزمون در هر الگوریتم بینش روشنی در مورد قابلیت اطمینان ، چیزی که می توانید در پروژه های خود تکرار کنید.

HELP HELP: Boxplots و نقشه های گرما باعث می شود الگوهای را آسان تر کنید ، بنابراین از آنها برای اشکال زدایی یا مقایسه الگوریتم های خود استفاده کنید.

امتحانش کن

آیا می خواهید یک بهینه ساز را آزمایش کنید؟ در اینجا یک قطعه پایتون با استفاده از آدم برای به حداقل رساندن یک عملکرد ساده (نه himmelblau ، اما شما این ایده را می گیرید). با تعویض عملکرد ضرر ، آن را برای عملکرد Himmelblau تغییر دهید.

وارد کردن tensorflow به عنوان tf واردات numpy به عنوان np واردات matplotlib.pyplot به عنوان plt

عملکرد از دست دادن ساده (برای تست واقعی با Himmelblau جایگزین کنید)

def Loss_function (x): tf.reduce_sum (x ** 2) را برگردانید # x^2 + y^2 را به حداقل برسانید

متغیرها را اولیه کنید

x = tf.varable ([1.0, 1.0]، dtype = tf.float32) Optimizer = tf.Keras.Optimizer.Adam (یادگیری_RATE = 0.01) مراحل = 200 ضرر = []

حلقه بهینه سازی

برای مرحله در دامنه (مراحل): با tf.gradienttape () به عنوان نوار: ضر [x]) بهینه ساز. [x])) ضرر.

همگرایی طرح

plt.plot (ضررها) plt.xlabel (“مرحله”) plt.ylabel (“ضرر”) plt.title (“بهینه سازی آدام”) plt.savefig ('adam_convergence.png')
نوت بوک: https://www.kaggle.com/datasets/allanwandia/himmelblau

نوشته های مشابه

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

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

دکمه بازگشت به بالا