0% found this document useful (0 votes)
43 views4 pages

MATLAB Optimization Toolbox

MATLAB Optimization Toolbox a quick review

Uploaded by

Farsima Ranjbar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
43 views4 pages

MATLAB Optimization Toolbox

MATLAB Optimization Toolbox a quick review

Uploaded by

Farsima Ranjbar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

‫‪blog.faradars.

org‬‬ ‫مجله فرادرس‬ ‫‪ – BFCS0021‬تقلبنامه بهینهسازی‬

‫جعبه ابزار بهینهسازی در متلب‬

‫بهینهسازی مبتنی بر مساله با جعبه ابزار بهینهسازی (‪)Optimization Toolbox‬‬

‫در جعبه ابزار بهینهسازی موجود برای زبان متلب (‪ ،)Optimization Toolbox‬از یک نحو (‪ )Syntax‬طبیعی برای تعریف و‬

‫حل مسائل بهینهسازی خطی‪ ،‬خطی متغیر صحیح مختلط‪ ،‬درجه دو‪ ،‬کمترین مربعات خطی و غیرخطی استفاده میشود‪.‬‬

‫‪ .۱‬تعریف مساله‬

‫شی ‪ ،OptimizationProblem‬یک مساله بهینهسازی را توصیف میکند و شامل متغیرهایی برای بهینهسازی‪ ،‬قیود‬

‫(‪ ،)Constraints‬تابع هدف (‪ )Objective Function‬و تعیین بیشینه یا کمینه بودن آن است‪ .‬برای ساخت یک‬

‫‪ OptimizationProblem‬با پیروی از «گردش کار مبتنی بر مساله» (‪ ،)Problem-Based Workflow‬از تابع‬

‫‪ 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

)Constraints( ‫) و قیود‬Object( ‫ تعریف عبارات برای استفاده در هدف‬.۳

‫) را باید به عنوان‬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;

‫ یک عبارت ریاضی بر حسب‬،OptimizationExpression


assignmentProb.ObjectiveSense = "minimize;"
‫متغیرهای بهینهسازی برای تابع هدف و یا برای مقایسه قیود‬
assignmentProb.Objective = totalCost;
.‫است‬

‫ تعریف قیود‬.۵

)Relational Operator( »‫ با یک «عملگر رابطهای‬OptimizationConstraint ‫ برای تعیین‬،OptimizationExpressions

.‫ترکیب و به مساله تخصیص داده میشود‬

:‫مثال‬

responseProb.Constraints.ellipse = x.^2/2 + y.^2/4 <= 1;

responseProb.Constraints.xyconstr = xyexpr >= 1;

assignmentProb.Constraints.oneTaskPerEmployee = sumByTask <= 1;

assignmentProb.Constraints.oneEmployeePerTask = sumByEmployee == 1;

.‫ به این لینک مراجعه فرمایید‬،‫برای مشاهده دیگر «تقلبنامههای» مجله فرادرس‬


‫‪blog.faradars.org‬‬ ‫مجله فرادرس‬ ‫‪ – BFCS0021‬تقلبنامه بهینهسازی‬

‫‪ .۶‬بازبینی‬

‫شی بهینهسازی‪ ،‬یعنی ‪ OptimizationProblem‬که مساله بهینهسازی را تعریف میکند‪ ،‬با استفاده از ‪،showexpr‬‬

‫‪ showbounds ،showconstr‬و ‪ showproblem‬قابل نمایش است‪.‬‬

‫با استفاده از مرورگر فضای کار نیز میتوان ‪ OptimizationProblem‬را مشاهده کرد‪.‬‬

‫‪ .۷‬حل و تحلیل‬

‫چنانکه پیش از این اشاره شد‪ OptimizationProblem ،‬یک شی بهینهسازی است که مساله بهینهسازی را تعریف میکند‪.‬‬

‫این شی با استفاده از تابع ‪ optimproblem‬ساخته میشود‪ .‬برای حل مساله بهینهسازی از ‪ solve‬استفاده میشود‪ .‬با حل‬

‫مساله به وسیله ‪ ،solve‬مقادیر راه حل و هدف باز گردانده میشوند و پس از آن‪ solver ،‬توقف پیددا میکندد‪ .‬همچندین‪،‬‬

‫‪ solve‬یک نقطه اولیه برای مسائل غیرخطی نیز فراهم میکند‪.‬‬

‫برای مشاهده دیگر «تقلبنامههای» مجله فرادرس‪ ،‬به این لینک مراجعه فرمایید‪.‬‬
‫‪blog.faradars.org‬‬ ‫مجله فرادرس‬ ‫‪ – BFCS0021‬تقلبنامه بهینهسازی‬

‫مثال‪:‬‬

‫;‪x0.x = 0‬‬

‫;‪x0.y = 0‬‬

‫)‪[sol,fval,exitflag] = solve(responseProb,x0‬‬

‫از ‪ solve‬میتوان همراه با گزینههای بهینهسازی (‪ )optimoptions‬استفاده کرد‪.‬‬

‫مثال‪:‬‬

‫;)‪o = optimoptions(assignProb,"MaxTime",10‬‬

‫)‪sol = solve(assignmentProb,"Options",o‬‬

‫مجموعه آموزشهای الگوریتمهای بهینهسازی هوشمند (‪+‬کلیک کنید)‬

‫برای مشاهده دیگر «تقلبنامههای» مجله فرادرس‪ ،‬به این لینک مراجعه فرمایید‪.‬‬

‫جهت آگاهی از آخرین تقلبنامههای منتشر شده‪ ،‬در کانال تلگرام مجله فرادرس عضو شوید‪.‬‬

‫تهیه و تنظیم‪ :‬مجله فرادرس‬

‫منبع‬

‫برای مشاهده دیگر «تقلبنامههای» مجله فرادرس‪ ،‬به این لینک مراجعه فرمایید‪.‬‬

You might also like