توضیحات در مورد fminsearch و fminsearchbnd :

fminsearch یک الگوریتم بهینه‌سازی است که برای حل مسائل بهینه‌سازی بدون محدودیت‌ها (unconstrained optimization problems) طراحی شده است. این تابع به‌طور پیش‌فرض هیچ‌گونه محدودیت مرزی (bound constraints) را قبول نمی‌کند. به این معنی که برای استفاده از آن، باید تمام مقادیر متغیرها در فضای آزاد و بدون هیچ‌گونه محدودیتی تغییر کنند.

اما اگر نیاز به اعمال محدودیت‌های مرزی داشته باشیم، می‌توانیم از روش‌های تبدیل ساده‌ای استفاده کنیم که مسئله بهینه‌سازی محدود شده را به یک مسئله بدون محدودیت تبدیل کنند.

در این راستا، fminsearchbnd به‌عنوان نسخه‌ای از fminsearch معرفی شده است که به شما امکان می‌دهد محدودیت‌های مرزی را به متغیرهای ورودی اعمال کنید. این تابع به‌طور داخلی از یک تبدیل برای متغیرها استفاده می‌کند تا محدودیت‌ها را اعمال کند. به‌عنوان مثال، برای محدودیت‌های تک‌جانبه (مانند محدودیت‌های پایین)، از یک تبدیل مربع استفاده می‌شود و برای محدودیت‌های دوطرفه (بالا و پایین) از تابع سینوس (sin(x استفاده می‌شود.

ویژگی‌های مهم fminsearchbnd:

  1. محدودیت‌های مرزی: در تابع fminsearchbnd، محدودیت‌ها به‌صورت نابرابری‌های مرزی (inequalities) تعریف می‌شوند که مقادیر مرزی را نیز می‌پذیرند، به این معنا که مقادیر متغیرها می‌توانند دقیقا روی مرز قرار بگیرند، اما هیچ ارزیابی تابعی خارج از محدوده‌های تعیین‌شده اجازه داده نمی‌شود.

  2. تعیین دقیق مقادیر متغیرها: در صورتی که بخواهید مقدار یک متغیر را دقیقاً ثابت نگه‌دارید، می‌توانید هر دو مرز (پایین و بالا) را برابر با یک مقدار خاص تعیین کنید. این کار باعث می‌شود که متغیر مورد نظر ثابت بماند.

مثال‌های کاربردی:

  1. حل مسئله بدون محدودیت با fminsearch: در این مثال، یک تابع Rosenbrock تعریف می‌شود و سپس با استفاده از fminsearch، حل بدون محدودیت به‌دست می‌آید:

    rosen = @(x) (1-x(1)).^2 + 105*(x(2)-x(1).^2).^2;

    % حل بدون محدودیت با استفاده از fminsearch
    fminsearch(rosen, [3 3])

    نتیجه:

    ans =
    1.0000 1.0000
  2. حل مسئله با محدودیت پایین (بدون محدودیت بالا) با fminsearchbnd: در این مثال، محدودیت پایین برای هر دو متغیر تعیین می‌شود، و محدودیتی برای مقدار بالای متغیرها در نظر گرفته نمی‌شود:

    fminsearchbnd(rosen, [2.5 2.5], [2 2], [])

    نتیجه:

    ans =
    2.0000 4.0000
  3. حل مسئله با محدودیت پایین و محدودیت بالا برای یک متغیر: در این مثال، محدودیت پایین برای هر دو متغیر تعیین می‌شود و محدودیت بالا برای متغیر دوم (x(2) اعمال می‌شود:

    fminsearchbnd(rosen, [2.5 2.5], [2 2], [inf 3])

    نتیجه:

    ans =
    2.0000 3.0000

معرفی fminsearchcon:

در حال حاضر، fminsearchcon نیز به این بسته اضافه شده است. این ابزار به‌طور ویژه برای مسائل بهینه‌سازی غیرخطی با محدودیت‌های غیرخطی طراحی شده است. این تابع به شما این امکان را می‌دهد که محدودیت‌های غیرخطی را نیز در مدل بهینه‌سازی خود اعمال کنید، که برای مسائل پیچیده‌تر بسیار مفید است.

جمع‌بندی:

  • fminsearch برای مسائل بهینه‌سازی بدون محدودیت کاربرد دارد.
  • fminsearchbnd اجازه می‌دهد تا محدودیت‌های مرزی به متغیرها اعمال شوند.
  • fminsearchcon به‌طور خاص برای مسائل بهینه‌سازی با محدودیت‌های غیرخطی طراحی شده است.
  • در fminsearchbnd، محدودیت‌ها به‌صورت نابرابری‌ها اعمال می‌شوند و می‌توان متغیرها را به‌طور دقیق ثابت نگه داشت.

این توابع برای حل مسائل بهینه‌سازی در MATLAB بسیار مفید هستند و می‌توانند در کاربردهای مختلف مهندسی، علوم داده و تحلیل‌های عددی استفاده شوند.

دسته بندی: برچسب ها: