برنامهریزی خطی
برنامهریزی خطی، یا همان بهینهسازی خطی، روشی در ریاضیات است که به پیدا کردن مقدار کمینه یا بیشینه از یک تابع خطی روی یک چندضلعی (یا چندوجهی) محدب میپردازد.[۱] این چندضلعی محدب در حقیقت نمایش نموداری تعدادی محدودیت از نوع نامعادله روی متغیرهای تابع است. به بیان سادهتر، به وسیله برنامهسازی خطی میتوان بهترین نتیجه (مثلاً بیشترین سود یا کمترین هزینه) را در شرایط خاص و با محدودیتهای خاص به دست آورد. محل اصلی استفاده برنامهریزی خطی در مدیریت و اقتصاد است، اما در مهندسی نیز کاربردهای فراوانی دارد. در واقع برنامهریزی خطی بخشی از برنامهریزی ریاضی و تحقیق در عملیات موسوم به علم مدیریت است که اولین بار توسط نیروی هوایی ارتش آمریکا بکار گرفته شد. میتوان گفت حدود یکچهارم کل محاسبات علمی که بر روی رایانه انجام گرفته است، به برنامهریزی خطی و مشتقات آن مربوط میشود.[۲]
تاریخچه
مسئلهٔ حل مجموعهای از نامعادلات خطی از زمان فوریه مطرح بوده است. برنامهریزی خطی به عنوان یک مدل ریاضی در زمان جنگ جهانی دوم شکل گرفت تا خرجها و بازگشتهای مالی را طوری سامان بخشد که به کاهش هزینههای ارتش و افزایش خسارات دشمن بینجامد. این طرح تا سال ۱۹۴۷ سری باقی ماند. پس از جنگ، بسیاری از صنایع به استفاده از آن پرداختند. پایهگذاران این حوزه جورج دانتزیگ منتشرکنندهٔ روش سیمپلکس در سال ۱۹۴۷، جان فون نویمان مطرحکننده نظریه دوگانگی در همان سال، و لئونید کانتروویچ ریاضیدان روس که از تکنیکهای مشابهی پیش از دانتزینگ استفاده کرد و نوبل سال ۱۹۵۷ را برد هستند. نخستین بار در سال ۱۹۷۹ لئونید خاچیان نشان داد که مسئله برنامهریزی خطی در مرتبه زمانی چندجملهای قابل حل است. اما پیشرفت اساسیتر زمانی حاصل شد که نراندرا کارمارکار یک روش نقطه داخلی جدید برای حل این مسائل معرفی کرد. مثال دانتزینگ برای منتصب کردن هفتاد نفر به هفتاد شغل متمایز کارآمدی برنامهریزی خطی را به نمایش میگذارد. توان محاسباتی لازم برای آزمودن همهٔ جایگشتهای ممکن این مسئله بسیار بالاست. این تعداد از تعداد ذرات موجود در عالم بیشتر است. با این حال، پیدا کردن پاسخ بهینه با تبدیل مسئله به یک مسئله برنامهریزی خطی و حل آن با روش سیمپلکس تنها لحظهای طول میکشد.
الگوریتمها

