Anda di halaman 1dari 28

Introdução à Otimização

Gustavo Queiroz Fernandes Vinícius Noal Artmann


Marina Baldissera de Souza

EMC5358 – Dinâmica Veicular

LOGO
Sumário

1. Introduction

2 25/09/2018
Introdução

Otimização é um processo que busca a melhor solução


possível para um determinado problema

Os problemas podem ter mais que uma solução

Critérios devem ser estabelecidos para encontrar a melhor


solução

3 25/09/2018
Problema de Otimização

Um problema de otimização pode ser descrito como:

A forma de encontrar os valores de um conjunto de


variáveis de decisão em que uma determinada função
objetivo atinge seu valor máximo ou mínimo, sujeita a
determinadas restrições.

4 25/09/2018
Problema de Otimização

Matematicamente, um problema de otimização pode ser


escrito como:
Minimizar f(x)
Sujeito a g(x) ≤ 0
h(x) = 0

A variável de decisão ou projeto neste caso é x;

g(x) e h(x) são os vetores que contêm as restrições de


desigualdade e igualdade, respectivamente.

5 25/09/2018
Otimização sem Restrição
Exemplo
Minimizar
f(x,y)=(1-x)² + 100(y-x²)²

Variáveis de projeto:
xey

(x0;y0) = (-2;0)

6 25/09/2018
Região Viável
Exemplo
Minimizar
f(x,y)=(1-x)² + 100(y-x²)²
Sujeito a
g(x,y) = y - 0,5 ≤ 0

Variáveis de projeto
xey

Região Viável

(x0;y0) = (0;0)

7 25/09/2018
Região Viável
Exemplo
Minimizar
f(x,y)=(1-x)² + 100(y-x²)²
Sujeito a
g(x,y) = y - 0,5 ≤ 0

Variáveis de projeto
xey
Região Viável

(x0;y0) = (0;0)

8 25/09/2018
Métodos de Otimização

9 25/09/2018
Métodos Determinísticos

10 25/09/2018
Métodos Determinísticos

11 25/09/2018
Métodos Estocásticos

12 25/09/2018
Métodos Estocásticos

13 25/09/2018
Métodos Estocásticos

14 25/09/2018
Métodos de Otimização

Algoritmo geral → duas etapas principais:


1. Direção de descida;
2. Comprimento do passo.

15 25/09/2018
Otimização no Matlab

Seja dado o problema:

A*x ≤ b
min f(x) tal que: Aeq*x = beq
lb ≤ x ≤ u b

A linha de comando fica:

xopt = fmincon(fun,x0,A,b,Aeq,beq)

16 25/09/2018
Otimização no Matlab

Exemplo 1:

Função de custo: função de Rosenbrock

f(x) = 100*(x2-(x1)²)2 + (1-x1)2

Restrições:
x(1) + 2x(2) ≤ 1
Ponto iniciai:
x0 = -1 2

17 25/09/2018
Otimização no Matlab

Definindo a função de custo no Matlab:

fun = @(x) 100*(x(2)-x(1)^2)^2 + (1-x(1))^2;


Cria uma associação à função
apresentada logo em seguida

Definindo a restrição e o ponto inicial:

x(1) + 2x(2) ≤ 1 1 2 x(1) ≤ 1 x0 = -1 2


x(2)
A b

18 25/09/2018
Otimização no Matlab

De tal forma que o programa completo fica:

%definição da função de custo


fun = @(x) 100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
%ponto inicial
x0 = [-1, 2];
%restrições de desigualdade
A = [1,2];
b = 1;
%chamada da otimização
x = fmincon(fun,x0,A,b)

E a resposta obtida é: 0,5022 0,2489

19 25/09/2018
Otimização no Matlab

Exemplo 2:

Função de custo: função de Rosenbrock

f(x) = 100(x2-(x1)²)2 + (1-x1)2

Restrições:
x1 + 2x2 ≤ 1
2x1 + x2 = 1
Pontos iniciais:
x0 = 0.5 0

20 25/09/2018
Otimização no Matlab

Definindo a função de custo no Matlab:

fun = @(x) 100*(x(2)-x(1)^2)^2 + (1-x(1))^2;

Definindo as restrições e o ponto inicial:

x1 + 2x2 ≤ 1 1 2 x(1) ≤ 1
x(2)
A b
x0 = 0.5 0
2x1 + x2 = 1 2 1 x(1) = 1
x(2)
Aeq beq

21 25/09/2018
Otimização no Matlab

De tal forma que o programa completo fica:

%definição da função de custo


fun = @(x) 100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
%ponto inicial
x0 = [0.5, 0];
%restrições de desigualdade e igualdade
A = [1,2];
b = 1;
Aeq = [2,1];
beq = 1;
%chamada da otimização
x = fmincon(fun,x0,A,b,Aeq,beq)

E a resposta obtida é: 0.4149 0.1701

22 25/09/2018
Otimização no Matlab

Exemplo 3:

Função de custo: função de Rosenbrock

f(x) = 1 + x1/(1+x2) - 3*x1*x2 +


x2*(1+x1)
Restrições:
0 ≤ x1 ≤ 1
0 ≤ x2 ≤ 2
Pontos iniciais:
x0 = 0.5 1

23 25/09/2018
Otimização no Matlab

Definindo a função de custo no Matlab:

fun = @(x) 1 + x(1)/(1+x(2)) - 3*x(1)*x(2) + x(2)*(1+x(1))

Definindo as restrições e o ponto inicial:

x(1) ≥ 0 x(1) ≤ 1
x(2) x(2) x0 = 0.5 1
0 2

lb ub

24 25/09/2018
Otimização no Matlab

De tal forma que o programa completo fica:


%definição da função de custo
fun = @(x) 1 + x(1)/(1+x(2)) - 3*x(1)*x(2) + x(2)*(1+x(1));
%ponto inicial
x0 = [0.5, 1];
%restrições de desigualdade e igualdade
A = [];
b = [];
Aeq = [];
beq = [];
%limites de cada variável
lb = [0,0];
ub = [1,2];
%chamada da otimização
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)

E a resposta obtida é: 1.0 2.0


25 25/09/2018
Otimização no Matlab

E alterando o ponto inicial do algoritmo, pode-se obter


diferentes pontos de mínimo

Alterando x0 no algoritmo anterior para: x0 = 0.1 0.2


%ponto inicial
x0 = [0.1, 0.2];

A resposta obtida é: 4E-07 4E-07

26 25/09/2018
Referências
▪ a

27 25/09/2018
OBRIGADO!
Gustavo Queiroz Fernandes
gustavo.fernandes@posgrad.ufsc.br

Marina Baldissera de Souza


marina.bs@posgrad.ufsc.br

Vinícius Noal Artmann


vinicius.artmann@gmail.com

28 25/09/2018