You are on page 1of 3

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

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

‫الگوریتمهای نیوتن و ‪ steepest decent‬با استفاده از ‪line search‬‬

‫استاد‪ :‬دکتر اخباری‬

‫دانشجو‪ :‬احمد توکل‬

‫شماره دانشجویی‪40103904 :‬‬

‫دو تابع زیر برای بررسی عملکرد الگوریتمها مورد بررسی قرار میگیرند‪:‬‬

‫‪𝑓1 = 100(𝑥1 − 𝑥22 )2 + (1 − 𝑥1 )2‬‬


‫‪𝑓2 = (𝑥1 + 10𝑥2 )2 + 5(𝑥3 − 𝑥4 )2 + (𝑥2 − 2𝑥3 )4 + 10(𝑥1 − 𝑥4 )4‬‬
‫در هر دو الگوریتم شرط توقف این است که فاصله مقدار جواب محاسبه شده در تکرار فعلی از جواب محاسبه‬
‫شده در تکرار قبلی از اپسیلون کمتر باشد که اپسیلون مشابه تمرین دوم برابر با ‪ 10-3‬در نظر گرفته میشود‪:‬‬

‫‪𝑠𝑡𝑜𝑝 𝑐𝑜𝑛𝑑𝑖𝑡𝑖𝑜𝑛: ||𝑥(𝑖) − 𝑥(𝑖 − 1)||2 < 𝜀 = 10−3‬‬


‫در الگوریتم ‪ SD‬جهت حرکت در خالف جهت گرادیان و در الگوریتم نیوتن جهت حرکت برابر با منفی حاصل‬
‫ضرب گرادیان در معکوس ماتریس هسین است‪.‬‬

‫در هر الگوریتم طول گام حرکت توسط الگورتیم ‪ line search‬محاسبه میشود‪ .‬این الگوریتم مطابق‬
‫‪ pseudocode‬های موجود در جزوه شماره ‪ 23‬نوشته شده است‪.‬‬

‫شبه کد مربوط به الگوریتم ‪ line search‬از کتاب نوسدال‬

‫‪1‬‬
‫توجه شود که در شمارش تعداد دفعات محاسبه مقدار تابع‪ ،‬بردار گرادیان و ماتریس هسین هم تعداد محاسبات‬
‫در بخش الگوریتمهای نیوتن و ‪ SD‬و هم تعداد محاسبات در بخش الگوریتم ‪ line search‬و ‪ zoom‬لحاظ‬
‫شده است‪ .‬الگوریتم ‪ SD‬نیازی به تخمین ماتریس هسین ندارد و بنابراین تعداد دفعات محاسبه ماتریس هسین‬
‫در این الگوریتم صفر است‪.‬‬

‫متغیر ‪ x‬در ابتدا با مقادیر نقطه شروع اولیه هر تابع مقدار دهی می شود‪ .‬سپس مقدار و جهت حرکت در هر مرحله با استفاده از‬
‫مقادیر موجود در ‪ x‬محاسبه میشود‪ .‬پس از مشخص شدن جهت و مقدار حرکت‪ ،‬مقدار موجود در ‪ x‬در متغیری به نام ‪x_pre‬‬
‫ذخیره میشود و سپس حرکت انجام شده و مقدار نقطه جدید در همان متغیر ‪ x‬ذخیره میشود‪ .‬به این ترتیب در هر مرحله نقطه‬
‫جواب محاسبه شده در مرحله قبلی در ‪ x_pre‬موجود است و شرط توقف الگوریتم برقراری نامساوی زیر خواهد بود‪:‬‬

‫‪𝑠𝑡𝑜𝑝 𝑐𝑜𝑛𝑑𝑖𝑡𝑖𝑜𝑛: ||𝑥 − 𝑥𝑝𝑟𝑒 ||2 < 𝜀 = 10−3‬‬


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

‫‪SD‬‬ ‫‪Newton‬‬
‫*‪x‬‬ ‫‪1.3496‬‬ ‫‪1.0000‬‬
‫‪1.8226‬‬ ‫‪1.0001‬‬
‫)*‪f1(x‬‬ ‫‪0.1224‬‬ ‫‪-9‬‬
‫‪10 × 8.1254‬‬
‫‪Function evaluations‬‬ ‫‪80‬‬ ‫‪152‬‬
‫‪Gradient evaluations‬‬ ‫‪15‬‬ ‫‪47‬‬
‫‪Hessian evaluations‬‬ ‫‪0‬‬ ‫‪12‬‬
‫‪Number of iterations‬‬ ‫‪2‬‬ ‫‪10‬‬

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

‫‪SD‬‬ ‫‪Newton‬‬
‫*‪x‬‬ ‫‪0.2342‬‬ ‫‪10-3‬‬ ‫‪× -0.0014‬‬
‫‪-0.0234‬‬ ‫‪-3‬‬
‫‪10 × -0.0029‬‬
‫‪0.1119‬‬ ‫‪10-3 × 0.7589‬‬
‫‪0.1212‬‬ ‫‪10-3 × 0.7589‬‬
‫)*‪f2(x‬‬ ‫‪0.0058‬‬ ‫‪10-11 × 9.1114‬‬
‫‪Function evaluations‬‬ ‫‪3980‬‬ ‫‪53‬‬
‫‪Gradient evaluations‬‬ ‫‪1081‬‬ ‫‪43‬‬
‫‪Hessian evaluations‬‬ ‫‪0‬‬ ‫‪11‬‬
‫‪Number of iterations‬‬ ‫‪196‬‬ ‫‪9‬‬

‫در توابع ‪ line search‬و ‪ zoom‬یک پارامتر به نام ‪ control‬در ورودیهای تابع وجود دارد که این پارامتر‬
‫برای انتخاب مقدار ‪ c2‬مناسب در اجرای این توابع لحاظ شده است‪ .‬برای الگوریتم نیوتن مقدار پارامتر‬

‫‪2‬‬
‫‪ control‬برابر با یک داده میشود و ‪ c2=0.9‬خواهد بود و برای ‪ SD‬مقدار ‪ control‬برابر ‪ 2‬است و ‪c2=0.1‬‬
‫انتخاب میشود‪ .‬مقدار ‪ c1‬برای هر دو الگوریتم ‪ 10-4‬در نظر گرفته شده و مقدار آلفا ماکزیمم برابر ‪ 5‬قرار داده‬
‫شده است‪.‬‬

‫‪3‬‬

You might also like