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 nm המטרה: 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 wvE v s, t w vwE e vw E f vw 0 .2 הזרימה היא אי שלילית ,כלומר – .3 הזרם קטן או שווה לקיבולת של הצלע ,כלומר - פונקצית המטרה: ) ws f sw f w wsE cvw . f vw ( , maxכלומר – למקסם את הזרם שיוצא מ s פחות הזרם שחוזר אליו. w swE )Weighted Set Cover (WSC נתונה סדרת איברים של si , Uאוסף של תתי קבוצות S {s1 , s2 , ... , st } Uופונקצית משקל csi R המשקל . Cשל קבוצות מ S צ"ל :אוסף חלקי המהווה כיסוי של . Uכלומר, s U . sC נגדיר תדירות של איבר j :מספר הקבוצות בהן j מופיע = )f ( j ונגדיר *f להיות המקסימלי מביניהם. נתרגם את הבעיה לבעיית :LP נגדיר לכל קבוצה sS פונקצית המטרה תהיה: תחת האילוצים: 1 s משתנה 1 s C xs 0 s C c x min s s x sS e U : s | es כלומר -לכל איבר ,נתבונן בכל הקבוצות שמכילות אותו ,ונדרוש שלפחות אחת מהן תקבל ,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 | es . 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 , xn1 , . . . , xnm ). n c jx j j=1 n xni 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 jN xi bi aij x j ; i B jN 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 iB , aik 0 iB 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). iB o (3) If an optimal solution exists, then a basic optimal solution exists.