برنامهریزی خطی، یا همان بهینه سازی خطی، روشی در ریاضیات است که به پیدا کردن مقدار کمینه یا بیشینه از یک تابع خطی روی یک چندضلعی محدب میپردازد.[۱] این چند ضلعی محدب در حقیقت نمایش نموداری تعدادی محدودیت از نوع نامعادله روی متغیرهای تابع است. به بیان سادهتر به وسیله برنامهسازی خطی میتوان بهترین نتیجه (مثلاً بیشترین سود یا کمترین هزینه) را در شرایط خاص و با محدودیتهای خاص به دست آورد. محل اصلی استفاده برنامهریزی خطی در اقتصاد است، اما در مهندسی نیز کاربردهای فراوانی دارد. میتوان گفت حدود یکچهارم کل محاسبات علمی که بر روی رایانه انجام گرفتهاست، به برنامهریزی خطی و مشتقات آن مربوط میشود.[۲]
تاریخچه
مسئلهٔ حل مجموعهای از نامعادلات خطی از زمان فوریه مطرح بودهاست. برنامهریزی خطی به عنوان یک مدل ریاضی در زمان جنگ جهانی دوم شکل گرفت تا خرجها و بازگشتهای مالی را طوری سامان بخشد که به کاهش هزینههای ارتش و افزایش خسارات دشمن بینجامد. این طرح تا سال 1947 سری باقی ماند. پس از جنگ، بسیاری از صنایع به استفاده از آن پرداختند. پایهگذاران این حوزه جورج دانتزیگ منتشرکنندهٔ روش سیمپلکس در سال 1947 ، جان نیومن مطرحکننده نظریه دوگانگی در همان سال، و لئونید کانتروویچ ریاضیدان روس که از تکنیکهای مشابهی پیش از دانتزینگ استفاده کرد و نوبل سال 1957 را برد هستند. نخستین بار در سال 1979 لئونید خاچیان نشان داد که مسئله برنامهریزی خطی در مرتبه زمانی چندجملهای قابل حل است. اما پیشرفت اساسیتر زمانی حاصل شد که نراندرا کارمارکار یک روش نقطه داخلی جدید برای حل این مسائل معرفی کرد. مثال دانتزینگ برای منتصب کردن هفتاد نفر به هفتاد شغل متمایز کارآمدی برنامهریزی خطی را به نمایش میگذارد. توان محاسباتی لازم برای آزمودن همهٔ جایگشتهای ممکن این مسئله بسیار بالاست. این تعداد از تعداد ذرات موجود در عالم بیشتر است. با این حال، پیدا کردن پاسخ بهینه با تبدیل مسئله به یک مسئله برنامهریزی خطی و حل آن با روش سیمپلکس تنها لحظهای طول میکشد.
الگوریتم ها
مجموعهای از محدودیت ها (خطوط مرزی) به صورت نامعادلات خطی روی دو متغیر منجر به ایجاد منطقهای از مقادیر ممکن برای آن دو متغیر روی صفحه میشود. این منطقه برای مسائل حلشدنی به شکل یک چندضلعی محدب است.
الگوریتم سیمپلکس که توسط جورج دانتزینگ شکل گرفت، مسائل برنامهریزی خطی را به این ترتیب حل میکند که یک جواب قابل قبول در یکی از رئوس چندضلعی فراهم میکند و سپس در راستای اضلاع چندضلعی به طرف رئوسی با مقدار بالاتری از تابع هدف حرکت میکند تا این که به نقطه بهینه برسد. اگرچه در عمل این الگوریتم بسیار کارآمد است و میتواند با در نظر گرفتن برخی پیشگیریهای مربوط به جلوگیری از ایجاد دور، با اطمینان جواب بهینه مطلق را بیابد، اما در حالاتی که به اصطلاح بدترین حالت نامیده میشوند عملکرد بدی دارد. تا حدی که میتوان مسائل برنامهریزی خطی طراحی کرد که روش سیمپلکس برای حلشان در برخی مراحل زمانی از مرتبه زمانی نمایی نیاز داشته باشد. حتی در دورانی دانشمندان نمیدانستند که این مسائل راه حل چندجملهای هم دارند.
سرانجام این مسئله را لئونید خاچیان در سال 1979 با ارائه روش بیضوی حل کرد. این روش در بدترین حالت هم دارای زمان اجرای چندجملهای بود. این روش تأتیر چندانی در جنبهٔ عملی مسئله نداشت چرا که همچنان روش سیمپلکس در همه موارد به جز تعداد محدودی از مسائل بهتر عمل میکرد. اما اهمیت نظری روش خاچیان غیرقابلانکار بود. این روش الهامبخش به وجود آمدن نسل جدیدی از راهحلها شد که به آنها روش نقطه داخلی گفته میشود. در این روشها نقاط داخلی محدوده قابل بررسی متغیرها پیموده میشود و به سمت نقطه بهینه حرکت انجام میگیرد.
Linear programming
From Wikipedia, the free encyclopedia
Jump to: navigation, search
In mathematics, linear programming (LP) is a technique for optimization of a linear objective function, subject to linear equality and linear inequality constraints. Informally, linear programming determines the way to achieve the best outcome (such as maximum profit or lowest cost) in a given mathematical model and given some list of requirements represented as linear equations.
More formally, given a polyhedron (for example, a polygon and a real-valued affine function defined on this polyhedron, a linear programming method will find a point on the polyhedron where this function has the smallest (or largest) value if such point exists, by searching through the polyhedron vertices.
Linear programs are problems that can be expressed in canonical form:
Maximize
Subject to
represents the vector of variables (to be determined), while and are vectors of (known) coefficients and is a (known) matrix of coefficients. The expression to be maximized or minimized is called the objective function ( in this case). The equations are the constraints which specify a convex polytope over which the objective function is to be optimized.
Linear programming can be applied to various fields of study. Most extensively it is used in business and economic situations, but can also be utilized for some engineering problems. Some industries that use linear programming models include transportation, energy, telecommunications, and manufacturing. It has proved useful in modeling diverse types of problems in planning, routing, scheduling, assignment, and design.
Contents
1 History of linear programming
2 Uses
3 Standard form
3.1 Example
4 Augmented form (slack form)
4.1 Example
5 Duality
5.1 Example
6 Covering-Packing Dualities
6.1 Examples
7 Complementary slackness
8 Theory
9 Algorithms
10 Open problems and recent work
11 Integer unknowns
12 Solvers and scripting (programming) languages
13 See also
14 References
15 Further reading