5.3 KiB
Congestione come problema di allocazione
Lo studio del congestion avoidance come problema di ottimizzazione di allocazione di risorse. E' un problema definito in programmazione non lineare. Studio di:
- Come allocare risorse (divisione di banda) di modo da ottimizzare una certa funzione / obbiettivo La soluzione potrebbe essere non ottimale, ma la formulazione in termini di ottimizzazione puo' guidare la rete e gli utenti verso un punto di funzionamento desiderabile.
Le soluzioni si presentano come algoritmi distribuiti, decentralizzati, asincroni.
Il modello
La rete e' vista come un insieme di link {l}, di capacita' {c[l]}.
Supponiamo che le sorgenti abbiano un routing statico (che quindi e' noto come insieme di link utilizzati). Chiamiamo xs
il rate associato con la sorgente S
.
(slides per esempio semplice e definizioni)
Con queste ipotesi, il problema dell'assegnare la banda ai flussi noti, che presenta infinite soluzioni.
Funzioni di utilita'
Utilizziamo delle funzioni di utilita': U[s](xs)
che rappresentano il gradimento della sorgente al rate xs
. Le funzioni di utilita' sono supposte concave del tasso di sorgente xs
.
Nota: concava = prendendo due punti sulla funzione, la funzione e' sempre maggiore del segmento che unisce quei due punti. La concavita' rappresenta il fenomeno dei diminishing returns. Vuol dire che in corrispondenza di un certo aumento (di banda in questo caso) i corrispondenti elementi di gradimento diventano sempre minori, quindi hanno meno impatto sul gradimento (U(x)). Questo vuol anche dire che per avere lo stesso effetto di gradimento, a rate maggiore bisogna associare incrementi maggiori.
Massimizzare l'utilita'
Il problema si presenta quindi come la ricerca dell'allocazione di banda che massimizza l'utilita' tra tutti i flussi dati.
Formulazione come problema classico (Kelly, anni '90)
il max su (x0,x1,x2) della sommatoria per i da (1,3) di U[i](xi)
Con vincoli:
x0 + x1 <= cA
x0 + x2 <= cB
xi >= 0
Si nota come i vincoli abbiano forma lineare, ma il problema e' la sommatoria di funzioni non lineari => non lineare.
Programmazione non lineare
Si presentano i principi della programmazione non lineare.
Ottimizzazione Convessa
Esiste una classe di problemi di programmazione non lineare che possono essere risolti con relativamente poca fatica. Sono i problemi che riguardano l'ottimizzazione convessa. Nel nostro caso, la somma di funzioni concave e' una concava, e i vincoli definiscono un insieme convesso.
- All'interno di questo insieme, risulta facile trovare il punto di massimo di una funzione strettamente concava. Se la funzione e' strettamente convessa, risulta invece facile trovare il minimo.
Trovare il massimo di una funzione concava
Trovare il massimo di una funzione in piu' variabili e' semplice in quanto si definisce come il gradiente = 0. Questo pero' non considera il caso in cui il massimo si trovi sul limite dell'insieme, ossia quello in cui la derivata non e' definita / non e' 0 (se si considera una porzione minore della curva).
Per ovviare a questo problema, si puo' utilizzare una funzione lagrangiana.
Funzioni lagrangiane
Supponiamo di dover calcolare il massimo di una f(x)
appartenente a un insieme convesso C
, dovendo rispettare dei vincoli, che possono essere:
- Vincoli con uguaglianza
g[j](x) = 0
- Vincoli con disuguaglianza
h[j](x) <= 0
I vincoli sono generalmente funzioni non lineari. Senza i vincoli, sarebbe sufficiente porre il gradiente = 0, ma con i vincoli il massimo e' spesso sul bordo dell'insieme. Per questo, si studia una funzione in cui:
- i vincoli sono stati sostituiti all'interno della funzione obbiettivo, moltiplicati per i moltiplicatori di Lagrange, nella forma:
L (x, lambda, u) = f(x) - sommatoria per i di (lambda[i]*h[i]) // nota: porre lambda >= 0 implica il segno -
L (x, lambda, u) = f(x) + sommatoria per j di (u[j]*g[j])
Questo riconduce la funzione obbiettivo a una funzione senza vincoli, detta funzione lagrangiana, in cui la soluzione per gradiente = 0 e' valida.
La soluzione sara' quindi:
per ogni valore di i, la derivata dL/dxi = 0
per ogni valore di i, lambda*hi(x) = 0 // qui lambda e' != 0 solo se il vincolo non e' saturo, ossia se il vincolo non rappresenta un punto sul bordo del problema. Si noti come queste siano condizioni di complementary slackness, dove si analizzano le variabili duali del problema.
Problema di ottimizzazione (di Kelly)
E' un problema a livello di sistema: massimizzare l'utilita' totale del sistema, trattando le sorgenti in modo equo, non e' praticamente risolvibile in maniera centralizzata. Il problema viene pero' risolto in maniera distribuito, in cui ogni sorgente risolve un sottoproblema fa convergere la rete alla soluzione ottima del problema centralizzato. (vedi slides)
Problema secondario: fairness
Come assegnare la banda di modo da:
- rispettare equita' rispetto ai link
- non eccedere la capacita' dei link
Per ovviare al problema, si utilizza l'allocazione di risorse alpha-fair. (vedi slides) Si definisce inoltre la proportional fairness (vedi slides) e la max-min fairness (vedi slides)
(vedi slides su come separare un problema di ottimizzazione in algoritmi distribuiti)