Introdução à otimização matemática

Introdução à Otimização em Python

Jasmin Ludolf

Content Developer

A seguir...

 

Você vai aprender...
  • Resolver problemas reais de otimização
  • Montar um kit de ferramentas para diferentes problemas

 

O que você precisa saber antes...

 

O que você não precisa saber...
  • Cálculo
  • Algoritmos
Introdução à Otimização em Python

O que é otimização matemática?

 

  • Encontrar as entradas "ideais" para um problema específico

 

  • Exemplos:
    • Maximizar a produtividade agrícola

Lavoura crescendo em um campo.

  • Condições do solo, clima
  • Melhor quantidade e qualidade da colheita
Introdução à Otimização em Python

O que é otimização matemática?

 

 

Vans percorrendo uma rota de entrega.

 

 

  • Rotas de distribuição ótimas
  • Distância e tráfego
  • Melhorar prazos de entrega e reduzir custos
Introdução à Otimização em Python

A função objetivo

  • Descreve a relação entre variáveis de entrada e o resultado

 

Fabricação de móveis:

  • Maximizar o lucro, P
  • Quantidade, q

 

$P = 40q - 0.5q^2$

  • Qual valor de q maximiza P?
Introdução à Otimização em Python

Otimizar com Python

import numpy as np
import matplotlib.pyplot as plt

qs = np.arange(80)


def profit(q): return 40 * q - 0.5 * q**2
plt.plot(qs, profit(qs)) plt.xlabel('Quantity') plt.ylabel('Profit') plt.show()
Introdução à Otimização em Python

Otimização na manufatura

 

  • Valor máximo = valor ótimo

 

  • Possíveis razões para o formato:
    • Falta de equipe ou equipamentos

 

Lucro variando com a quantidade.

Introdução à Otimização em Python

Busca exaustiva

  • Método de "força bruta"
  • Calcular o lucro para um intervalo de quantidades
  • Selecionar a que gera o maior lucro

 

Um homem com binóculos sentado em um balão com um cifrão procurando por lucro.

Introdução à Otimização em Python

Busca exaustiva em Python

import numpy as np

qs = np.arange(80)

def profit(q): 
  return 40 * q - 0.5 * q**2


profits = profit(qs) max_profit = profits.max()
max_ind = np.argmax(profits) q_opt = qs[max_ind]
print(f"The optimum is {q_opt} pieces of furniture, which makes ${max_profit} profit.")
The optimum is 40 pieces of furniture, which makes $800 profit.
Introdução à Otimização em Python

Vantagens e desvantagens da busca exaustiva

 

  • Vantagens
    • (+) Implementação simples
    • (+) Sem necessidade de software caro
    • (+) Pressupostos mínimos
  • Desvantagens
    • (-) Não escala para casos complexos
Introdução à Otimização em Python

Vamos praticar!

Introdução à Otimização em Python

Preparing Video For Download...