0% found this document useful (0 votes)
171 views

Numerical Optimization in Matlab

This document provides an overview of numerical optimization techniques in MATLAB. It discusses three main functions: fminunc for unconstrained optimization using derivative-based methods, fmincon for constrained optimization using derivative-based methods, and fminsearch for unconstrained optimization using derivative-free methods. Examples of each function are provided to find the minimum of both simple and complex objective functions. Options for each function are also described to control the optimization process.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
171 views

Numerical Optimization in Matlab

This document provides an overview of numerical optimization techniques in MATLAB. It discusses three main functions: fminunc for unconstrained optimization using derivative-based methods, fmincon for constrained optimization using derivative-based methods, and fminsearch for unconstrained optimization using derivative-free methods. Examples of each function are provided to find the minimum of both simple and complex objective functions. Options for each function are also described to control the optimization process.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 25

Numerical Optimization in MATLAB

Andrii Parkhomenko

Universitat Autònoma de Barcelona and Barcelona GSE

Spring 2017

Andrii Parkhomenko (UAB & Barcelona GSE) Numerical Optimization in MATLAB 0 / 24


Optimization

Typical problem in economics: find an optimum

Case 1:
max f (x) = 0.5x − 0.02x 2
x

Easy: just solve for x that satisfies f 0 (x) = 0

Case 2:
1
max f (x) = 0.5 ln x − 0.02x 2 + 5
x (1 + x) 3
Can’t solve analytically ⇒ need to use numerical methods

Andrii Parkhomenko (UAB & Barcelona GSE) Numerical Optimization in MATLAB 1 / 24


Numerical Optimization

Continuous differentiable objective function: derivative-based methods


Arbitrary objective function: derivative-free methods

Andrii Parkhomenko (UAB & Barcelona GSE) Numerical Optimization in MATLAB 2 / 24


Numerical Optimization in MATLAB

These slides cover three functions contained in MATLAB’s Optimization


Toolbox:
fminunc: unconstrained optimization, derivative-based
fmincon: constrained optimization, derivative-based
fminsearch: unconstrained optimization, derivative-free

Andrii Parkhomenko (UAB & Barcelona GSE) Numerical Optimization in MATLAB 3 / 24


fminunc

Finds parameters that minimize a given function


Syntax:
x = fminunc(objfun,x0)
I x0: starting guess
I objfun: objective function specified in a different script
I x: solution

Andrii Parkhomenko (UAB & Barcelona GSE) Numerical Optimization in MATLAB 4 / 24


fminunc

Example 1:
1
max f (x) = 0.5 ln x − 0.02x 2 + 5
x (1 + x) 3

0.6

0.4

0.2

−0.2
f(x)

−0.4

−0.6

−0.8

−1

−1.2

−1.4
0 1 2 3 4 5
x

Andrii Parkhomenko (UAB & Barcelona GSE) Numerical Optimization in MATLAB 5 / 24


fminunc

Example 1:
1
max f (x) = 0.5 ln x − 0.02x 2 + 5
x (1 + x) 3

Step 1. Main code


x0 = 1;
x = fminunc(@objfun,x0)

Step 2. Function
function y = objfun(x)
y = 0.5*log(x) - 0.02*x^2 + (1+x)^(-5/3);
y = -y;
end

Andrii Parkhomenko (UAB & Barcelona GSE) Numerical Optimization in MATLAB 6 / 24


fminunc

fminunc uses the BFGS Quasi-Newton method:

xk+1 = xk + αk pk

1 Compute direction pk

pk = −Bk−1 ∇fk
Bk sk sk0 Bk yk yk0
Bk+1 = Bk − +
sk0 Bk sk yk0 sk
where sk ≡ xk+1 − xk and yk ≡ fk+1 − fk

2 Compute stepsize αk . Use line search to approximately solve

min f (xk + αk pk )
αk