الگوریتم سیمپلکس که توسط جورج دانتزینگ شکل گرفت، مسائل برنامهریزی خطی را به این ترتیب حل میکند که یک جواب قابل قبول در یکی از رئوس چندضلعی فراهم میکند و سپس در راستای اضلاع چندضلعی به طرف رئوسی با مقدار بالاتری از تابع هدف حرکت میکند تا این که به نقطه بهینه برسد. اگرچه در عمل این الگوریتم بسیار کارآمد است و میتواند با در نظر گرفتن برخی پیشگیریهای مربوط به جلوگیری از ایجاد دور، با اطمینان جواب بهینه مطلق را بیابد، اما در حالاتی که به اصطلاح بدترین حالت نامیده میشوند عملکرد بدی دارد. تا حدی که میتوان مسائل برنامهریزی خطی طراحی کرد که روش سیمپلکس برای حلشان در برخی مراحل زمانی از مرتبه زمانی نمایی نیاز داشته باشد. حتی در دورانی دانشمندان نمیدانستند که این مسائل راه حل چندجملهای هم دارند.
سرانجام این مسئله را لئونید خاچیان در سال ۱۹۷۹ با ارائه روش بیضوی حل کرد. این روش در بدترین حالت هم دارای زمان اجرای چندجملهای بود. این روش تأثیر چندانی در جنبهٔ عملی مسئله نداشت چرا که همچنان روش سیمپلکس در همه موارد به جز تعداد محدودی از مسائل بهتر عمل میکرد. اما اهمیت نظری روش خاچیان غیرقابلانکار بود. این روش الهامبخش به وجود آمدن نسل جدیدی از راهحلها شد که به آنها روش نقطه داخلی گفته میشود. در این روشها نقاط داخلی محدوده قابل بررسی متغیرها پیموده میشود و به سمت نقطه بهینه حرکت انجام میگیرد.
برنامهریزی خطی استوار
در بسیاری از مسایل بهینهسازی، تابع هدف یا قیود، تصادفی و در حال تغییر هستند؛ بنابراین پاسخ بهینهٔ مسئله میبایست به گونهای بدست آورده شود که برای تمامی تغییرات توابع بهینه باشد.
یک مسئله برنامهریزی خطی (LP) به صورت زیر فرض میشود: الگو:چپچین الگو:سخ الگو:پایان چپچین اگر در مسئلهٔ فوق پارامترهای ، و C ثابت و یقینی نباشند، حل مسئله، به حل یک مسئلهٔ مقاوم در برابر تغییرات پارامترها تبدیل میشود.
برای حل مسائل بهینهسازی به صورت مقاوم دو رهیافت وجود دارد:
- بدترین حالت
- مدل تصادفی
بدترین حالت
در این روش، بازهٔ تغییرات پارامترها مشخص است و مسئله برای بدترین حالتی که ممکن است رخ دهد، حل میشود.
مثال
در حالت خاص فرض میشود تنها پارامتر متغیر تصادفی باشد. در صورتی که فرض شود، ( عضو یک بیضی باشد).
الگو:چپچین الگو:سخ الگو:پایان چپچین قید نامساوی را میتوان به صورت زیر نوشت: الگو:چپچین , الگو:پایان چپچینالگو:سخ با جایگذاری در خواهیم داشت: الگو:چپچین
الگو:پایان چپچینالگو:سخ در نتیجه مسئله برنامهریزی خطی مقاوم به یک مسئلهٔ SOCP تبدیل میشود: الگو:چپچین الگو:سخالگو:سخ الگو:پایان چپچین
مدل تصادفی
در این روش، متغیر در بازه مشخص نبوده و دارای توزیع آماری است بنابراین بهینهسازی برای بدترین حالت امکانپذیر نبوده و مسئله با توجه به توزیع آماری متغیر حل میشود.
مثال
الگو:چپچین الگو:سخ الگو:پایان چپچین یک بردار گوسی با میانگین و تابع کوواریانس فرض میشود. الگو:چپچین الگو:سخ الگو:سخ الگو:پایان چپچین قید مسئله به صورت زیر خواهد شد: الگو:چپچین الگو:سخ الگو:پایان چپچین تابع CDF متغیر گوسی است. الگو:چپچین
الگو:پایان چپچین با جایگذاری قید بدست آمده در مسئله اصلی، مسئله به صورت زیر خواهد شد: الگو:چپچین الگو:سخ الگو:پایان چپچین مسئلهٔ برنامهریزی خطی مقاوم حاصل به شکل یک مسئلهٔ SOCP است.
پانویس
منابع
- فردریک س. هیلیر- جرالد ج. لیبرمن، ترجمه محمد مدرس و اردوان آصفوزیری، تحقیق در عملیات، چاپ دهم تهران: نشر جوان، ۱۳۸۲
- سلیمانی دامنه- مجید، بهینهسازی خطی ، انتشارات دانشگاه تهران، ۱۴۰۰
پیوند به بیرون
- Guidance on Formulating LP problems
- 0-1 Integer Programming Benchmarks with Hidden Optimum Solutions الگو:Webarchive
- Mathematical Programming Glossary
- A Tutorial on Integer Programming
- The linear programming FAQ
- Linear Programming Survey OR/MS Today
- Linear Programming: Guide to Formulation, Simplex Algorithm, Goal Programming and Excel Solver examples
- George Dantzig
جستارهای وابسته
الگو:الگوریتمهای بهینهسازی الگو:دادههای کتابخانهای
- ↑ Linear Programming - from Wolfram MathWorld
- ↑ هیلیر و لیبرمن، ج 1، ص 29
- ↑ Boyd,Stephen & Vanderberghe, Lieven. Convex Optimization