برنامه ریزی خطی پیشرفته (21715( Advanced Linear Programming Lecture 7 بنام خدا برنامه ریزی خطی پیشرفته (21715( Advanced Linear Programming Lecture 7 Interior Point Techniques مدرس: ناصر سلماسی
برنامه ریزی خطی پیشرفته (21715 ( روش یا الگوریتم های نقاط داخلی یکی از روش های متداول برای حل مساله های بهینه سازی انجام تحقیقات بسیار در این زمینه تاکنون عملکرد فوق العاده این روش ها برای حل مساله های برنامه ریزی خطی در دهه های گذشته انجام تحقیقات برای یافتن کاربردهای این روش برای حل مساله های برنامه ریزی غیر خطی در حال حاضر 2 2
برنامه ریزی خطی پیشرفته (21715 ( جستجو برای پیدا کردن جواب بهینه در داخل منطقه موجه در این روش ها برخلاف الگوریتم سیمپلکس نام گذاری این روش ها با عنوان non-simplex method روش عمومی حل آغاز حل مساله از یک نقطه از داخل منطقه موجه و حرکت به سمت گوشه بهینه برخلاف حرکت به روی مرزها در روش سیمپلکس 3 3
برنامه ریزی خطی پیشرفته (21715 ( روش اولیه- دوگان نوعی از روش نقاط داخلی اولین تحقیق: کارمارکار در سال 1984 جذب علاقه دانشمندان تحقیق در عملیات به روش نقطه های داخلی به دلایل: پیچیدگی روش بصورت چند جمله ای نتایج فوق العاده در آزمایش های مقدماتی 4 4
برنامه ریزی خطی پیشرفته (21715 ( مشاهده مقاله های متعددی در این زمینه در ژورنال های معتبر ابداع روش های متنوع با پیچیدگی از درجه چند جمله ای مثال: پیچیدگی الگوریتم کارمارکار بصورت O(nL) ارایه درجه پیچیدگی برابر برای بهترین الگوریتم ابداع شده برای حل مساله های برنامه ریزی خطی در این زمینه 5 5
برنامه ریزی خطی پیشرفته (21715 ( ارزیابی عملکرد الگوریتم ابداع شده بر اساس زمان حل آنها (تعداد عملیات) برای مساله های واقعی عملکرد بهتر الگوریتم های primal-dual path following و primal and dual affine methods نسبت به سایر الگوریتم ها نبود روش مناسب دیگر برای ارزیابی این الگوریتم ها امکان وجود الگوریتم هایی با پیچیدگی محاسباتی غیر چند جمله ای با عملکرد بهتری نسبت به الگوریتم های چند جمله ای در حل مساله های واقعی 6 6
برنامه ریزی خطی پیشرفته (21715 ( مثال ارایه الگوریتم Ellipsoid با درجه پیچیدگی چند جمله ای در سال 1979 عملکرد بسیار ضعیف محاسباتی الگوریتم 7 7
برنامه ریزی خطی پیشرفته (21715 ( تعاریف ماتریس Diagonal: ماتریس مربعی است که تنها مقادیر قطر اصلی آن غیر صفر باشند. 8 8
برنامه ریزی خطی پیشرفته (21715 ( تقسیم بندی الگوریتم های موجود برای حل مساله های بهینه سازی به کمک الگوریتم های نقاط داخلی: Affine scaling methods Path following methods Potential reduction method Projective methods مشاهده تقسیم بندی های دیگر در مرجع های مختلف 9 9
برنامه ریزی خطی پیشرفته (21715 ( Affine scaling methods ساده ترین روش الگوریتم های نقطه های داخلی انتقال مساله به روش “affine scaling” توسعه مدل پس از روش کارمارکار به منظور ساده سازی آن مشابهت روش به الگوریتم سیمپلکس 10 10
برنامه ریزی خطی پیشرفته (21715 ( Path following methods جستجو برای جواب بهینه در نزدیکی مرزها اساس روش: استفاده از barrier method 11 11
برنامه ریزی خطی پیشرفته (21715 ( Potential reduction method در این روش ها سعی می شود تا کاهشی در بعضی از توابع و یا مکان های ممکن ایجاد شود. 12 12
برنامه ریزی خطی پیشرفته (21715 ( Projective methods در این روش ها که الگوریتم کارمارکار متعلق به آن است به نوعی یک elaborate projective transformation انجام می شود. 13 13
برنامه ریزی خطی پیشرفته (21715 ( Affine scaling methods یک مساله برنامه ریزی خطی و دوگان آن را در نظر بگیرید: فرض ها: P فضای موجه مساله اولیه x یک نقطه موجه داخلی مربوط به این فضا مساله اولیه مساله دوگان Min cʹx Ax=b x≥0 Max pʹb pʹA≤cʹ 14 14
برنامه ریزی خطی پیشرفته (21715 ( Affine scaling methods تجربه های قبلی: بهینه سازی مساله در یک چند وجهی بسته بسیار مشکل تر از بهینه سازی مساله در یک منطقه موجه بیضی شکل توسعه یک روش حل برای مساله بر پایه این نکته با حل مجموعه ای از مساله های بهینه سازی با منطقه موجه بیضی شکل آغاز حل مساله با یک نقطه موجه داخلی مساله X0 > 0 و ایجاد یک بیضی مانند S0 به مرکزیت X0 داخل منطقه موجه 15 15
برنامه ریزی خطی پیشرفته (21715 ( Affine scaling methods بهینه سازی مساله در فضای S0 و پیدا کردن نقطه جدید مانند X1 انتخاب نقطه X1 به عنوان مرکز بیضی جدید و انجام مجدد فرایند قبلی 16 16
برنامه ریزی خطی پیشرفته (21715 ( Affine scaling methods تعبیر دیگر آغاز حل مساله از یک نقطه موجه داخلی تبدیل مساله برنامه ریزی خطی به مساله معادلی که در آن نقطه جاری مساله در حالت اولیه به روش steepest descent method به صورتی انتقال داده می شود که در منطقه موجه مساله تبدیل یافته در نزدیکی مرکز منطقه موجه قرار بگیرد. فرض کنید روی یک نقطه موجه داخلی مربوط به مساله اولیه هستیم. 17 17
برنامه ریزی خطی پیشرفته (21715 ( مساله های برنامه ریزی غیر خطی: استفاده از روش نیوتن برای تعیین جهت حرکت به سمت جواب بهینه در مساله های برنامه ریزی خطی از آنجا که جهت گرادیان همواره ثابت است (برابر با ضرایب تابع هدف) مقادیر ماتریس هیشین برابر با صفر بوده و لذا جهت نیوتن قابل تعریف نیست. در این حالت جهت –C جهتی است که دارای سریع ترین کاهش در مقدار تابع هدف است. 18 18
برنامه ریزی خطی پیشرفته (21715 ( به منظور حفظ موجه بودن، این جهت به روی فضای ماتریس A تصویر می شود. اگر رتبه ماتریس A برابر با تعداد سطرها باشد، تصویر بردار گرادیان به روی منطقه موجه حاصل از ماتریس A از رابطه زیر بدست می آید: P = I – AT(AAT)-1A تصویر بردار گرادیان در منطقه موجه برابر است با: Cp = -Pc 19 19
برنامه ریزی خطی پیشرفته (21715 ( این جهت جهت موجه ای است که دارای بیشترین نرخ کاهش در مقدار تابع هدف است. اگر نقطه کنونی نزدیک به مرکز منطقه موجه باشد می توان انتظار بهبود قابل توجه ای در صورت حرکت در جهت تعیین شده داشت. 20 20
برنامه ریزی خطی پیشرفته (21715 ( اگر نقطه کنونی نزدیک مرزهای منطقه موجه (تعیین شده توسط متغیرهای غیر منفی) باشد نمی توان انتظار بهبود قابل توجه ای در مقدار تابع هدف داشت. 21 21
برنامه ریزی خطی پیشرفته (21715 ( روش ارایه شده در حالتی که نقطه کنونی در نزدیکی مرکز منطقه موجه باشد دارای عملکرد بهتری است. با توجه به این ایده اساس روش Affine بر پایه انتقال مساله برنامه ریزی خطی به یک مساله معادل است که در آن نقطه کنونی در وضعیتی نزدیک تر به مرکز قرار گیرد. در این حالت طول قدم حرکت شده برپایه تصویر بردار گرادیان در مساله انتقال یافته محاسبه می شود. 22 22
برنامه ریزی خطی پیشرفته (21715 ( خصوصیت یک نقطه داخلی این است که تمام مقادیر جواب گسترده آن بزرگتر از صفر باشند. به عنوان مثال نقطه ای مانند e = (1, 1,…, 1) یک نقطه داخلی ایده ال است زیرا فاصله آن از تمامی مرزها مساوی است. به منظور انتقال نقطه ای مانند xk در داخل منطقه موجه به نقطه e مقیاس مساله را با تقسیم آن به اجزای نقطهxk عوض می کنیم. 23 23
برنامه ریزی خطی پیشرفته (21715 ( برای انتقال یک نقطه دلخواه مانند xk به نقطه ای مانند e بصورت زیر عمل می کنیم: X = diag (xk) سپس با مقیاس بندی مجدد نقطه ها بصورت زیر با انتقال نقطه xk به نقطه e متغیرهای x به متغیرهای جدید انتقال داده می شوند. 24 24
برنامه ریزی خطی پیشرفته (21715 ( این انتقال یک نوع انتقال affine scaling است و X در واقع Scaling Matrix نام دارد. توجه کنید: 25 25
برنامه ریزی خطی پیشرفته (21715 ( فرض کنید مساله اصلی در فضای x بصورت زیر باشد: Min z = cTx Ax=b x≥ 0 در این حالت مساله انتقال یافته بصورت زیر قابل ارایه است: 26 26
برنامه ریزی خطی پیشرفته (21715 ( با این انتقال نقطه کنونی در مساله به نقطه e منتقل می شود. در این مرحله حرکت در جهت تصویر steepest-descent بصورت زیر خواهد بود: قدم بعدی در فضای انتقال یافته در امتداد به شرح زیر خواهد بود: 27 27
برنامه ریزی خطی پیشرفته (21715 ( در رابطه اسلاید قبلی α برابر یک طول قدم مناسب است. مرحله آخر هر تکرار تصویر مجدد نقطه جدید در مساله جدید است که بصورت زیر انجام می شود. 28 28
برنامه ریزی خطی پیشرفته (21715 ( بطور خلاصه الگوریتم affine scaling به قرار زیر است: در هر تکرار: مساله اصلی متعلق به فضای x را از روش affine scaling به مساله معادل آن در فضای انتقال دهید. در اثر این انتقال نقطه xk به نقطه e منتقل می شود. از نقطه e در راستای تصویربردار گرادیان در فضای حرکت کنید به نحوی که از منطقه موجه خارج نشوید. نقطه جدید بدست آمده در فضای را به فضای اصلی مساله در فضای xانتقال دهید. 29 29
برنامه ریزی خطی پیشرفته (21715 ( می توان این عملیات را بطور کامل به روی متغیرهای اصلی مساله بصورت زیر انجام داد. اگر خواهیم داشت: 30 30
برنامه ریزی خطی پیشرفته (21715 ( از آنجا که داریم: رابطه فوق بیانگر تصویر رابطه قبلی در فضای AX است. لذا می توان گفت که جهت x∆ عملا همان جهت primal affine scaling است. روش های مختلفی برای تعیین مقدار α (طول قدم) وجود دارد. 31 31
برنامه ریزی خطی پیشرفته (21715 ( از آنجا که تابع هدف با نرخ ثابتی در جهت x∆ نزول می کند در اغلب پیاده سازی ها سعی می شود که طول قدم تا حد ممکن بلند بوده و تا نزدیکی های منطقه موجه باشد. توجه کنید که در مرزها تعدادی از متغیرهای تصمیم دارای مقدار صفر بوده و در این روش تعریف نشده اند. در این حالت ها مقدار α از رابطه زیر قابل محاسبه است: α = γαmax در رابطه فوق αmax بیانگر طول قدمی است که به مرز منطقه موجه می رسد و 0< γ <1 که معمولا معادل 0.9 و یا 0.99 مدنظر گرفته می شود. 32 32
برنامه ریزی خطی پیشرفته (21715 ( از آنجا که αmax بزرگترین طول قدمی است که در رابطه زیر صدق می کند: مقدار آن از رابطه زیر قابل محاسبه است: در حالتی که x≥0∆ و یا x≠0∆ باشد مساله مورد بحث نامحدود خواهد بود. 33 33
برنامه ریزی خطی پیشرفته (21715 ( در صورتی که شرایط بهینگی با تفاوت جزیی دو جواب متوالی مشاهده شود اجرای الگوریتم به پایان می رسد. این مساله هنگامی اتفاق می افتد که جواب موجه دوگانی با duality gap نزدیک به صفر مشاهده شود. اگر فرض کنیم مساله مورد نظر تبهگن نباشد می توان جواب دوگان را تخمین زد. اگر در این صورت جواب (yk, sk) در صورتی که xk به جواب بهینه میل کند به جواب بهینه مساله دوگان میل خواهد کرد. 34 34
برنامه ریزی خطی پیشرفته (21715 ( مثال: مساله برنامه ریزی خطی زیر را به روش primal affine method حل کنید: Minimize z= -x1-2x2 -2x1+x2 ≤ 2 -x1+2x2 ≤ 7 x1 ≤ 3 x1, x2 ≥ 0 35 35
برنامه ریزی خطی پیشرفته (21715 ( جواب بهینه مساله بر اساس الگوریتم سیمپلکس بصورت زیر محاسبه می شود: Z X1 X2 S1 S2 S3 b 1 2 -2 -1 7 3 5 -4 36 36
برنامه ریزی خطی پیشرفته (21715 ( Z X1 X2 S1 S2 S3 b 1 -1.33 5/3 -9 -1/3 2/3 4 -2/3 1/3 2 -1 -2 -13 1/2 5 3 -1/2 3/2 37 37
برنامه ریزی خطی پیشرفته (21715 ( پس از اضافه کردن متغیر های کمکی ماتریس محدودیت ها و ضریب های تابع هدف بصورت زیر خواهند بود: فرض کنید از نقطه داخلی x0 = (0.5, 0.5, 2.5, 6.5, 2.5)T به عنوان نقطه ابتدایی شروع می کنیم. مقدار تابع هدف در این نقطه برابر با -1.5 است. 38 38
برنامه ریزی خطی پیشرفته (21715 ( با توجه به این محاسبه ها ماتریس Scaling ابتدایی بصورت زیر خواهد بود: 39 39
برنامه ریزی خطی پیشرفته (21715 ( با فرض γ=0.999 مقدار α=8.8105 خواهد شد. لذا نقطه جدید بصورت زیر خواهد بود: مقدار تابع هدف در این تکرار برابر با -12.31 خواهد بود. 40 40
برنامه ریزی خطی پیشرفته (21715 ( بعد از سه تکرار تقریب جواب ها بصورت زیر خواهد بود: 41 41
برنامه ریزی خطی پیشرفته (21715 ( جمع بندی الگوریتم های نقطه های داخلی در تکرارهای اول با شتاب زیادی به سمت جواب بهینه حرکت می کنند ولی با نزدیک شدن به گوشه بهینه سرعت حرکت آنها به سمت نقطه بهینه کمتر می شود. می توان با ترکیب این الگوریتم ها با الگوریتم سیمپلکس روش های سریعی برای حل مساله پیدا کرد. 42 42