Attività compagnia cargo: SOLUZIONE

E’ chiaro che non essendo l’attività della compagnia saltuaria, occorre determinare una soluzione periodica del problema e cioè una rotta ciclica che colleghi varie città e che presenti il massimo rapporto tra beneficio netto e tempi di percorrenza. Cercheremo quindi il ciclo tra le varie città che presenta il massimo beneficio medio.
A questo scopo è necessario definire quali siano i benefici netti da associare alle rotte che collegano ciascuna coppia di città. Consideriamo quindi due generiche città i e j che possono scambiarsi Nij prodotti e definiamo il beneficio netto come la somma dei ricavati qik(xk) ottenuti in j dalla vendita dei prodotti meno i costi di acquisto in i dei prodotti stessi (pari al prodotto delle quantità xk per i prezzi pik) ed il costo del trasporto cij da i a j.
Risolveremo dunque, per ogni coppia ij di città, il seguente problema
         Nij
max å [qjk(xk) - pikxk] - cij
{xk}  k=1
con i vincoli :
-capacità di carico dell’aereo
Nij
åxk£ X
k=1
-non negatività delle variabili di decisione
xk³ 0        k = 1,….,Nij
Si tratta di un classico problema di allocazione della capacità di carico X disponibile tra i vari prodotti. Il problema è non lineare a causa della non linearità dei benefici che di solito sono rappresentati da curve del tipo di quelle illustrate in Fig. 1 e cioè crescenti e concave. In questa ipotesi la curva del beneficio marginale q'k(xk) è decrescente e convessa come in Fig. 2. 

Supponiamo dapprima che il vincolo sulla capacità totale sia attivo (cioè rappresenti all’ottimo un’uguaglianza), mentre siano non attivi i vincoli sulla non negatività delle variabili (il che è senz’altro accettabile date le ipotesi fatte sulle funzioni qjk(xk)). Utilizzando il metodo dei moltiplicatori di Lagrange, definiamo la funzione

              Nij                                     Nij

L(xk,l) = å[qjk(xk) - pikxk] - cijlåxk  - X)
            K=1                                    k=1

le cui derivate rispetto a xk e a l uguagliate a zero forniscono il seguente sistema di Nij+1 equazioni algebriche

q'jk(xk) - pikl = 0          k = 1,……,Nij

Nij 
åxk - X = 0
k = 1

Tale sistema può essere risolto molto semplicemente variando il valore di nelle prime Nij equazioni, ricavando da ciascuna di esse il valore di xk (si ricordi che i prezzi pik sono noti) finchè non risulta soddisfatta anche l’ultima equazione. Dato l’andamento monotono delle funzioni q'kj (xk), a valori troppo bassi di corrisponderanno valori delle xk eccedenti la capacità di carico, mentre valori alti del moltiplicatore faranno sì che la stessa non venga pienamente utilizzata. Sarà dunque semplice modificare il valore di l ( ad esempio con un algoritmo di bisezione) fino ad ottenere la soluzione cercata. D’altra parte se il vincolo sulla capacità non fosse stato attivo, l sarebbe stato nullo e quindi le prime Nij equazioni avrebbero direttamente fornito i valori cercati delle variabili xk.
Un problema di questo tipo va risolto per ciascuna coppia ij di città e naturalmente la soluzione del problema del trasporto da i a j differirà da quella ottenuta tra j ed i. Al termine di questa procedura il grafo da esaminare sarà costituito da coppie di archi con diverso orientamento che collegano a due a due tutte le città e a ciascun arco sarà associato un costo (o un beneficio) rij e un tempo tij.Su questo grafo va individuato il ciclo a costo medio minimo (o equivalentemente a ricavo medio massimo). Supporremo d’ora in poi che gli rij indichino dei costi e pertanto siano negativi qualora su un certo percorso prevalgano i benefici.
Per giungere alla risoluzione del problema definiamo per ciascun arco un nuovo costo r*ij dato da:

r*ij = rij - m tij

e notiamo che se la somma lungo un ciclo G dei costi r*ij è minore di zero, ciò implica che il costo medio rGdel ciclo è minore di m, cioè:

SG rij/SG tijm

e quindi anche il costo medio minimo r° è minore di m. D’altra parte per tutti i cicli per cui si verifica che la somma dei costi r*ij è positiva si può affermare che il relativo costo medio è superiore am. Sarà dunque possibile determinare il valore minimo di mcon un algoritmo che ne modifichi opportunamente il valore e verifichi, ad ogni passo, l’esistenza o meno di cicli lungo i quali la somma dei r*ij è negativa. L’algoritmo in questione può essere ancora un algoritmo di bisezione, ma può anche essere molto semplicemente una decrescita a scalini del valore di mfino alla scomparsa di cicli negativi. Occorre quindi, da ultimo, scegliere un opportuno metodo per individuare se nel grafo esistono cicli negativi. A questo scopo può essere usato l’algoritmo di programmazione dinamica che determina il cammino minimo tra due nodi qualunque di un grafo. Tale algoritmo, che è basato sull’assegnazione a ciascun nodo di un valore che rappresenta il minimo tra tutti i costi per raggiungere il nodo stesso da tutti quelli che lo precedono, raggiunge una soluzione (vale a dire il valore assegnato al nodo non viene più modificato) in un numero di passi al più pari al numero dei nodi. Nel caso ciò non si verifichi e quindi i valori assegnati ai nodi continuino a diminuire, ciò significa che nel grafo esiste almeno un ciclo a costo negativo.

La soluzione del problema complessivo potrà dunque essere ottenuta con i seguenti passi:

-           soluzione, per ogni coppia (i,j) di città, di un problema (non lineare) di allocazione, che per la sua particolare struttura può essere ricondotta ad una ricerca monodimensionale sul moltiplicatore di Lagrange. In questo modo si determinano i pesi rij da assegnare agli archi del grafo.

-           soluzione del problema di ricerca del ciclo a costo medio minimo sul grafo definito dai costi rij. Per la soluzione di questo problema si può procedere nuovamente ad una ricerca monodimensionale sul valore ottimo del costo, utilizzando per ogni nuovo tentativo l’algoritmo dei cammini minimi per determinare la presenza o meno di cicli negativi.


ESERCIZIO PRECEDENTE 
Testo
 ESERCIZIO SUCCESSIVO