Andrii Parkhomenko (UAB & Barcelona GSE) Numerical Optimization in MATLAB 7 / 24


fminunc

Introduce options:
options = optimset(’Opt1’,Opt1Val,’Opt2’,Opt2Val,...);
x = fminunc(@objfun,x0, options)

Important algorithm options:


Display:
optimset(’Display’, ’off’)
Tolerance level:
optimset(’TolFun’, 1e-6)
optimset(’TolX’, 1e-6)
Maximum number of iterations or evaluations
optimset(’MaxIter’, 400)
optimset(’MaxFunEvals’, 100)
Andrii Parkhomenko (UAB & Barcelona GSE) Numerical Optimization in MATLAB 8 / 24
fminunc

Caution:
Objective function must be continuous
Local minima and flat regions are big issues

Andrii Parkhomenko (UAB & Barcelona GSE) Numerical Optimization in MATLAB 9 / 24


fminunc

Example 2. Discontinuous objective function:


0.5 ln x − 0.02x 2 + 1 5 , 0<x ≤4
(
(1+x) 3
max f (x) =
x 0.5 ln x − 0.02x 2 + 1 5 + 1, 4<x
(1+x) 3

1.5

0.5
f(x)

−0.5

−1

−1.5
0 1 2 3 4 5
x

Andrii Parkhomenko (UAB & Barcelona GSE) Numerical Optimization in MATLAB 10 / 24


fminunc

Example 3. Objective function with flat regions:


0.5 ln x − 0.02x 2 + 1 5 , 0 < x ≤ 4
(
max f (x) = (1+x) 3
x 0.441546, 4<x

0.6

0.4

0.2

−0.2
f(x)

−0.4

−0.6

−0.8

−1

−1.2

−1.4
0 1 2 3 4 5
x

Andrii Parkhomenko (UAB & Barcelona GSE) Numerical Optimization in MATLAB 11 / 24


fminunc

Example 4. Objective function with local maxima:

max f (x) = sin(3x) + x − 0.25x 2


x

1.5

1
f(x)

0.5

−0.5

−1
0 1 2 3 4 5
x

Andrii Parkhomenko (UAB & Barcelona GSE) Numerical Optimization in MATLAB 12 / 24


fminunc

To obtain more details on the workings of fminunc:


Read documentation: Help → Type ’fminunc’
Read the code: Type ’open fminunc’

Andrii Parkhomenko (UAB & Barcelona GSE) Numerical Optimization in MATLAB 13 / 24


fmincon

Finds parameters that minimize a given function, subject to a


constraint
Same algorithm as fminunc
Syntax:
x = fmincon(objfun,x0,A,b,Aeq,beq,lb,ub,nlcon,options)
I x0: starting guess
I objfun: objective function specified in a different script
I A, b: linear inequality constraint: Ax ≤ b
I Aeq, beq: linear equality constraint: Ax = b
I lb, ub: lower and upper bounds: x ∈ [lb, ub]
I nlcon: nonlinear constraint
I x: solution

Andrii Parkhomenko (UAB & Barcelona GSE) Numerical Optimization in MATLAB 14 / 24


fmincon

Example 1:
1
max f (x) = 0.5 ln x − 0.02x 2 + 5 s.t. x ≤ a
x (1 + x) 3

0.6

0.4

0.2

−0.2
f(x)

−0.4

−0.6

−0.8

−1

−1.2

−1.4
0 1 2 3 4 5
x
Andrii Parkhomenko (UAB & Barcelona GSE) Numerical Optimization in MATLAB 15 / 24
fmincon

Sometimes it’s better to reformulate a constrained problem as an


unconstrained
I Can use a formulation with Lagrange multipliers

Andrii Parkhomenko (UAB & Barcelona GSE) Numerical Optimization in MATLAB 16 / 24


fminsearch

Finds parameters that minimize a given function


Derivative-free algorithm (Nelder-Mead)
Syntax:
x = fminsearch(objfun,x0,options)
I x0: starting guess
I objfun: objective function specified in a different script
I x: solution

Andrii Parkhomenko (UAB & Barcelona GSE) Numerical Optimization in MATLAB 17 / 24


fminsearch
Nelder-Mead algorithm:
1 select 2 points: x1 and x2
2 order s.t. x̂ = x1 and x̄ = x2 if f (x̂) ≥ f (x̄); and x̂ = x2 and x̄ = x1
otherwise
3 reflection: x R = x̂ + (x̂ − x̄)
4 if f (x R ) > f (x̂) and f (x R ) > f (x̄), expansion: x E = x̂ + α(x R − x̂), α > 1
if f (x R ) ≤ f (x̂) and f (x R ) > f (x̄), update x̄ = x R and go to step 2
if f (x R ) ≤ f (x̂) and f (x R ) ≤ f (x̄), contraction: x C = x̂ + β(x̄ − x̂), β < 21
5 if f (x E ) > f (x R ), update x̄ = x E and go to step 2
if f (x E ) < f (x R ), update x̄ = x R and go to step 2
6 if f (x C ) > f (x̄), update x̄ = x C and go to step 2
if f (x C ) < f (x̄), shrink: replace x̄ = x̂ + γ(x̄ − x̂) and go to step 2, γ < 1
Iterate until convergence: x̂ ≈ x̄ and/or f (x̂) ≈ f (x̄)

Andrii Parkhomenko (UAB & Barcelona GSE) Numerical Optimization in MATLAB 18 / 24


fminsearch

Example 1:
1
max f (x) = 0.5 ln x − 0.02x 2 + 5
x (1 + x) 3

0.6

0.4

0.2

−0.2
f(x)

−0.4

−0.6

−0.8

−1

−1.2

−1.4
0 1 2 3 4 5
x

Andrii Parkhomenko (UAB & Barcelona GSE) Numerical Optimization in MATLAB 19 / 24


fminsearch

Example 2. Discontinuous objective function:


0.5 ln x − 0.02x 2 + 1 5 , 0<x ≤4
(
(1+x) 3
max f (x) =
x 0.5 ln x − 0.02x 2 + 1 5 + 1, 4<x
(1+x) 3

1.5

0.5
f(x)

−0.5

−1

−1.5
0 1 2 3 4 5
x

Andrii Parkhomenko (UAB & Barcelona GSE) Numerical Optimization in MATLAB 20 / 24


fminsearch

Example 3. Objective function with flat regions:


0.5 ln x − 0.02x 2 + 1 5 , 0 < x ≤ 4
(
max f (x) = (1+x) 3
x 0.441546, 4<x

0.6

0.4

0.2

−0.2
f(x)

−0.4

−0.6

−0.8

−1

−1.2

−1.4
0 1 2 3 4 5
x

Andrii Parkhomenko (UAB & Barcelona GSE) Numerical Optimization in MATLAB 21 / 24


fminsearch

Example 4. Objective function with local maxima:

max f (x) = sin(3x) + x − 0.25x 2


x

1.5

1
f(x)

0.5

−0.5

−1
0 1 2 3 4 5
x

Andrii Parkhomenko (UAB & Barcelona GSE) Numerical Optimization in MATLAB 22 / 24


fminsearch

Example 5. Objective function with many discontinuities:

max f (x) = bxc + 0.2x − 0.04x 2


x

5
f(x)

0
0 5 10 15 20
x

Andrii Parkhomenko (UAB & Barcelona GSE) Numerical Optimization in MATLAB 23 / 24


fminunc vs fminsearch

Rule of thumb: use fminunc for continuous differentiable functions,


fminsearch otherwise
No option guarantees that you find a (global) optimum
For complicated cases:
I understand the problem well
I try different algorithms
I try different starting points

Andrii Parkhomenko (UAB & Barcelona GSE) Numerical Optimization in MATLAB 24 / 24

You might also like