Exercícios Resolvidos de Otimização

Ver Teoria

Enunciado

A função

y = 1 + e - 0,2 x sin ⁡ ( x + 2 )

Tem dois mínimos no intervalo 0 < x < 10 . Encontre os valores de x e y de cada mínimo.

Passo 1

O enunciado nos dá uma função e diz que ela tem dois mínimos em um dado intervalo. Neste exercício, a função objetivo é y = 1 + e - 0,2 x sin ⁡ ( x + 2 ) e a variável de projeto é x .

Para encontrarmos as coordenadas de cada mínimo da função, usaremos a função de otimização do MATLAB f m i n s e a r c h , variando o “chute inicial” do algoritmo.

Para termos uma noção de cada chute inicial, temos que plotar y primeiro.

Passo 2

Em um novo script, digite as linhas de código abaixo par plotar y :

Na primeira linha, criamos um vetor x que vai de 0 a 10 , com um passo de 0 , 0 1 . Esse vetor representa o intervalo dado pelo enunciado e vai ser o eixo horizontal do gráfico.

Na segunda linha, calculamos y para cada elemento do vetor x e armazenamos os resultados no vetor y . O vetor y será o eixo vertical do gráfico.

Na terceira linha, o gráfico de y é gerado. Executae o programa para vê-lo:

Passo 3

No gráfico de y , podemos identificar os dois pontos de mínimo que o enunciado falou. Podemos achar mais ou menos suas coordenadas clicando na curva do gráfico:

Achar mínimos por gráficos é bom para se ter uma estimativa, mas se quisermos um resultado mais preciso, devemos usar algum algoritmo de otimização, que normalmente exigem um ponto de partida (ou “chute inicial”) para minimizar uma função.

Podemos escolher nossos “chutes iniciais” a partir do gráfico, por proximidade dos pontos que marcamos.

Passo 4

A função f m i n s e a r c h tem a sintaxe:

x   =   f m i n s e a r c h ( @ f u n ç ã o , x 0 )

Precisamos fornecer a ela no mínimo duas entradas:

  • @ f u n ç ã o : uma função representando a função objetivo;
  • x 0 : um número representando um “chute” inicial da variável de projeto.

A saída de f m i n s e a r c h é uma variável x contendo o valor da variável de projeto que minimiza a função objetivo.

Primeiramente, vamos definir a função objetivo que usaremos em f m i n s e a r c h usando o comando:

A função objetivo será armazenada em f u n . O @ ( x ) indica que f u n é em função de x , a nossa variável de projeto (não confundir com o vetor x que criamos no passo 2).

Para encontrar o primeiro ponto de mínimo, o mais à esquerda, vamos adotar um “chute inicial” de x 0 = 2 :

O resultado de f m i n s e a r c h para x 0 = 2 é armazenado em x _ m i n 1 , que é a coordenada x do primeiro mínimo. A coordenada y do primeiro mínimo é calculada entrando x _ m i n 1 em f u n e é armazenada em y _ m i n 1 .

Temos que as coordenadas do primeiro ponto de mínimo são:

Para encontrar o segundo ponto de mínimo, vamos fazer o mesmo procedimento. Adote um “chute inicial” de x 0 = 9 :

O resultado de f m i n s e a r c h para x 0 = 9 é armazenado em x _ m i n 2 , que é a coordenada x do segundo mínimo. A coordenada y do segundo mínimo é calculada entrando x _ m i n 2 em f u n e é armazenada em y _ m i n 2 .

Temos que as coordenadas do segundo ponto de mínimo são:

Resposta

As coordenadas do primeiro ponto de mínimo são x 1 = 2,515 e y 1 = 0,407

As coordenadas do segundo ponto de mínimo são x 2 = 8,7982 e y 2 = 0 , 8312