Ottimizzazione univariata

Introduzione all'ottimizzazione in Python

Jasmin Ludolf

Content Developer

Esempio: ottimizzazione in produzione

 

Funzione obiettivo:

$P = 40q - 0.5q^2$

  • Univariata: ha una variabile

Profitto al variare della quantità.

Introduzione all'ottimizzazione in Python

Esempio: ottimizzazione in produzione

 

Funzione obiettivo:

$P = 40q - 0.5q^2$

  • Univariata: ha una sola variabile

Profitto al variare della quantità.

Introduzione all'ottimizzazione in Python

Calcolare le derivate

 

Funzione obiettivo:

$P = 40q - 0.5q^2$

Derivata: descrive come si comporta la pendenza

$\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
Introduzione all'ottimizzazione in Python

Il punto critico

L’optimum si trova dove la derivata è zero

  • Punti critici: punti in cui la derivata è zero

L’optimum $q$ soddisfa:

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

q_opt = solve(dp_dq)
print(f"Optimum quantity: {q_opt}")
Optimum quantity: [40.0000000000000]
Introduzione all'ottimizzazione in Python

Massimo, minimo o nessuno?

 

Profitto al variare della quantità.

 

Funzione obiettivo:

$p = 40q - 0.5q^2$

q_opt = solve(p_prime)
print(f"Optimum quantity: {q_opt}")
Optimum quantity: [40.0000000000000]
Introduzione all'ottimizzazione in Python

Convessità e concavità

 

Funzione concava.

  • Massimo

 

Funzione convessa.

  • Minimo
Introduzione all'ottimizzazione in Python

Seconda derivata

 

  • Derivata della derivata
  • Tasso a cui cambia la pendenza quando varia la variabile

 

  • Se la 2ª derivata nel punto $< 0$: massimo
  • Se la 2ª derivata nel punto $> 0$: minimo
  • Se la 2ª derivata nel punto $= 0$: nessuno

Profitto al variare della quantità.

Introduzione all'ottimizzazione in Python

Esempio: massimo, minimo o nessuno?

 

Derivata:

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

 

Seconda derivata:

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

  • Massimo!

 

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
Introduzione all'ottimizzazione in Python

Derivate nell’ottimizzazione

 

  • Prime derivate
    • Trovano i punti critici nei problemi di ottimizzazione
  • Seconde derivate
    • Classificano come minimi o massimi
Introduzione all'ottimizzazione in Python

Passiamo alla pratica !

Introduzione all'ottimizzazione in Python

Preparing Video For Download...