Wprowadzenie do optymalizacji matematycznej

Wprowadzenie do optymalizacji w Pythonie

Jasmin Ludolf

Content Developer

Co nas czeka...

 

Czego się nauczysz...
  • Rozwiązywanie rzeczywistych problemów optymalizacji
  • Budowanie zestawu narzędzi do różnych problemów

 

Co warto znać wcześniej...

 

Czego nie trzeba znać...
  • Rachunek różniczkowy
  • Algorytmy
Wprowadzenie do optymalizacji w Pythonie

Czym jest optymalizacja matematyczna?

 

  • Znajdowanie optymalnych danych wejściowych dla danego problemu

 

  • Przykłady:
    • Maksymalizacja plonów

Rosnące uprawy na polu.

  • Warunki glebowe, pogoda
  • Optymalna ilość i jakość plonów
Wprowadzenie do optymalizacji w Pythonie

Czym jest optymalizacja matematyczna?

 

 

Furgonetki na trasie dostawy.

 

 

  • Optymalne trasy dystrybucji
  • Odległość i natężenie ruchu
  • Skrócenie czasu dostaw i redukcja kosztów
Wprowadzenie do optymalizacji w Pythonie

Funkcja celu

  • Opisuje zależność między zmiennymi wejściowymi a wynikiem

 

Produkcja mebli:

  • Maksymalizacja zysku, P
  • Ilość, q

 

$P = 40q - 0.5q^2$

  • Dla jakiej wartości q zysk P jest maksymalny?
Wprowadzenie do optymalizacji w Pythonie

Optymalizacja w Pythonie

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()
Wprowadzenie do optymalizacji w Pythonie

Optymalizacja w produkcji

 

  • Wartość maksymalna = wartość optymalna

 

  • Możliwe przyczyny kształtu krzywej:
    • Niewystarczająca liczba pracowników lub sprzętu

 

Zysk w zależności od ilości.

Wprowadzenie do optymalizacji w Pythonie

Przeszukiwanie wyczerpujące

  • Metoda „siłowa"
  • Obliczanie zysku dla zakresu ilości
  • Wybór wartości dającej największy zysk

 

Mężczyzna z lornetką siedzący na balonie z symbolem dolara, szukający zysku.

Wprowadzenie do optymalizacji w Pythonie

Przeszukiwanie wyczerpujące w Pythonie

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.
Wprowadzenie do optymalizacji w Pythonie

Zalety i wady przeszukiwania wyczerpującego

 

  • Zalety
    • (+) Prosta implementacja
    • (+) Nie wymaga kosztownego oprogramowania
    • (+) Minimalne założenia
  • Wady
    • (-) Nie sprawdza się w złożonych przypadkach
Wprowadzenie do optymalizacji w Pythonie

Czas na ćwiczenia!

Wprowadzenie do optymalizacji w Pythonie

Preparing Video For Download...