Linear programming

advertisement
Class II – Simplex method.
Linear programming,
Linear programming, sometimes known as linear optimization, is the problem of maximizing or
minimizing a linear function over a convex polyhedron specified by linear and non-negativity
constraints. Simplistically, linear programming is the optimization of an outcome based on some
set of constraints using a linear mathematical model. Linear programming theory falls within
convex optimization theory
Standard form is the usual and most intuitive form of describing a linear programming
problem. It consists of the following three parts:

A linear function to be maximized
e.g. maximize

Problem constraints of the following form
e.g.

Non-negative variables
e.g.
,
The problem is usually expressed in matrix form, and then becomes:
maximize
subject to
Other forms, such as minimization problems, problems with constraints on alternative
forms, as well as problems involving negative variables can always be rewritten into an
equivalent problem in standard form.
A feasible solution is a solution for which all the constraints are satisfied.
An infeasible solution is a solution for which at least one constraint is violated.
The feasible region is the collection of all feasible solutions.
An optimal solution is a feasible solution that has the most favorable value of the
objective function.
Augmented form (slack form)
Linear programming problems must be converted into augmented form before being
solved by the simplex algorithm. This form introduces non-negative slack variables to
replace inequalities with equalities in the constraints. The problem can then be written in
the following form:
Maximize Z in:
where
are the newly introduced slack variables, and Z is the variable to be maximized.
Duality
Every linear programming problem, referred to as a primal problem, can be converted
into a dual problem, which provides an upper bound to the optimal value of the primal
problem. In matrix form, we can express the primal problem as:
maximize
subject to
The corresponding dual problem is:
minimize
subject to
where y is used instead of x as variable vector.
There are two ideas fundamental to duality theory. One is the fact that the dual of a dual
linear program is the original primal linear program. Additionally, every feasible solution
for a linear program gives a bound on the optimal value of the objective function of its
dual. The weak duality theorem states that the objective function value of the dual at any
feasible solution is always greater than or equal to the objective function value of the
primal at any feasible solution. The strong duality theorem states that if the primal has an
optimal solution, x*, then the dual also has an optimal solution, y*, such that cTx*=bTy*.
A linear program can also be unbounded or infeasible. Duality theory tells us that if the
primal is unbounded then the dual is infeasible by the weak duality theorem. Likewise, if
the dual is unbounded, then the primal must be infeasible. However, it is possible for both
the dual and the primal to be infeasible (See also Farkas' lemma).
Algorithms
A series of linear constraints on two variables produces a region of possible values for those
variables. Solvable problems will have a feasible region in the shape of a simple polygon.
The simplex algorithm, developed by George Dantzig, solves LP problems by
constructing an admissible solution at a vertex of the polyhedron and then walking along
edges of the polyhedron to vertices with successively higher values of the objective
function until the optimum is reached. Although this algorithm is quite efficient in
practice and can be guaranteed to find the global optimum if certain precautions against
cycling are taken, it has poor worst-case behavior: it is possible to construct a linear
programming problem for which the simplex method takes a number of steps exponential
in the problem size. In fact, for some time it was not known whether the linear
programming problem was solvable in polynomial time (complexity class P).
This long standing issue was resolved by Leonid Khachiyan in 1979 with the introduction
of the ellipsoid method, the first worst-case polynomial-time algorithm for linear
programming. To solve a problem which has n variables and can be encoded in L input
bits, this algorithm uses O(n4L) arithmetic operations on numbers with O(L) digits. It
consists of a specialization of the nonlinear optimization technique developed by Naum
Z. Shor, generalizing the ellipsoid method for convex optimization proposed by Arkadi
Nemirovski, a 2003 John von Neumann Theory Prize winner, and D. Yudin.
Khachiyan's algorithm was of landmark importance for establishing the polynomial-time
solvability of linear programs. The algorithm had little practical impact, as the simplex
method is more efficient for all but specially constructed families of linear programs.
However, it inspired new lines of research in linear programming with the development
of interior point methods, which can be implemented as a practical tool. In contrast to the
simplex algorithm, which finds the optimal solution by progresses along points on the
boundary of a polyhedral set, interior point methods move through the interior of the
feasible region.
In 1984, N. Karmarkar proposed a new interior point projective method for linear
programming. Karmarkar's algorithm not only improved on Khachiyan's theoretical
worst-case polynomial bound (giving O(n3.5L)), but also promised dramatic practical
performance improvements over the simplex method. Since then, many interior point
methods have been proposed and analyzed. Early successful implementations were based
on affine scaling variants of the method. For both theoretical and practical properties,
barrier function or path-following methods are the most common recently.
The current opinion is that the efficiency of good implementations of simplex-based
methods and interior point methods is similar for routine applications of linear
programming.
LP solvers are in widespread use for optimization of various problems in industry, such
as optimization of flow in transportation networks, many of which can be transformed
into linear programming problems only with some difficulty.
‫‪ Linear Programmin‬תכנות לינארי‬
‫הרעיון הכללי‪ :‬ברצוננו להביא פונקציה לינארית כלשהי למינימום‪/‬מקסימום תחת אילוצים לינאריים מסוימים‬
‫(שוויונים‪/‬אי שוויונים)‪.‬‬
‫בעיית הדיאטה (דוגמא)‪:‬‬
‫נתונים‪ n :‬סוגי מזון‪.‬‬
‫במזון מסוג ‪j‬‬
‫יש‬
‫‪cj‬‬
‫קלוריות‪.‬‬
‫במזון מסוג ‪j‬‬
‫יש‬
‫‪a ij‬‬
‫יחידות לק"ג מויטמין מסוג‬
‫מויטמין מסוג ‪i‬‬
‫צריך לאכול לפחות‬
‫‪bi‬‬
‫‪i‬‬
‫‪.‬‬
‫יחידות ליום‪.‬‬
‫המטרה‪ :‬להרכיב תפריט יומי שיש בו מינימום קלוריות‪ ,‬אך עדיין לשמור על תזונה מאוזנת‪ ,‬כלומר – לצרוך את‬
‫כל סוגי המזון וכמות המספיקה של ויטמינים‪.‬‬
‫הגדרה פורמלית של הבעיה‪ :‬נגדיר משתנה ‪ 0‬‬
‫‪ x j‬שמציין את הכמות של סוג מזון‬
‫‪j‬‬
‫‪n‬‬
‫להביא למינימום את הפונקציה‬
‫‪j‬‬
‫‪c x‬‬
‫‪j‬‬
‫תחת האילוצים‪:‬‬
‫‪j 1‬‬
‫‪a11x1  a12 x2  ...  a1n xn  b1‬‬
‫‪a21x1  a22 x2  ...  a2 n xn  b2‬‬
‫…‬
‫‪am1 x1  am 2 x2  ...  amn xn  bm‬‬
‫ובאופן כללי‪:‬‬
‫‪ bi‬‬
‫‪n‬‬
‫‪j‬‬
‫‪a x‬‬
‫‪ij‬‬
‫‪i‬‬
‫‪j 1‬‬
‫תכנות לינארי – הגדרה‪:‬‬
‫נתונים‪c1 , c2 , ... , cn  R :‬‬
‫‪b1 , b2 , ... , bn  R‬‬
‫‪1  i  m, 1  j  n aij  R‬‬
‫‪x1 , x2 , ... , xn  R‬‬
‫בתפריט‪ .‬ברצוננו‬
‫‪n‬‬
‫המטרה‪ :‬למצוא פתרון לבעיית האופטימיזציה‪min/max:‬‬
‫‪j‬‬
‫‪c x‬‬
‫‪j‬‬
‫תחת מגבלה של שוויונים ואי שוויונים‬
‫‪j 1‬‬
‫מהצורה‪:‬‬
‫‪a11x1  a12 x2  ...  a1n xn  b1‬‬
‫‪a21x1  a22 x2  ...  a2 n xn  b2‬‬
‫‪...‬‬
‫‪am1 x1  am 2 x2  ...  amn xn  bm‬‬
‫הערה‪ :‬אם נרצה ש ‪x1 , x2 , ... , xn‬‬
‫‪.1‬‬
‫כל האי שוויונים הם מהצורה‬
‫‪‬‬
‫יהיו אי שליליים‪ ,‬נכניס כאן את הדרישה‬
‫‪‬‬
‫‪0‬‬
‫‪ LP x j‬בהצגה קנונית‪:‬‬
‫(גדול או שווה)‪.‬‬
‫נהפוך ‪ +‬ל – על מנת לשנות את כיוון האי שוויון‪:‬‬
‫‪a11x1  a12 x2  ...  a1n xn  b1‬‬
‫‪‬‬
‫‪ a11x1  a12 x2  ...  a1n xn  b1‬‬
‫במקום ‪‬‬
‫‪‬‬
‫‪.2‬‬
‫כל המשתנים‬
‫‪‬‬
‫נשתמש בשני אי שוויונים מהצורה‬
‫‪xj‬‬
‫‪‬‬
‫ו‪.‬‬
‫הם אי שליליים‪.‬‬
‫נפצל כל משתנה‬
‫‪xj‬‬
‫לשני משתנים‪:‬‬
‫‪y j‬‬
‫‪‬‬
‫ו ‪ , y j‬שניהם אי שליליים‪ .‬נציג את‬
‫פתרון עם המשתנים החדשים‪ ,‬ואז נציב במשוואה ונקבל את‬
‫‪.3‬‬
‫‪xj‬‬
‫‪ x j‬כ ‪ y j‬‬
‫‪‬‬
‫‪ . y j‬נמצא‬
‫כפי שרצינו‪.‬‬
‫המטרה היא מציאת מינימום‪.‬‬
‫‪‬‬
‫נהפוך את הסימנים מ‪ +‬ל‪ -‬וההיפך וע"י כך את בעיית המקסימום לבעיית מינימום‪.‬‬
‫‪ LP‬בהצגה מטריציונית‪:‬‬
‫‪c  (c1 , c2 , ... , cn )   n‬‬
‫‪A  (aij )  R nm‬‬
‫המטרה‪:‬‬
‫‪x‬‬
‫‪t‬‬
‫‪b  (b1 , b2 , ... , bn )   n‬‬
‫‪x  ( x1 , x2 , ... , xn )   n‬‬
‫‪1  i  m, 1  j  n‬‬
‫‪ min c‬תחת האילוצים‪:‬‬
‫‪x  0 , Ax  b‬‬
‫(בכל קואורדינטה)‪.‬‬
‫בעיית ‪( Max-Flow‬דוגמא)‪:‬‬
‫נתון גרף מכוון ) ‪G  (V , E‬‬
‫‪ .‬לצלע‬
‫‪ u , v  V , e  uv‬יש קיבולת ‪cuv‬‬
‫מחפשים פונקצית זרימה ‪f : E  R ‬‬
‫‪.‬‬
‫‪ .‬נתונים מקור‬
‫‪s‬‬
‫ומטרה (או בור) ‪.t t‬‬
‫דרישות‪:‬‬
‫‪.1‬‬
‫מכל צומת ‪s, t ‬‬
‫‪ f wv )  0‬‬
‫‪vw‬‬
‫‪( f‬‬
‫יוצאת ונכנסת אותה כמות זרימה (שטף)‪ .‬כלומר –‬
‫‪  f wv ‬‬
‫‪w‬‬
‫‪vw‬‬
‫‪f‬‬
‫‪w‬‬
‫‪wvE‬‬
‫‪v  s, t‬‬
‫‪w‬‬
‫‪vwE‬‬
‫‪e  vw E f vw  0‬‬
‫‪.2‬‬
‫הזרימה היא אי שלילית‪ ,‬כלומר –‬
‫‪.3‬‬
‫הזרם קטן או שווה לקיבולת של הצלע‪ ,‬כלומר ‪-‬‬
‫פונקצית המטרה‪:‬‬
‫)‬
‫‪ws‬‬
‫‪f‬‬
‫‪‬‬
‫‪sw‬‬
‫‪f‬‬
‫‪w‬‬
‫‪wsE‬‬
‫‪ cvw‬‬
‫‪. f vw‬‬
‫(‪ , max‬כלומר – למקסם את הזרם שיוצא מ ‪s‬‬
‫פחות הזרם שחוזר אליו‪.‬‬
‫‪w‬‬
‫‪swE‬‬
‫)‪Weighted Set Cover (WSC‬‬
‫נתונה סדרת איברים‬
‫של‬
‫‪si‬‬
‫‪ , U‬אוסף של תתי קבוצות ‪ S  {s1 , s2 , ... , st }  U‬ופונקצית משקל ‪csi  R‬‬
‫המשקל‬
‫‪.‬‬
‫‪ C‬של קבוצות מ ‪S‬‬
‫צ"ל‪ :‬אוסף חלקי‬
‫המהווה כיסוי של ‪ . U‬כלומר‪,‬‬
‫‪s U‬‬
‫‪.‬‬
‫‪sC‬‬
‫נגדיר תדירות של איבר‬
‫‪j‬‬
‫‪ :‬מספר הקבוצות בהן‬
‫‪j‬‬
‫מופיע‬
‫= )‪f ( j‬‬
‫ונגדיר‬
‫*‪f‬‬
‫להיות המקסימלי מביניהם‪.‬‬
‫נתרגם את הבעיה לבעיית ‪:LP‬‬
‫נגדיר לכל קבוצה‬
‫‪sS‬‬
‫פונקצית המטרה תהיה‪:‬‬
‫תחת האילוצים‪:‬‬
‫‪1‬‬
‫‪s‬‬
‫משתנה‬
‫‪1 s  C‬‬
‫‪xs  ‬‬
‫‪0 s  C‬‬
‫‪c x‬‬
‫‪min‬‬
‫‪s s‬‬
‫‪x‬‬
‫‪sS‬‬
‫‪e  U :‬‬
‫‪s | es‬‬
‫כלומר ‪ -‬לכל איבר‪ ,‬נתבונן בכל הקבוצות שמכילות אותו‪ ,‬ונדרוש שלפחות אחת מהן תקבל ‪ ,1‬כלומר תהיה‬
‫שייכת ל ‪ , C‬ולכן האיבר‬
‫‪e‬‬
‫נשים לב כי ההגבלה על‬
‫‪xs‬‬
‫מכוסה‪.‬‬
‫אינה לינארית‪ .‬לבעיה כזו קוראים )‪ Integer Linear Programming (ILP‬שהיא‬
‫בעיה של תכנון לינארי בשלמים ולא ב ‪R‬‬
‫‪.‬‬
‫הערה‪ :‬רב הבעיות שנתמודד איתן הן ‪ NP‬קשות ולכן גם באמצעות ‪ LP‬נגיע רק לקירוב ולא לפתרון מלא‪.‬‬
‫נמיר את הבעיה לבעיית ‪ LP‬באופן הבא‪:‬‬
‫נוסיף אילוץ נוסף על פונקצית המטרה והאילוצים המקוריים (לעיל)‪ ,‬במקום ש ‪xs‬‬
‫יהיה משתנה בדיד (או ‪ 0‬או‬
‫‪ )1‬נשתמש באילוץ הבא‪0  xs  1 :‬‬
‫ובכך קיבלנו בעיה ‪ ,LP‬שבאמצעותה נוכל לפתור את בעיית ה‪ ILP‬שלנו‪.‬‬
‫הערה‪ :‬האי שוויון הימני‬
‫‪xs  1‬‬
‫מיותר‪ ,‬התנאי‬
‫‪0  xs‬‬
‫מספיק‪ .‬זאת משום שאם קיבלנו‬
‫את ערכו ל‪ .1-‬אם נעשה זאת‪ ,‬לא ייתכן שפגמנו באילוצים (אם‬
‫‪1‬‬
‫‪1‬‬
‫‪ xs‬לא ייתכן שהסכום‬
‫שני‪ ,‬הקטנו את פונקצית המטרה‪ ,‬ומכאן שבפתרון האופטימלי בכל מקרה‬
‫‪1‬‬
‫‪ x s‬ניתן להוריד‬
‫‪1‬‬
‫‪s‬‬
‫‪x‬‬
‫) ומצד‬
‫‪s | es‬‬
‫‪. xs‬‬
‫נתבונן ב ‪ )F=fractional( OPTF‬הפתרון האופטימלי של בעיית ה‪ ,LP‬נטען שערכו מהוה חסם תחתון לבעיית‬
‫ה‪ ,ILP‬כלומר ‪-‬‬
‫‪ OPT‬‬
‫‪ . OPTF‬אי שוויון זה מתקיים מכיוון שכל פתרון של ‪ ILP‬פותר את ‪ ,LP‬ולכן – אם‬
‫לוקחים את הפתרון המינימלי של ‪ ,ILP‬בפרט הוא יהיה ‪ ‬מהפתרון המינימלי של בעיית ה‪.LP‬‬
‫דוגמא לבעיית ‪:LP‬‬
‫מפעל לצעצועים מייצר משאיות ואופנועים‪.‬‬
‫את הצעצועים מייצרים שני פועלים – אחד יוצק את החלקים‬
‫והשני מרכיב אותם‪ .‬אנחנו נניח שיש מלאי של חלקים יצוקים‪,‬‬
‫ולכן העבודה שלהם בלתי תלויה‪ ,‬הפועל השני יכול להתחיל‬
‫לעבוד גם אם הפועל הראשון לא יוצק חלקים‪.‬‬
‫כל פועל עובד לכל היותר ‪ 000‬דקות ביום‪.‬‬
‫יציקת חלקי משאית דורשת ‪ 4‬דקות‪ ,‬ואילו יציקת חלקי אופנוע‬
‫דורשת דקה ‪.1‬‬
‫הרכבת משאית דורשת ‪ 2‬דקות‪ ,‬ואילו הרכבת אופנוע דורשת ‪3‬‬
‫דקות‪.‬‬
‫הרווח על משאית הוא ‪ ₪ 2‬והרווח על אופנוע הוא ‪ 1 ₪‬בלבד‪.‬‬
‫נסמן ב ‪ x1‬את כמות המשאיות וב ‪x2‬‬
‫) ‪max( 2x1  x2‬‬
‫פונקצית המטרה‪:‬‬
‫תחת האילוצים‪:‬‬
‫את כמות האופנועים שנייצר ביום‪.‬‬
‫‪I‬‬
‫‪4x1  x2  900‬‬
‫(פועל היציקה)‬
‫‪II‬‬
‫‪2x1  3x2  900‬‬
‫‪III‬‬
‫‪x1  0, x2  0‬‬
‫(פועל ההרכבה)‬
‫כיצד נמצא פתרון?‬
‫האילוץ ה‪ III‬מגדיר שהפתרון נמצא ברביע החיובי‪.‬‬
‫האילוץ ה‪ I‬מגדיר שהפתרון נמצא מתחת לקו‬
‫מתחת לקו ‪2x1  3x2  900‬‬
‫הגדרה‪ :‬קו הגובה של פונקציה‬
‫‪4 x1  x2  900‬‬
‫ובאותו אופן האילוץ ה‪ II‬מגדיר שהפתרון נמצא‬
‫‪ .‬חיתוך שלושת האיזורים האלו נותן לנו את מרחב הפתרונות החוקיים‪.‬‬
‫‪f : Rd ‬‬
‫‪ R‬‬
‫מוגדר ע"י‬
‫}‪ . lc  {x  R d | f ( x)  c‬כלומר – כל ה ‪x‬‬
‫ים‬
‫שנותנים את התוצאה ‪. c‬‬
‫נרצה את הנקודה בחיתוך הנ"ל שנמצאת על קו הגובה שממקסמת את פונקצית המטרה‪ .‬בכל מקום בפנים‬
‫החיתוך‪ ,‬ניתן להזיז את קו הגובה לכיוון ימין ולהעלות את ערך הפונקציה‪ .‬מכאן שהפתרון האופטימלי נמצא‬
‫ב"פינה" של החיתוך‪ .‬נבדוק את הערך בכל אחת מה"פינות" ונבחר את הערך המקסימלי‪.‬‬
‫במקרה שלנו‪ ,‬הפינה הנכונה היא בחיתוך של שני הגרפים‪ ,‬שם‬
‫‪ x2  180‬‬
‫‪ , x1‬והרווח הוא ‪.040‬‬
‫באופן כללי נגדיר אלגוריתם לפתרון ‪:LP‬‬
‫עבור ‪ LP‬ב ‪n‬‬
‫משתנים עם‬
‫‪m‬‬
‫אילוצים‪ ,‬נבחן כל ‪ n‬יה של אילוצים‪ ,‬ונמצא את נקודות החיתוך של האילוצים‬
‫בשוויונים (במקום באי שוויונים)‪ .‬אם נק' החיתוך באזור המותר‪ ,‬נחשב את פונקצית המטרה בנקודה‪ ,‬ונבחר את‬
‫הנקודה הטובה ביותר‪.‬‬
‫נשים לב שזמן הריצה במקרה זה הוא‬
‫‪ m‬‬
‫‪ ‬‬
‫‪n ‬‬
‫שהוא לענייננו זמן ריצה אקספוננציאלי‪.‬‬
‫נשים לב שייתכנו אילוצים שאינם משנים את הפתרון כלל‪( ,‬קו ‪ 1‬בציור)‪ ,‬אילוצים שגורמים לכך שאין פתרון‬
‫כלל כי יש סתירה בין האילוצים (למשל‪ ,‬אם קו ‪ 1‬בציור ביטא אילוץ של "גדול מ") או כי הפתרון האופטימלי‬
‫שואף לאינסוף (למשל‪ ,‬אם כל האילוצים הם אילוצים של "גדול מ")‪.‬‬
‫‪Simplex method‬‬
‫‪Example:‬‬
‫‪Max z  300x1  250x2  0s1  0s2  0s3‬‬
‫‪2x1  x2  s1  40‬‬
‫‪Subject to:‬‬
‫‪Max z  300x1  250x2‬‬
‫‪2x1  x2  40‬‬
‫‪x1  3x2  s2  45‬‬
‫‪x1  3x2  45‬‬
‫‪x1  s3  12‬‬
‫‪x1  12‬‬
‫‪x1, x2 , s1, s2 , s3  0‬‬
‫‪‬‬
‫‪Subject to:‬‬
‫‪x1, x2  0‬‬
‫‪Definitions:‬‬
‫‪‬‬

o With the exception of the variables that appear on the left (i.e., the
variables that we have been referring to as the dependent variables) are
called basic variables. Those on the right (i.e., the independent variables)
are called nonbasic variables. The solutions we have obtained by setting
the nonbasic variables to zero are called basic feasible solutions.
General task
n
   c jx j
o Maximize :
j=1
n
a x
o subject to

j 1
ij
j
 bi ; i  1..m
x j  0; j  1..n
Definition
n
o Slack Variables:

wi  bi   aij x j ; i  1..m
j 1
Other notation
( x1 , . . . , xn , w1 , . . . , wm )  ( x1 , . . . , xn , xn1 , . . . , xnm ).
n
   c jx j
j=1
n
xni  bi   aij x j ; i  1..m
j 1
xi  0; i  1..n  m

Each dictionary has m basic variables and n nonbasic variables. Let B denote the
collection of indices from {1, 2, . . . , n  m} corresponding to the basic
variables, and let N denote the indices corresponding to the nonbasic variables.
Initially, we have N  {1, 2, . . . , n} and B  {n  1, n  2, . . . , n  m} .

In the following steps, we have:
     c jx j  
jN
xi  bi   aij x j ; i  B
jN

When pivoting, we must enlarge

thus choose the k with ck maximal and
positive, and ensure that all x stay positive, thus choose a i so that
i  B, bi  aik xk  0
In other words:

xk  min  bi / aik  or xk  max aik i / bi
iB , aik  0


iB

1
Identify the Incoming and Outgoing Variables
Incoming Variable -An incoming variable is currently a nonbasic variable (the
current value is zero) and will be changed to a basic variable (introduced into the
solution).
o -For the maximization problems, the incoming variable is the variable
with the largest positive value(coefficient) in the c j  z j row.
o - For the minimization problems, the incoming variable is the variable
with the largest negative value in the c j  z j row.


Outgoing Variable -An outgoing variable is currently a basic variable that is first
reduced to zero when increasing the value of the incoming variable and will be
changed to a nonbasic variable (removed from the solution).
o To determine the outgoing variable, compute the ratio of the Quantity to
the coefficient of the incoming variable for each basis row.
o For both the maximization and minimization problems, the outgoing
variable is the basic variable with the smallest ratio.
o The coefficient of the incoming variable in the outgoing row is called the
pivot element.
Summary: The Simplex Procedure
o Step 1: Standardize the problem.
o Step 2: Generate an Initial Solution.
o Step 3: Test for Optimality. If the solution is optimal, go to Step 6.
Otherwise, go to Step 4.
o Step 4: Identify the Incoming and Outgoing Variables.
o Step 5: Generate an Improved Solution. Go to Step 3.
o Step 6: Check for other Optimal Solutions.
Initialization

If b is negative:
( x1 , . . . , xn , w1 , . . . , wm )  ( x1 , . . . , xn , xn 1 , . . . , xn  m ).
n
   c j x j     x0
j=1
n
xn i  bi   aij x j  x0 ; i  1..m
j 1
xi  0; i  0..n  m

Example:
max imize - 2 x1 - x2
subject to - x1  x 2  -1
- x1 - 2 x2  - 2
x2  1
x1 , x2  0.
Unboudness

Example:
  5  x3 - x1
x2  5  2 x3 - 3 x1
x4  7 - 4 x1
x5  x1.

If xk  max  aik i / bi  is non-positive – the problem diverges.

THEOREM 3.4. For an arbitrary linear program in standard form, the following
statements are true:
o (1) If there is no optimal solution, then the problem is either infeasible or
unbounded.
o (2) If a feasible solution exists, then a basic feasible solution exists (nonebase values are zero).
iB
o (3) If an optimal solution exists, then a basic optimal solution exists.
Download