L'ottimizzazione non lineare è un ramo dell'ottimizzazione matematica che si occupa della minimizzazione (o massimizzazione) di funzioni obiettivo non lineari, in presenza o meno di vincoli non lineari. Questo campo è fondamentale in applicazioni che spaziano dall'ingegneria alla finanza, dall'economia al machine learning, dove i modelli matematici frequentemente comportano relazioni non lineari tra le variabili.
Un problema generico di ottimizzazione non lineare si può formulare come:
minimizzare f(x) soggetto a
dove x ∈ ℝn rappresenta il vettore delle variabili decisionali e f(x) è la funzione obiettivo non lineare.
Consideriamo il problema di minimizzazione:
f(x, y) = (x - 2)² + (y - 3)²
soggetto al vincolo:
g(x, y) = x² + y² - 10 ≤ 0
Questo problema consiste nel trovare il punto (x, y) all'interno (o sulla frontiera) di un cerchio di raggio √10 che minimizzi la distanza quadratica dal punto (2, 3).
Esistono due tipi principali di ottimalità:
Un punto x* è considerato un ottimo locale se esiste un intorno U tale che, per ogni x in U ∩ S (dove S è l'insieme delle soluzioni ammissibili), vale:
f(x) ≥ f(x*)
Un punto x* rappresenta un ottimo globale se, per ogni x in S, risulta:
f(x) ≥ f(x*)
Per verificare se un punto è ottimale, vengono utilizzate le condizioni di primo e secondo ordine.
Se f è differenziabile in x, un punto x* è stazionario se:
∇f(x*) = 0
dove ∇f rappresenta il gradiente di f.
Se f è due volte differenziabile, occorre che la matrice Hessiana H(x*) sia semidefinita positiva per un minimo locale:
H(x*) ⪰ 0
Se H(x*) è definita positiva, x* risulta essere un minimo stretto.
Quando un problema presenta vincoli di disuguaglianza, le condizioni KKT estendono il metodo dei moltiplicatori di Lagrange. Definiamo la funzione lagrangiana come:
L(x, λ, μ) = f(x) + Σ (j=1 to m) λ<sub>j</sub> h<sub>j</sub>(x) + Σ (i=1 to p) μ<sub>i</sub> g<sub>i</sub>(x)
Le condizioni KKT richiedono:
Esistono sia metodi analitici che numerici per risolvere i problemi di ottimizzazione non lineare. Questi metodi possono essere applicati direttamente per problemi non vincolati oppure possono essere adattati ad affrontare i vincoli (vincolati).
Questo metodo iterativo sfrutta la direzione negativa del gradiente per muoversi verso il minimo locale. La regola di aggiornamento è:
// Formula del metodo del gradiente
x<sub>k+1</sub> = x<sub>k</sub> - α<sub>k</sub> ∇f(x<sub>k</sub>)
dove αk rappresenta il passo di discesa scelto, spesso ottenuto tramite una ricerca lineare (line search).
Utilizzando anche la matrice Hessiana, il metodo di Newton offre una convergenza più rapida (quadratica) se la matrice Hessiana è definita positiva. In questo caso si ha:
// Formula del metodo di Newton
x<sub>k+1</sub> = x<sub>k</sub> - [H(x<sub>k</sub>)]<sup>-1</sup> ∇f(x<sub>k</sub>)
Il calcolo e l'inversione della matrice Hessiana possono risultare onerosi per problemi di grandi dimensioni.
I metodi quasi-Newton, come il metodo BFGS, approssimano la matrice Hessiana per ridurre il carico computazionale, garantendo al contempo buone proprietà di convergenza.
Quando sono presenti vincoli, il metodo dei moltiplicatori di Lagrange introduce variabili ausiliarie che trasformano il problema vincolato in uno non vincolato. La funzione lagrangiana si esprime come:
// Funzione lagrangiana
L(x, λ) = f(x) + Σ (i) λ<sub>i</sub> h<sub>i</sub>(x)
Per minimizzare, si risolvono le equazioni:
// Equazioni di stazionarietà
∇<sub>x</sub> L(x, λ) = 0 and h<sub>i</sub>(x) = 0 for all i
Per problemi con vincoli di disuguaglianza, le condizioni di Karush-Kuhn-Tucker forniscono un insieme completo di condizioni necessarie (e in certi casi sufficienti, in presenza di convessità) per l'ottimalità:
// Condizioni KKT complete
∇f(x*) + Σ λ<sub>j</sub> ∇h<sub>j</sub>(x*) + Σ μ<sub>i</sub> ∇g<sub>i</sub>(x*) = 0
h<sub>j</sub>(x*) = 0, g<sub>i</sub>(x*) ≤ 0
μ<sub>i</sub> ≥ 0, μ<sub>i</sub> g<sub>i</sub>(x*) = 0
Oltre ai metodi basati sui moltiplicatori, esistono tecniche che incorporano i vincoli direttamente nella funzione obiettivo tramite termini penalizzanti o che identificano iterativamente i vincoli attivi (vincolanti) per semplificare il problema.
Consideriamo la funzione:
f(x) = x² + 2x + 1
Il gradiente è:
∇f(x) = 2x + 2
Impostando il gradiente uguale a zero, otteniamo:
2x + 2 = 0 ⟹ x = -1
Calcoliamo la matrice Hessiana:
H(x) = 2
Poiché H(x) > 0, il punto x = -1 rappresenta un minimo locale (ed esso coincide con il minimo globale per questo problema convesso).
Consideriamo ora il problema:
min f(x, y) = -x - y
soggetto a: x² + y² ≤ 1
Per applicare il metodo dei moltiplicatori di Lagrange, definiamo la funzione lagrangiana:
L(x, y, λ) = -x - y + λ (1 - x² - y²)
Le derivate parziali rispetto a x, y e λ sono:
// Derivata rispetto a x
∂L/∂x = -1 - 2λx = 0 ⟹ x = -1/(2λ)
// Derivata rispetto a y
∂L/∂y = -1 - 2λy = 0 ⟹ y = -1/(2λ)
// Derivata rispetto a λ (vincolo)
∂L/∂λ = 1 - x² - y² = 0
Risolvendo per x ed y, si osserva che se si imposta x = y, allora:
x² + x² = 1 ⟹ 2x² = 1 ⟹ x = ±1/√2
Sostituendo in f(x, y), si ottiene:
La soluzione ottima risulta essere (1/√2, 1/√2) con valore -√2.
Riprendiamo il problema:
min f(x, y) = (x - 2)² + (y - 3)²
soggetto al vincolo: x² + y² - 10 ≤ 0
Analizziamo due casi:
2² + 3² - 10 = 4 + 9 - 10 = 3 > 0
il punto non è ammissibile.
x² + y² = 10
Per risolvere il problema vincolato, si utilizza la funzione lagrangiana:
L(x, y, μ) = (x - 2)² + (y - 3)² + μ (x² + y² - 10)
dalla quale si ricavano le condizioni di stazionarietà rispetto a x e y, ottenendo un sistema non lineare. Attraverso l'analisi di tali condizioni e il rapporto x/y = 2/3 (derivabile dalle equazioni di stazionarietà), si determina il punto sul bordo del cerchio che minimizza la funzione obiettivo. I calcoli numerici forniscono una soluzione approssimata (ad esempio, x ≈ 1.754 e y ≈ 2.631 con f(x, y) ≈ 0.197), che rappresenta il punto del cerchio x² + y² = 10 più vicino a (2, 3).
La convessità gioca un ruolo cruciale nell'ottimizzazione non lineare. Se la funzione obiettivo f(x) è convessa e l'insieme ammissibile definito dai vincoli è convesso, ogni minimo locale è anche globale. La convessità della funzione è definita dalla proprietà:
f(λx<sub>1</sub> + (1-λ)x<sub>2</sub>) ≤ λ f(x<sub>1</sub>) + (1-λ) f(x<sub>2</sub>), ∀ x<sub>1</sub>, x<sub>2</sub> e 0 ≤ λ ≤ 1
Similarmente, un insieme X è convesso se per ogni x1 e x2 in X, la combinazione convessa λx1 + (1-λ)x2 per 0 ≤ λ ≤ 1 appartiene a X.
La maggior parte dei metodi per l'ottimizzazione non lineare si basa su approcci iterativi. Una sequenza {xk} convergente a x* soddisfa tassi di convergenza diversi:
Tasso di Convergenza | Descrizione | Formula |
---|---|---|
Lineare | Il rapporto degli errori decresce con un fattore costante r, 0 < r < 1 | lim (||xk+1 - x*|| / ||xk - x*||) = r |
Superlineare | Il rapporto degli errori tende a 0 | lim (||xk+1 - x*|| / ||xk - x*||) = 0 |
Quadratica | L'errore al passo successivo è proporzionale al quadrato dell'errore al passo corrente | lim (||xk+1 - x*|| / ||xk - x*||²) = M |
Metodi come quello di Newton e i metodi quasi-Newton tendono a mostrare una convergenza quadratica, mentre il metodo del gradiente normalmente converge linearmente.
L'ottimizzazione non lineare trova applicazioni in numerosi campi:
La formulazione e la risoluzione di tali problemi richiedono spesso una combinazione di metodi analitici e tecniche numeriche sofisticate, in modo da affrontare la complessità e la non linearità intrinseche dei modelli.
In sintesi, l'ottimizzazione non lineare rappresenta un'area cruciale della matematica applicata, utile per affrontare problemi che vanno ben oltre le limitazioni delle funzioni lineari. Grazie a una solida base teorica che include condizioni di primo e secondo ordine e le condizioni KKT, combinata con metodi iterativi robusti sia per problemi vincolati che non vincolati, è possibile ottenere soluzioni ottimali in contesti complessi e multidimensionali.
La comprensione dei concetti della convessità è fondamentale per garantire che le soluzioni trovate siano globalmente ottimali. Sebbene i calcoli possano diventare complessi, specialmente in presenza di molteplici vincoli non lineari, l'impiego appropriato degli strumenti e degli algoritmi di ottimizzazione permette di modellare e risolvere problemi reali in numerosi campi applicativi, dalla finanza all'ingegneria, dal machine learning alla ricerca operativa.
Le tecniche descritte in questa trattazione, accompagnate da esempi pratici e formule esplicative, costituiscono un solido punto di partenza per approfondimenti ulteriori e implementazioni pratiche nei casi di studio più complessi.
Di seguito, la lista completa degli URL utilizzati per la discussione: