حل یک مسئله ماکزیمم (بیشنه) سازی توسط کدهای برنامه یک روش مینیمم سازی

http://www.icasite.info/icasite/post_i/ques_ans.png
معمولاً کدهای رایگانی که به صورت عمومی در مورد یک روش بهینه سازی منتشر می شوند، برای حل مسائل کمینه سازی نوشته شده اند. به عنوان مثال کدهای رایگان الگوریتم رقابت استعماری و یا الگوریتم ژنتیک موجود در وبسیات محاسبات تکاملی، مختص مسائل بهینه سازی هستند. اما این به این معنی نیست که از آنها، نمی توان برای حل مسائل بیشینه سازی استفاده کرد. دلیل اصلی این نوع نوشتن کدها، این هست که مسائل بهینه سازی کمینه سازی و بیشینه سازی، هیچ تفاوتی با هم نداشته و به سادگی قابل تبدیل به هم هستند و چون غالب مسائل بهینه سازی بصورت مینیمم سازی هستند، این کدها نیز، به این صورت منتشر می شوند.
یکی از دوستان سوالی را در مورد نحوه حل مسئله ماکزیمم سازی توسط کدهای الگوریتم رقابت استعماری پرسیده بودند، که این پست، در پاسخ به سوال ایشان تهیه شده است. اگر شما نیز به سوال مشابهی برخورد کرده اید، در ادامه مطلب با ما همراه باشید.

سوال:
من میخواهم مقدار ماکزیمم یک تابع را با استفاده از الگوریتم رقابت استعماری پیدا کنم من فایل های آموزشی و کدهای برنامه را از اینترنت دانلود کردم. برای پیدا کردن مقدار مینیم تابع مشکل ندارم. ولی برای ماکزیممش دقیقا نمیدونم کجاهای برنامه رو تغییر بدم. در صورت امکان راهنمایی کنید.
پاسخ:
یک مسئله بهینه سازی از نوع کمینه سازی را در نظر میگریم.
f(x)
نقطه بهینه ای که ما به دنبالش هستیم را با x* نشان می دهیم.
x* = argmin{f(x)};
نقطه ای که تابع f را مینیمم می کند، تابع (f-) را بیشینه خواهد کرد و برعکس. بنابراین، برای حل یک مسئله بهینه سازی از نوع ماکزیمم سازی، کافی است در تابع هزینه، تابع f را با منفی آن جایگزین کنیم. هر جوابی که الگوریتم برای مینیمم سازی تابع (f-) داد، در حقیقت، پاسخ ماکزیمم سازی تابع f خواهد بود.
البته روش عمومی فوق، تنها روش ممکنه نیست. مثلاً اگر مطمئن باشیم که تابع هزینه ما (f) همیشه مقداری مثبت برای تمام xها خواهد بود، یعنی:
f(x)>0
در چنین حالتی می توانیم به عنوان مثال از معکوس تابع نیز استفاده کنیم. یعنی به جای یافتن نقطه ماکزیمم تابع f، از یک کد بهینه سازی مینیمم ساز برای یافتن نقطه مینیمم تابع زیر استفاده کنیم.
f‘(x) = 1/f(x);
در کدهای الگوریتم رقابت استعماری و غالب الگوریتم بهینه سازی دیگر، برنامه تابع هزینه بصورت جدا از کدها قرار دارد. بنابراین، اعمال موارد فوق تنها با اضافه کردن یک منها یا معکوس کردن در رابطه نهایی تابع هزینه، میسر خواهد بود. برای کسب راهنمایی در مورد کدهای الگوریتم رقابت استعماری به لینک زیر مراجعه نمایید.

کدهای الگوریتم رقابت استعماری و فیلم آموزش استفاده از آنها

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

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

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