430 likes | 452 Views
Linear Programming and Simplex Algorithm. Reference: Numerical Recipe Sec. 10.8. Content. Linear programming problems Simplex algorithm QSOpt solver LP Applications Collision detection Melodic similarity Underdetermined linear systems. The Diet Problem.
E N D
Linear Programming and Simplex Algorithm Reference: Numerical Recipe Sec. 10.8
Content • Linear programming problems • Simplex algorithm • QSOpt solver • LP Applications • Collision detection • Melodic similarity • Underdetermined linear systems
The Diet Problem • Dietician preparing a diet consisting of two foods, A and B. Minimum requirement: protein 60g; fat 24g; carbohydrate 30g Looking for minimum cost diet
Cp. NLP subject to Linear Programming
The Problem Maximize N: dimension of x M: number of constraints (M = m1+m2+m3) Subject to
Theory of Linear Optimization Terminology: Feasible vector Feasible basic vector Optimal feasible vector
Theory (cont) • Feasible region is convex and bounded by hyperplanes • Feasible vectors that satisfy N of the original constraints as equalities are termed feasible basic vectors. • Optimal occur at boundary (gradient vector of objective function is always nonzero) • Combinatorial problem: determining which N constraints (out of the N+M constraints) would be satisfied by the optimal feasible vector
Simplex Algorithm (Dantzig 1948) • A series of combinations is tried to increase the objective function • Number of iterations less than O(max(M,N)) • Worst case complexity is exponential (in number of variables); yet has polynomial smoothed complexity (and works well in practice)
The Canonical Problem Maximize N: dimension of x M: number of constraints (M = m1+m2+m3) Subject to I. II. III.
Contains a GUI and a callable library QSopt [ref]
LP Format Example Problem smallExample Minimize obj: 0.60x1 + 0.40x2 Subject to c1: 12x1 + 6x2 >= 24 30x1 + 15x2 >= 30 Bounds 0 <= x1 0 <= x2 End Somehow x1 >= 0 x2 >= 0 Doesn’t work!? BNF for QSOpt scripts
Primal problem Dual problem Duality
Duality • If a linear program has a finite optimal solution then so does the dual. Furthermore, the optimal values of the two programs are the same. • If either problem has an unbounded optimal solution, then the other problem has no feasible solutions.
The Problem Under-determined system (infinite number of solutions) Find the solution with minimum magnitude (i.e., closest to origin)
(-2,0,0) (1,-1,1) Example Approach 1: find complete solution (-2,0,0) subtract its projection along (1,-1,1)
Linear Programming Solution • Most simplex algorithm assume nonnegative variables • Set
Solved by QSopt The real minimum (-4/3, -2/3, 2/3) The LP constraint is not exactly ||x||2 (but ||x||) This problem can also be solved by SVD (singular value decomposition)
LP in CD (narrow phase, ref) • A pair of convex objects: each facet represented by the plane inequality aix+biy+ciz di • If two sets of inequality (from two convex objects) define a feasible region, then a collision is detected • The type of optimization (min|max) and the objective function used is irrelevant.
Transportation Distance as a Measure to Melodic Similarity Ref: Typke et al. 2003
Example Partially matched
EMD as Linear Program Solve by simplex algorithm
EMD for Melodic Similarity • Ground distance: Euclidean distance • Scale time coordinate (so that they are comparable) • Transposition: transpose one of the melodies so that the weighted average pitch is equal (not optimum but acceptable)
HW: Verify planar CD using LP Warning: Non-negative assumption (for some solvers)!!
5 6 2 4 1 3 Verify planar CD using LP.
LP Solvers • Lp_solve: MILP • QSopt • GLPK
Contains a GUI and a callable library QSopt [ref]
LP Format Example Problem smallExample Minimize obj: 0.60x1 + 0.40x2 Subject to c1: 12x1 + 6x2 >= 24 30x1 + 15x2 >= 30 Bounds 0 <= x1 0 <= x2 End [weird] Somehow x1 >= 0 x2 >= 0 Doesn’t work!?
value: objective function x: solution vector (columns) pi: dual variables slack: slack variables rc: reduced cost In our applications, we don’t really care about pi, slack, and rc. Set them to NULL Accessing a Solution
QS_MAX or QS_MIN cmatind # of nonzeros in jth column Location of start entry
QSnew_row QSadd_rows QSnew_col QSadd_cols QSdelete_row QSdelete_col QSchange_coef QSchange_objcoef QSchange_rhscoef QSchange_sense See reference manuals for more details (Ch.5) Use QSwrite_prob to verify the change Modify an LP Problem