Univariat optimering

Introduktion till optimering i Python

Jasmin Ludolf

Content Developer

Exempel: Optimering inom tillverkning

 

Målfunktion:

$P = 40q - 0.5q^2$

  • Univariat: har en variabel

Vinst som varierar med kvantitet.

Introduktion till optimering i Python

Exempel: Optimering inom tillverkning

 

Målfunktion:

$P = 40q - 0.5q^2$

  • Univariat: har en enda variabel

Vinst som varierar med kvantitet.

Introduktion till optimering i Python

Beräkna derivator

 

Målfunktion:

$P = 40q - 0.5q^2$

Derivata: beskriver hur lutningen förändras

$\frac{dP}{dq} = 40 - q$

from sympy import symbols, diff, solve


q = symbols('q')
P = 40 * q - 0.5 * q**2
dp_dq = diff(P)
print(f"The derivative is: {dp_dq}")
The derivative is: 40 - 1.0*q
1 https://docs.sympy.org/latest/index.html
Introduktion till optimering i Python

Den kritiska punkten

Optimum finns där derivatafunktionen är noll

  • Kritiska punkter: punkter där derivatafunktionen är noll

Optimalt $q$ uppfyller:

$\frac{dP}{dq} = 40 - q = 0$

q_opt = solve(dp_dq)
print(f"Optimum quantity: {q_opt}")
Optimum quantity: [40.0000000000000]
Introduktion till optimering i Python

Maximum, minimum eller ingetdera?

 

Vinst som varierar med kvantitet.

 

Målfunktion:

$p = 40q - 0.5q^2$

q_opt = solve(p_prime)
print(f"Optimum quantity: {q_opt}")
Optimum quantity: [40.0000000000000]
Introduktion till optimering i Python

Konvexitet och konkavitet

 

Konkav funktion.

  • Maximum

 

Konvex funktion.

  • Minimum
Introduktion till optimering i Python

Andraderivatan

 

  • Derivatan av derivatan
  • Hur snabbt lutningen förändras när variabeln förändras

 

  • Om 2:a derivatan i punkten $< 0$: Maximum
  • Om 2:a derivatan i punkten $> 0$: Minimum
  • Om 2:a derivatan i punkten $= 0$: ingetdera

Vinst som varierar med kvantitet.

Introduktion till optimering i Python

Exempel: Maximum, minimum eller ingetdera?

 

Derivata:

$\frac{dp}{dq} = 40 - q$

 

Andraderivata:

$\frac{d^2p}{dq^2} = -1 < 0$

  • Maximum!

 

d2p_dq2 = diff(dp_dq)

sol = d2p_dq2.subs('q', q_opt)
print(f"The 2nd derivative is: {sol}")
The 2nd derivative is: -1.0000000000000
Introduktion till optimering i Python

Derivator i optimering

 

  • Förstaderivatan
    • Hittar kritiska punkter i optimeringsproblem
  • Andraderivatan
    • Identifierar minimum eller maximum
Introduktion till optimering i Python

Nu kör vi en övning!

Introduktion till optimering i Python

Preparing Video For Download...