90 likes | 311 Views
Linear Programming Supplements (Optional). Standard Form LP (a.k.a. First Primal Form). Strictly ≤. All x j 's are non-negative. Transforming Problems into Standard Form. Min c T x Max - c T x Max ( c T x + constant) Max c T x
E N D
Standard Form LP (a.k.a. First Primal Form) Strictly ≤ All xj's are non-negative
Transforming Problems into Standard Form • Min cTxMax -cTx • Max (cTx + constant)Max cTx • Replace a constraint like ∑aijxj≥bi by -∑aijxj≤ -bi • Replace a constraint like ∑aijxj=bi by ∑aijxj≤bi and -∑aijxj≤ -bi • If xjis allowed to take on negative value, replace xi by the difference of two nonnegative variables, says xi = ui – vi, where ui ≥ 0 and vi ≥ 0.
Example of transforming a problem into Standard Form Replace x1 by u1– v1
Dual Problem Every primal LP problem in the form Maximize cTx subject to Ax≤b, x ≥ 0 has a corresponding dual problem in the form Minimize bTy subject to ATy ≥ c, y ≥ 0 Theorem on Primal and Dual Problems If x satisfies the constraints of the primal problem and y satisfies the constraints of its dual, then cTx≤bTy. Consequently, if cTx=bTy, then x and y are solutions of the primal problem and the dual problem respectively.
Dual Problem Duality Theorem If the original problem has a solution x*, then the dual problem has a solution y*; furthermore, cTx*=bTy*. If the original primal problem contains much more constraints than variables (i.e., m >> n), then solving the dual problem may be more efficient. (Less constraints implies less corner points to check) The dual problem also offers a different interpretation of the problem (Maximize profit == Minimize cost)
MATLAB LP solver – linprog() Partial help manual generated by MATLAB: X=LINPROG(f,A,b) attempts to solve the linear programming problem: min f'*x subject to: A*x <= b x X=LINPROG(f,A,b,Aeq,beq) solves the problem above while additionally satisfying the equality constraints Aeq*x = beq. X=LINPROG(f,A,b,Aeq,beq,LB,UB) defines a set of lower and upper bounds on the design variables, X, so that the solution is in the range LB <= X <= UB. Use empty matrices for LB and UB if no bounds exist. Set LB(i) = -Inf if X(i) is unbounded below; set UB(i) = Inf if X(i) is unbounded above. X=LINPROG(f,A,b,Aeq,beq,LB,UB,X0) sets the starting point to X0. This option is only available with the active-set algorithm. The default interior point algorithm will ignore any non-empty starting point. …
MATLAB example % Turn into minimization problem c = [ -150 -175 ]'; A = [ 7 11; 10 8; 1 0; 0 1 ]; b = [77 80 9 6]'; LB = [0 0]'; % There is no equality constraints xmin = linprog(c, A, b, [], [], LB) Optimization terminated. xmin = 4.8889 3.8889
Integer LP Problem • If the variables can only take integer values, we cannot take the integers closest to the solution of the corresponding LP problem as the solution. • Integer Programming (IP) or Integer Linear Programming (ILP) problems are NP-hard problems. • Some of the algorithm for solving IP problems include branch-and-bound, branch-and-cut.