15
MATLAB Examples Hans-Petter Halvorsen Optimization

MATLAB Examples - Optimization · 2017-06-19 · Optimization • Optimization is important in modelling, control and simulation applications. • Optimization is based on finding

  • Upload
    others

  • View
    33

  • Download
    0

Embed Size (px)

Citation preview

MATLABExamples

Hans-PetterHalvorsen

Optimization

Optimization

Optimizationisbasedonfindingtheminimumofagivencriteriafunction.

Minimum

𝑓(𝑥)

𝑥

𝑑𝑓(𝑥)𝑑𝑥 = 0

Optimization• Optimizationisimportantinmodelling,controlandsimulationapplications.• Optimizationisbasedonfindingtheminimumofagivencriteriafunction.• ItistypicallyusedwithModelbasedControl(MPC)• MATLABfunctions:- fminbnd()- Findminimumofsingle-variablefunctiononfixedinterval

- fminsearch() - thisfunctionissimilartofminbnd()exceptthatithandlesfunctionsofmanyvariables

Optimization

Wewanttofindforwhatvalueofxthefunctionhasitsminimumvalue:

Example:

clearclc

x = -20:0.1:20;y = 2.*x.^2 + 20.*x - 22;plot(x,y)grid

i=1;while ( y(i) > y(i+1) )

i = i + 1; end

x(i)y(i)

Theminimumofthefunction

(-5,72)

OptimizationExample:

clearclcclose all

x = -20:1:20;f = mysimplefunc(x);plot(x, f)grid

x_min = fminbnd(@mysimplefunc, -20, 20)

y = mysimplefunc(x_min)

function f = mysimplefunc(x)

f = 2*x.^2 + 20.*x -22;

x_min =

-5

y =

-72Note!ifwehavemorethan1variable,wehavetousee.g.,thefminsearch() functionWegotthesameresultsaspreviousslide

OptimizationExample:

Theminimumofthefunction(-5,72)

𝑑𝑦𝑑𝑥 = 4𝑥 + 20

𝑑𝑦𝑑𝑥 = 0

Minimumwhen:

Wehavethat:

4𝑥 + 20 = 0𝑥 = −5

Thisgives:

Optimization

Giventhefollowingfunction:

𝑓 𝑥 = 𝑥3 − 4𝑥Wewill:• Plotthefunction• Findtheminimumforthisfunction

function f = myefunction(x)

f = x.^3 - 4*x;

clear, clcx = -3:0.1:3;f = mysimplefunc(x);plot(x, f)

[xmin,fmin] = fminbnd(@myfunction, -3, 3)

Thisgives:xmin =

1.1547fmin =

-3.0792

/0/1= 3𝑥2 − 4 = 0 → 𝑥456 =

78

� ≈ 1.1547

Optimization- Rosenbrock's BananaFunction

Giventhefollowingfunction:

𝑓 𝑥, 𝑦 = 1 − 𝑥 2 + 100(𝑦 − 𝑥2)2

ThisfunctionisknownasRosenbrock's bananafunction.

Wewill:→Plotthefunction→Findtheminimumforthisfunction

Rosenbrock’s bananafunctionisafamoustestcaseforoptimizationsoftware

https://en.wikipedia.org/wiki/Rosenbrock_function

clear,clc

[x,y] = meshgrid(-2:0.1:2, -1:0.1:3);

f = (1-x).^2 + 100.*(y-x.^2).^2;

figure(1)surf(x,y,f)

figure(2)mesh(x,y,f)

figure(3)surfl(x,y,f)shading interp;colormap(hot);

WeplottheBananafunction:

function f = bananafunc(x)

f = (1-x(1)).^2 + 100.*(x(2)-x(1).^2).^2;

[x,fval] = fminsearch(@bananafunc, [-1.2;1])

FromMATLABweget:

x = 1.0000 1.0000

fval = 8.1777e-10

Whichiscorrect

Hans-PetterHalvorsen,M.Sc.

UniversityCollegeofSoutheastNorwaywww.usn.no

E-mail:[email protected]:http://home.hit.no/~hansha/