Introduktion till matematisk optimering

Introduktion till optimering i Python

Jasmin Ludolf

Content Developer

Vad väntar...

 

Du kommer att lära dig om...
  • Lösa verkliga optimeringsproblem
  • Bygga en verktygslåda för olika problem

 

Det här behöver du kunna...

 

Det här behöver du inte kunna...
  • Kalkyl
  • Algoritmer
Introduktion till optimering i Python

Vad är matematisk optimering?

 

  • Hitta de optimala indata för ett specifikt problem

 

  • Exempel:
    • Maximera skördar

Grödor som växer på ett fält.

  • Markförhållanden och väder
  • Bästa kvantitet och kvalitet på grödan
Introduktion till optimering i Python

Vad är matematisk optimering?

 

 

Skåpbilar som kör en leveransrutt.

 

 

  • Optimala distributionsrutter
  • Avstånd och trafik
  • Kortare leveranstider och lägre kostnader
Introduktion till optimering i Python

Målfunktionen

  • Beskriver sambandet mellan indatavariabler och resultatet

 

Möbeltillverkning:

  • Maximera vinst, P
  • Kvantitet, q

 

$P = 40q - 0.5q^2$

  • Vilket värde på q maximerar P?
Introduktion till optimering i Python

Optimera med 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()
Introduktion till optimering i Python

Optimering inom tillverkning

 

  • Maximalt värde = optimalt värde

 

  • Möjliga orsaker till kurvan:
    • För lite personal eller utrustning

 

Vinst som varierar med kvantitet.

Introduktion till optimering i Python

Uttömmande sökning

  • Metoden "brute force"
  • Beräknar vinsten för ett intervall av kvantiteter
  • Väljer den som ger störst vinst

 

En man med kikare sitter i en ballong med ett dollartecken och söker efter vinst.

Introduktion till optimering i Python

Uttömmande sökning i 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.
Introduktion till optimering i Python

Fördelar och nackdelar med uttömmande sökning

 

  • Fördelar
    • (+) Enkel att implementera
    • (+) Ingen dyr programvara behövs
    • (+) Minimala antaganden
  • Nackdelar
    • (-) Fungerar inte för komplexa fall
Introduktion till optimering i Python

Nu kör vi en övning!

Introduktion till optimering i Python

Preparing Video For Download...