Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
The AIMMS Presolver Marcel Hunting AIMMS Optimization Specialist Webinar, July 15, 2015 Overview > Introduction > Preprocessing techniques • Basic • Advanced > Activating the AIMMS presolver > Analyse infeasible problems 2 Why Preprocessing? > Speed up the solving process > Get better solutions > Improve numerical stability > Detect infeasibilities 3 Why should AIMMS do Preprocessing? > Not needed for linear problems because the linear solvers (CPLEX, Gurobi, CBC) do very advanced preprocessing > But useful for nonlinear problems because many nonlinear solvers do no or very basic preprocessing • Exceptions: KNITRO, BARON > Optimization algorithms implemented in AIMMS can benefit from it • Outer Approximation (MINLP) • Multi-Start (NLP) 4 Basic Preprocessing Techniques > Delete simple constraints • Constraint x ≤ 100 becomes a bound > Delete fixed variables > Remove doubletons • Constraint x = 2 y > Delete duplicate constraints > Delete redundant constraints • Constraint sqrt(x) + y ≤ 20 can be removed if x ≤ 100 and y ≤ 5 5 Advanced Preprocessing Techniques > Bounds tightening (feasibility based) • Variable x: range [0,inf) range [10,55] • Linear & nonlinear constraints > Linearize quadratic constraints • Multiplication of a binary variable with a bounded variable > Improve coefficients • For models with binary variables 6 Feasibility Based Bound Tightening Constraint: L ≤ x + f(y1,…,yn) ≤ U Assume for some lf and uf: lf ≤ f(y1,…,yn) ≤ uf Then: x ≥ L - uf x ≤ U - lf 7 FBBT: Example x: range [10,100] y: range [5,8] z: range [1,2] Constraint: x + 4 y - 2 z3 = 60 x = 60 – 4 y + 2 z3 ≤ 60 – 20 + 16 = 56 x = 60 – 4 y + 2 z3 ≥ 60 – 32 + 12 = 30 x: range [30,56] 8 FBBT: Expression Tree 𝑒𝑧 tighten bounds variables 3 ∈ [0,8] 𝑒 𝑧 ∈ [0,2] 𝑧 ∈ (−inf,ln(2)] 9 FBBT: Expression Tree 𝑒𝑧 3 ∈ [8,64] 𝑒 𝑧 ∈ [2,4] tighten bounds expression 𝑧 ∈ [ln(2),ln(4)] 10 FBBT: Binary Operator 𝑥𝑦 + 𝑒 𝑧 3 ∈ [2,6] 𝑥𝑦 ∈ [−2,2] 𝑥 ∈ [−2,2] 𝑒𝑧 𝑦 ∈ [0,1] 𝑧 ∈ (−inf,ln(2)] 𝑧 11 3 ∈ [0,8] Linearize Constraints Constraint zt ≥ xt yt with xt binary, yt ∈ [20,100], zt free xt = 1 xt = 0 zt ≥ yt zt ≥ 0 zt ≥ yt + 100 (xt – 1) zt ≥ 20 xt 12 Linearize Constraints (cont’d) Constraint (1 – xt) yt ≤ yt-1 with xt binary, yt ∈ [0,100] xt = 1 xt = 0 yt-1 ≥ 0 yt ≤ yt-1 yt ≤ yt-1 + 100 xt 13 Improving Coefficients y + 6 x ≤ 14 y + 12 x ≤ 20 x binary 0 ≤ y ≤ 14 x=0 x=1 x binary 0 ≤ y ≤ 14 y ≤ 20 loose y ≤ 8 tight x=0 x=1 y ≤ 14 tight y ≤ 8 tight (8,1) (0,1) x y + 12 x ≤ 20 (14,0) (0,0) 14 y y + 6 x ≤ 14 Improving Coefficients: Nonlinear g(y1,…,yk) + M x ≤ b x binary If we have an upper bound gu on g such that gu < b then reformulate: g(y1,…,yk) + (M – b + gu ) x ≤ gu x binary 15 Improving Coefficients: Probing g(y1,…,yk) + M x ≤ b x binary y≥0 yi ≤ mi x i = 1,…,k x=0 y1 = … = yk = 0 If g(0,…,0) < b 16 tighten (implication) AIMMS Presolver Algorithm RemoveDuplicateConstraints; RemoveDoubletonVariables; LinearizeConstraints; while ( iter <= iterLimit and someBoundTightened ) do TightenVariableBounds; RemoveRedundantConstraints; endwhile; RemoveDoubletonVariables; RemoveFixedVariables; LinearizeConstraints; ImproveCoefficients; 17 Activate Presolver: Normal Solve 18 Activate Presolver: GMP Solve myGMP := GMP::Instance::Generate(MathProgram); GMP::Instance::Solve(myGMP); > Option 1: Set ‘Nonlinear presolve’ option (same as before) > Option 2: myGMP := GMP::Instance::Generate(MathProgram); myPresolvedGMP := GMP::Instance::CreatePresolved(myGMP); GMP::Instance::Solve(myPresolvedGMP); 19 Activate Presolver: Standard Algorithms > Outer Approximation (MINLP): myGMP := GMP::Instance::Generate(MathProgram); GMPOuterApprox::UseNonlinearPresolver := 1; GMPOuterApprox::DoOuterApproximation(myGMP); > Multi-Start (NLP): myGMP := GMP::Instance::Generate(MathProgram); MulStart::UsePresolver := 1; MulStart::DoMultiStart(myGMP,…); 20 Infeasibility Analysis > Activated by setting options ‘Display Infeasibility Analysis’ and ‘Nonlinear Presolve’ > Warnings : • Local nonlinear solver (CONOPT, KNITRO, SNOPT, IPOPT, AOA) might return Locally Infeasible while problem is feasible • For an infeasible problem the AIMMS presolver often cannot detect that the problem is indeed infeasible 21 References > Language Reference • The AIMMS Presolver: Chapter 17.1 (AIMMS 4.8) > Gondzio, J., Presolve analysis of linear programs prior to applying the interior-point method, INFORMS Journal on Computing 9, 1997, pp. 73-91. > Savelsbergh, M.W.P., Preprocessing and Probing Techniques for Mixed Integer Programming Problems, ORSA Journal on Computing 6, 1994, pp. 445-454. 22