Introductie tot wiskundige optimalisatie

Introductie tot optimalisatie in Python

Jasmin Ludolf

Content Developer

Komt eraan...

 

Je leert...
  • Echte optimalisatieproblemen oplossen
  • Een toolkit opbouwen voor verschillende problemen

 

Wat je vooraf moet weten...

 

Wat je niet hoeft te weten...
  • Calculus
  • Algoritmen
Introductie tot optimalisatie in Python

Wat is wiskundige optimalisatie?

 

  • Het vinden van de ideale inputs voor een specifiek probleem

 

  • Voorbeelden:
    • Opbrengst van gewassen maximaliseren

Gewassen die op een akker groeien.

  • Bodemgesteldheid, weer
  • Beste hoeveelheid en kwaliteit gewassen
Introductie tot optimalisatie in Python

Wat is wiskundige optimalisatie?

 

 

Busjes rijden een bezorgroute.

 

 

  • Optimale distributieroutes
  • Afstand en verkeer
  • Bezorgtijden verbeteren en kosten verlagen
Introductie tot optimalisatie in Python

De doelfunctie

  • Beschrijft de relatie tussen invoervariabelen en resultaat

 

Meubelproductie:

  • Maximaliseer winst, P
  • Hoeveelheid, q

 

$P = 40q - 0.5q^2$

  • Welke q maximaliseert P?
Introductie tot optimalisatie in Python

Optimaliseren met 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()
Introductie tot optimalisatie in Python

Optimalisatie in de productie

 

  • Maximumwaarde = optimum

 

  • Mogelijke oorzaken van de vorm:
    • Te weinig personeel of apparatuur

 

Winst varieert met hoeveelheid.

Introductie tot optimalisatie in Python

Uitputtend zoeken

  • "Brute force"-methode
  • Bereken de winst voor een reeks hoeveelheden
  • Kies de hoeveelheid met de hoogste winst

 

Een man met een verrekijker op een ballon met een dollarteken, op zoek naar winst.

Introductie tot optimalisatie in Python

Uitputtend zoeken in 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.
Introductie tot optimalisatie in Python

Voor- en nadelen van uitputtend zoeken

 

  • Voordelen
    • (+) Eenvoudig te implementeren
    • (+) Geen dure software nodig
    • (+) Weinig aannames
  • Nadelen
    • (-) Schaalt niet voor complexe gevallen
Introductie tot optimalisatie in Python

Laten we oefenen!

Introductie tot optimalisatie in Python

Preparing Video For Download...