MATLAB Optimization Toolbox
MATLAB Optimization Toolbox
در جعبه ابزار بهینهسازی موجود برای زبان متلب ( ،)Optimization Toolboxاز یک نحو ( )Syntaxطبیعی برای تعریف و
حل مسائل بهینهسازی خطی ،خطی متغیر صحیح مختلط ،درجه دو ،کمترین مربعات خطی و غیرخطی استفاده میشود.
.۱تعریف مساله
شی ،OptimizationProblemیک مساله بهینهسازی را توصیف میکند و شامل متغیرهایی برای بهینهسازی ،قیود
( ،)Constraintsتابع هدف ( )Objective Functionو تعیین بیشینه یا کمینه بودن آن است .برای ساخت یک
optimproblemبه منظور نگهداری «هدف» (« ،)Objectقیود» ( )Constraintsو متغیرهای مربوطه استفاده میشود.
مثال:
assignmentProb = optimproblem
responseProb = optimproblem
.۲تعریف متغیر
متغیرهای بهینهسازی با optimvarساخته میشوند .نام متغیر ،ابعاد اختیاری ،حدود ( )Boundsو نوع ( )Typeمتغیرهای
بهینهسازی را در این مرحله میتوان تنظیم کرد .همچنین ،اندیسگذاری با متغیرهای صحیح یا رشتهها انجام میشود.
مثال:
;)"x = optimvar("x
;)"y = optimvar("y
;]"employees = ["a","b","c
;]"tasks = ["t1","t2","t3
)"assign = optimvar("assign",employees,tasks,"LowerBound",0,"UpperBound",1,"Type","integer
برای مشاهده دیگر «تقلبنامههای» مجله فرادرس ،به این لینک مراجعه فرمایید.
blog.faradars.org مجله فرادرس – تقلبنامه بهینهسازیBFCS0021
) را باید به عنوانExpressions( دیگر عبارتها، اکنونOptimizationExpression در این وهله باید مستقیما یک
fcn2optimexpr تابعهای متلب تعریف و با استفاده از .تعیین شود که نسبت بین چندجملهایها است
:مثال
response = -3*(y - x.^3 - x).^2 - (x - 4/3).^2;
a = 4;
totalCost = sum(sum(cost.*assign));
xyfcn = @(x,y,a)exp(y)*a*x.^2;
sumByEmployee = sum(assign,2);
xyexpr = fcn2optimexpr(xyfcn,x,y,a);
sumByTask = sum(assign,1);
تعیین هدف.۴
responseProb.ObjectiveSense = "maximize;" استفاده از اسکالر با باید هدف تابع .کرد تعیین
. تنظیم شودOptimizationExpression
responseProb.Objective = response;
تعریف قیود.۵
:مثال
assignmentProb.Constraints.oneEmployeePerTask = sumByEmployee == 1;
.۶بازبینی
شی بهینهسازی ،یعنی OptimizationProblemکه مساله بهینهسازی را تعریف میکند ،با استفاده از ،showexpr
با استفاده از مرورگر فضای کار نیز میتوان OptimizationProblemرا مشاهده کرد.
.۷حل و تحلیل
چنانکه پیش از این اشاره شد OptimizationProblem ،یک شی بهینهسازی است که مساله بهینهسازی را تعریف میکند.
این شی با استفاده از تابع optimproblemساخته میشود .برای حل مساله بهینهسازی از solveاستفاده میشود .با حل
مساله به وسیله ،solveمقادیر راه حل و هدف باز گردانده میشوند و پس از آن solver ،توقف پیددا میکندد .همچندین،
برای مشاهده دیگر «تقلبنامههای» مجله فرادرس ،به این لینک مراجعه فرمایید.
blog.faradars.org مجله فرادرس – BFCS0021تقلبنامه بهینهسازی
مثال:
;x0.x = 0
;x0.y = 0
)[sol,fval,exitflag] = solve(responseProb,x0
مثال:
;)o = optimoptions(assignProb,"MaxTime",10
)sol = solve(assignmentProb,"Options",o
برای مشاهده دیگر «تقلبنامههای» مجله فرادرس ،به این لینک مراجعه فرمایید.
جهت آگاهی از آخرین تقلبنامههای منتشر شده ،در کانال تلگرام مجله فرادرس عضو شوید.
منبع
برای مشاهده دیگر «تقلبنامههای» مجله فرادرس ،به این لینک مراجعه فرمایید.