Download The AIMMS Presolver

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
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
Related documents