You are on page 1of 3

‫باسمه تعالی‬

‫گزارش تمرین شبیه‌سازی چهارم درس بهینه‌سازی عددی‬


‫الگوریت ‌م ‪ BFGS‬با استفاده از ‪line search‬‬
‫استاد‪ :‬دکتر اخباری‬
‫دانشجو‪ :‬احمد توکل‬
‫شماره دانشجویی‪40103904 :‬‬
‫دو تابع زیر برای بررسی عملکرد الگوریتم‌ مورد بررسی قرار می‌گیرند‪:‬‬
‫‪2 2‬‬
‫) ‪f 1=100 ( x 1−x 2 ) + ( 1−x 1‬‬
‫‪2‬‬

‫‪2‬‬ ‫‪2‬‬ ‫‪4‬‬ ‫‪4‬‬


‫) ‪f 2=( x 1+ 10 x 2 ) +5 ( x 3−x 4 ) + ( x 2−2 x 3 ) +10 ( x 1−x 4‬‬

‫شرط توقف الگوریتم این است که نرم گرادیان تابع در نقطه محاسبه شده از یک مقدار مشخص کوچکتر‬
‫باشد که این حد آستانه مشابه تمرین دوم و سوم برابر با ‪ 3-10‬در نظر گرفته می‌شود‪:‬‬
‫¿ ‪stop condition : :∨|g ( xi )|∨¿2 < ε=10‬‬
‫‪−3‬‬

‫الگوریتم ‪ BFGS‬مطابق با ‪ pseudocode‬موجود در جزوه جلسه ‪ 24‬نوشته شده است و مراحل الگوریتم‬
‫در کد مشابه همین شبه کد شماره گذاری شده‌اند‪.‬‬
‫در مقداردهی اولیه‪ ،‬ماتریس هسین در نقطه شروع الگوریتم محاسبه شده و از معکوس این ماتریس به‬
‫عنوان اولین تخمین معکوس ماتریس هسین برای ادامه دادن الگوریتم استفاده می‌شود‪ .‬در گام نخست‬
‫الگوریتم جهت حرکت به صورت حاصل ضرب منفی معکوس تخمین ماتریس هسین در بردار گرادیان‬
‫محاسبه می‌شود‪ .‬در گام دوم طول قدم مناسب به کمک ‪ line search‬محاسبه می‌شود که الگورتیم ‪line‬‬
‫‪ search‬مشابه تمرین قبلی است‪ .‬در گام سوم حرکت انجام می‌شود‪ .‬توجه شود که در این گام مقدار نقطه‬
‫قبلی در متغیر ‪ x_pre‬ذخیره می‌شود و نقطه جدید که از انجام حرکت حاصل می‌شود در متغیر ‪ x‬قرار‬
‫می‌گیرد‪ .‬در گام چهارم گرادیان تابع در نقطه جدید محاسبه می‌شود‪ .‬مقدار گرادیان در نقطه قبلی در متغیر‬
‫‪ grad_pre‬و مقدار گرادیان در نقطه جدید در متغیر ‪ grad‬ذخیره می‌شوند‪ .‬در گام پنجم مقدار گاما با‬
‫استفاده از مقادیر گرادیان فعلی و قبلی محاسبه می‌شود و هم‌چنین با استفاده از مقادیر نقطه فعلی و قبلی‪،‬‬
‫مقدار دلتا محاسبه می‌شود‪ .‬در گام ششم مقدار معکوس ماتریس ماتریس هسین تخمین زده می‌شود‪.‬‬
‫نتایج الگوریتم ‪ BFGS‬برای دو تابع داده شده مطابق با جدول زیر است‪:‬‬
‫‪f1‬‬ ‫‪f2‬‬
‫*‬
‫‪x‬‬ ‫‪0.0000‬‬
‫‪1.0000‬‬ ‫‪0.0000‬‬
‫‪1.0000‬‬ ‫‪0.0043‬‬

‫‪1‬‬
0.0043
* -11
10 × 9.0949 10-9 × 9.3113
f(x )
Function evaluations 50 63
Gradient evaluations 41 58
Hessian evaluations 11 18
Number of iterations 8 15

2 ‫ باید توجه شود که در تمرین‬.‫ را در کنار هم مشاهده و مقایسه کرد‬4 ‫ و‬3 ‫ و‬2 ‫حال می‌توان نتایج تمارین‬
‫ لحاظ نشده است و تنها تعداد محاسبات‬GSS ‫تعداد محاسبه‌های تابع و گرادیان و هسین مربوط به بخش‬
.‫ شمرده شده‌اند‬SD ‫مربوط به خود الگوریتم‌های نیوتن و‬
:‫برای تابع اول نتایج الگوریتم‌ها مطابق جدول زیر است‬
SD, GSS Newton, GSS SD, Newton, BFGS,
line search line search Line search

x* 1.3504 1.0000 1.3496 1.0000 1.0000


1.8247 1.0000 1.8226 1.0001 1.0000
F1(x*) 0.1229 1.3916×10-23 0.1224 -9
10 × 8.1254 -11
10 × 9.0949
Function 2 2 80 152 50
evaluations
Gradient 2 2 15 47 41
evaluations
Hessian 0 2 0 12 11
evaluations
Number of 1 1 2 10 8
iterations

:‫برای تابع دوم نتایج الگوریتم‌ها مطابق جدول زیر است‬


SD, GSS Newton, GSS SD, Newton, BFGS,
line line search Line search
search

x* 0.2306 0.0001×10-3 0.2342 10-3 × -0.0014 0.0000


-0.0230 0.0001×10-3 -0.0234 10-3 × -0.0029 0.0000

2
‫‪0.1103‬‬ ‫‪0.6829×10-3‬‬ ‫‪0.1119‬‬ ‫‪10-3 × 0.7589‬‬ ‫‪0.0043‬‬
‫‪0.1192‬‬ ‫‪0.6829×10-3‬‬ ‫‪0.1212‬‬ ‫‪10-3 × 0.7589‬‬ ‫‪0.0043‬‬
‫)*‪f2(x‬‬ ‫‪0.0055‬‬ ‫‪7.8982×10-12‬‬ ‫‪0.0058‬‬ ‫‪10-11 × 9.1114‬‬ ‫‪10-9 × 9.3113‬‬
‫‪Function‬‬ ‫‪181‬‬ ‫‪12‬‬ ‫‪3980‬‬ ‫‪53‬‬ ‫‪63‬‬
‫‪evaluations‬‬
‫‪Gradient‬‬ ‫‪181‬‬ ‫‪12‬‬ ‫‪1081‬‬ ‫‪43‬‬ ‫‪58‬‬
‫‪evaluations‬‬
‫‪Hessian‬‬ ‫‪0‬‬ ‫‪12‬‬ ‫‪0‬‬ ‫‪11‬‬ ‫‪18‬‬
‫‪evaluations‬‬
‫‪Number of‬‬ ‫‪180‬‬ ‫‪11‬‬ ‫‪196‬‬ ‫‪9‬‬ ‫‪15‬‬
‫‪iterations‬‬

‫توجه شود که در ‪ line search‬برای الگوریتم ‪ SD‬از مقدار ‪ c2 = 0.1‬و برای الگوریتم‌های ‪ Newton‬و‬
‫‪ BFGS‬از مقدار ‪ c2 = 0.9‬استفاده شده است‪ .‬مقدار ‪ c1‬برای هر دو الگوریتم ‪ 4-10‬در نظر گرفته شده و‬
‫مقدار آلفا ماکزیمم برابر ‪ 5‬قرار داده شده است‪.‬‬

‫‪3‬‬

You might also like