1 Programmazione Lineare Intera
Fino ad ora abbiamo affrontato problemi in cui le variabili potevano assumere valori reali. Ora invece ci concentreremo su problemi in cui le variabili posso- no assumere solo valori interi. Per prima cosa vedremo un paio di esempi di problemi reali in cui le variabili possono assumere solo valori interi.
1.1 Il problema dello zaino
Sono dati n tipi di oggetti. Agli oggetti di tipo i, i = 1, . . . , n, sono associati un peso p i e un valore v i . ´ E inoltre dato uno zaino con capacit´ a pari a b. Il problema dello zaino consiste nel decidere quanti oggetti di ciascun tipo inserire nello zaino, tenendo conto che non si pu´ o superare la capacit´ a dello zaino e che si vuole massimizzare il valore complessivo degli oggetti inseriti. Agli oggetti di tipo i associo una variabile x i che rappresenta il numero di oggetti di tipo i da inserire nello zaino. Si noti che tali variabili saranno necessariamente non negative e possono assumere solo valori interi. Abbiamo un unico vincolo nel problema, quello di non superare la capacit´ a b dello zaino. Tale vincolo ´ e espresso dalla seguente disequazione:
n
X
i=1
p i x i ≤ b.
L’obiettivo, da massimizzare, ´ e rappresentato dalla seguente formula:
n
X
i=1
v i x i .
Quindi il modello del problema ´ e il seguente
max P n
i=1 v i x i P n
i=1 p i x i ≤ b
x i ≥ 0, x i ∈ I i = 1, . . . , n
dove I indica l’insieme degli interi. Esiste anche una variante del problema, detta problema dello zaino binario, in cui esiste un solo esemplare di ogni tipo di oggetto e quindi le variabili x i possono assumere i due soli valori 0 (se non si inserisce l’oggetto i) oppure 1 (se lo si inserisce). Variabili che possono assumere due soli valori vengono dette binarie. Il modello ´ e il seguente:
max P n
i=1 v i x i
P n
i=1 p i x i ≤ b
x i ≥ 0, x i ∈ {0, 1} i = 1, . . . , n
Esempio 1 Si supponga di avere tre tipi 1,2 e 3 di oggetti, con pesi p 1 = 5 p 2 = 7 p 3 = 9
e valori
v 1 = 11 v 2 = 14 v 3 = 18.
Si supponga inoltre di avere uno zaino con capacit´ a pari a 18. Il modello per il problema dello zaino ´ e il seguente:
max 11x 1 + 14x 2 + 18x 3
5x 1 + 7x 2 + 9x 3 ≤ 18 x 1 , x 2 , x 3 ≥ 0, x 1 , x 2 , x 3 ∈ I
mentre per il problema dello zaino binario l’unica differenza ´ e rappresentata dal fatto che le variabili possono assumere i soli valori 0 e 1:
max 11x 1 + 14x 2 + 18x 3
5x 1 + 7x 2 + 9x 3 ≤ 18 x 1 , x 2 , x 3 ≥ 0, x 1 , x 2 , x 3 ∈ {0, 1}
1.2 Problemi di produzione e distribuzione di prodotti
Supponiamo di avere m negozi che hanno bisogno di un certo prodotto e n centri di produzione dove tale prodotto pu´ o essere realizzato. Avremo inoltre le seguenti indicazioni.
• Il negozio i richiede una quantit´a pari ad a i unit´ a di prodotto.
• Il centro di produzione j ha la possibilit´a di realizzare fino ad un massimo di M j unit´ a di prodotto.
• Trasportare un’unit´a di prodotto dal centro di produzione j al negozio i ha un costo pari a c ij .
• Attivare il centro di produzione j ha un costo fisso pari a k j . Tale costo interviene se si produce anche una sola unit´ a di prodotto nel centro di produzione j ed ´ e indipendente dalla quantit´ a prodotta (si pensi ai costi di attivazione dei macchinari che sono gli stessi sia che si produca una sola unit´ a di prodotto, sia che se ne producano migliaia).
Il problema consiste nel decidere, per ogni centro di produzione j e negozio i,
quante unit´ a di prodotto realizzare nel centro di produzione j perch´ e siano in-
viate al negozio i, tenuto conto che si devono soddisfare le richieste di tutti i
negozi, non si possono superare le capacit´ a produttive dei singoli centri e che si
vuole realizzare il tutto minimizzando i costi.
Per prima cosa identifichiamo le variabili del problema. Per ogni coppia ne- gozio i, i = 1, . . . , m, e centro di produzione j, j = 1, . . . , n, definiremo una variabile x ij che rappresenta le unit´ a di prodotto realizzate nel centro di pro- duzione j per essere inviate al negozio i. Tali variabili sono ovviamente non negative e possono assumere solo valori interi. Oltre a tali variabili, introducia- mo anche delle variabili binarie y j da associare a ciascun centro di produzione.
La variabile y j assumer´ a valore 0 se il centro di produzione j non viene attivato, ovvero non viene realizzato alcun prodotto in esso, mentre assume il valore 1 se il centro viene attivato.
Per esprimere il vincolo che deve essere soddisfatta la richiesta a i di prodotti del negozio i, richiederemo che la somma dei prodotti realizzati nei vari centri di produzione j per il negozio i sia pari ad a i , il che corrisponde alla seguente equazione:
n
X
j=1
x ij = a i .
Nel centro di produzione j la quantit´ a massima di prodotto realizzabile ´ e pari a 0 se il centro non viene attivato (ovvero se y j = 0) ed ´ e pari a M j se il centro viene attivato (ovvero se y j = 1). Il vincolo sul massimo numero di prodotti realizzabili nel centro j ´ e quindi rappresentato dalla seguente disequazione:
m
X
i=1
x ij ≤ M j y j .
Per quanto riguarda i costi, avremo dei costi di trasporto dai centri di produzione j ai negozi i rappresentati dalla seguente espressione:
m
X
i=1 n
X
j=1
c ij x ij .
A questi dovremo aggiungere i costi fissi k j per i soli centri di produzione j attivati (per i quali cio´ e si ha y j = 1). Tali costi sono rappresentati dalla seguente espressione
n
X
j=1
k j y j .
(Si noti che i centri di produzione non attivati, cio´ e con y j = 0, non portano alcun contributo a tali costi). I costi complessivi sarano dati dalla somma di costi di trasporto e costi fissi:
m
X
i=1 n
X
j=1
c ij x ij +
n
X
j=1
k j y j .
Tabella 1:
N 1 N 2 N 3
C1 2 1 5
C2 1 5 3
C3 4 3 1
C4 2 3 3
Quindi il modello del problema ´ e il seguente:
min P m i=1
P n
j=1 c ij x ij + P n j=1 k j y j
P n
j=1 x ij = a i i = 1, . . . , m P m
i=1 x ij ≤ M j y j j = 1, . . . , n
x ij ≥ 0, x ij ∈ I i = 1, . . . , m, j = 1, . . . , n y j ∈ {0, 1} j = 1, . . . , n
Esempio 2 Si considerino 3 negozi N 1, N 2, N 3 di elettrodomestici con ri- chieste di lavatrici pari rispettivamente a 500, 700 e 800. Si considerino inoltre 4 centri di produzione C1, C2, C3, C4 con capacit´ a di produzione massima pari rispettivamente a 1500, 2000, 2500 e 2500. I costi per trasportare una sin- gola lavatrice da un centro di produzione Cj ad un negozio N i sono riportati in Tabella 1, mentre i costi fissi per i centri di produzione sono rispettivamente pari a 100, 150, 150 e 200. Il modello risultante ´ e il seguente:
min 2x 11 + x 12 + 4x 13 + 2x 14 + x 21 + 5x 22
3x 23 + 3x 24 + 5x 31 + 3x 32 + 1x 33 + 3x 34
100y 1 + 150y 2 + 150y 3 + 200y 4
tenuto conto che
x 11 + x 12 + x 13 + x 14 = 500 x 21 + x 22 + x 23 + x 24 = 700 x 31 + x 32 + x 33 + x 34 = 800 x 11 + x 21 + x 31 ≤ 1500y 1
x 12 + x 22 + x 32 ≤ 2000y 2
x 13 + x 23 + x 33 ≤ 2500y 3
x 14 + x 24 + x 34 ≤ 2500y 4
x ij ≥ 0, x ij ∈ I i = 1, 2, 3 j = 1, 2, 3, 4
y 1 , y 2 , y 3 , y 4 ∈ {0, 1}
1.3 Uso delle variabili binarie per modellare vincoli logici
Le variabili binarie vengono utilizzate per modellare decisioni del tipo ”fare o non fare una cosa”, ”svolgere o non svolgere un’attivit´ a”. Data la variabile binaria x, ad essa si associa il valore 0 se si decide di non fare una cosa e il valore 1 se si decide di farla. Tali variabili vengono spesso utilizzate per modellare vincoli di tipo logico attraverso equazioni o disequazioni. Nel seguito verranno dati alcuni esempi di questo. Il vincolo logico ”se non svolgo l’attivit´ a 1 allora non svolgo neppure l’attivit´ a 2” pu´ o essere espresso tramite il vincolo
x 2 ≤ x 1
dove x 1 e x 2 sono ovviamente le variabili binarie associate rispettivamente alle attivit´ a 1 e 2. Il vincolo logico ”se svolgo l’attivit´ a 3 allora svolgo almeno una tra le attivit´ a 4 e 5” pu´ o essere espresso tramite il vincolo
x 3 ≤ x 4 + x 5
Il vincolo logico ”se svolgo l’attivit´ a 6 allora devo svolgere sia l’attivit´ a 7 che l’attivit´ a 8 ” pu´ o essere espresso tramite il vincolo
2x 6 ≤ x 7 + x 8
oppure attraverso la coppia di vincoli
x 6 ≤ x 7 x 6 ≤ x 8 .
1.4 Relazione tra un problema lineare intero e il suo ri- lassamento lineare
Si consideri un problema di Programmazione Lineare Intera (abbreviato con PLI nel seguito) in forma canonica:
w ∗ = max c T x A T x ≤ b x ≥ 0, x ∈ I n
dove ricordiamo che I denota l’insieme degli interi. Si indicher´ a con Z a la regione ammissibile di questo problema, e quindi
Z a = {x ∈ I n : A T x ≤ b, x ≥ 0}, e con Z ott l’insieme delle sue soluzioni ottime:
Z ott = {x ∗ ∈ Z a : c T x ∗ ≥ c T x ∀ x ∈ Z a }.
Chiameremo rilassamento lineare del problema di PLI, il problema di Pro- grammzaione Lineare Ordinaria (abbreviato con PLO nel seguito) ottenuto dal problema di PLI omettendo la richiesta che le variabili siano intere, e quindi
z ∗ = max c T x A T x ≤ b
x ≥ 0 Esempio 3 Si consideri il seguente problema di PLI:
max x 1 + x 2
x 1 + 2x 2 ≤ 4 2x 1 + x 2 ≤ 4 x 1 , x 2 ≥ 0, x 1 , x 2 ∈ I.
Si determinino per via grafica la soluzione del problema di PLI e del suo rilas- samento lineare.
Come al solito, indicheremo con S a e S ott rispettivamente la regione ammissibile e l’insieme delle soluzioni ottime del problema di PLO. Possiamo notare che
Z a ⊆ S a
e che i due problemi hanno la stessa funzione obiettivo c T x. Da ci´ o conseguono le seguenti relazioni tra il problema di PLI e il problema di PLO suo rilassamento lineare.
1. Se S a = ∅, allora Z a = ∅.
2. Se l’obiettivo del problema di PLI ´ e illimitato, allora lo ´ e anche quello del suo rilassamento lineare.
3. Se S ott 6= ∅ e Z ott 6= ∅, allora il valore ottimo w ∗ del problema di PLI non pu´ o essere superiore al valore ottimo z ∗ del suo rilassamento lineare, ovvero
w ∗ ≤ z ∗
4. Se S ott 6= ∅ contiene un punto x ∗ a coordinate tutte intere, allora x ∗ ∈ Z ott
e w ∗ = z ∗ , come accade nel seguente esempio
max x 2
x 1 + 2x 2 ≤ 4
2x 1 + x 2 ≤ 4
x 1 , x 2 ≥ 0, x 1 , x 2 ∈ I.
Altri casi possibili nelle relazioni tra un problema di PLI e il suo rilassamento lineare sono le seguenti.
1. Z a = ∅ ma S ott 6= ∅, come nel seguente esempio:
max x 2
x 1 ≥ 1 4 x 1 ≤ 3 4 x 2 ≤ 2
x 1 , x 2 ≥ 0, x 1 , x 2 ∈ I.
2. Z a = ∅ ma l’obiettivo del rilassamento lineare ´e illimitato, come nel seguente esempio:
max x 2
x 1 ≥ 1 4 x 1 ≤ 3 4
x 1 , x 2 ≥ 0, x 1 , x 2 ∈ I.
3. Se A, b e c contengono solo valori razionali, allora Z ott 6= ∅ implica S ott 6= ∅.
Se vi sono coefficienti irrazionali allora pu´ o accadere che Z ott 6= ∅ ma il rilassamento lineare ha obiettivo illimitato, come nel seguente esempio:
max x 2
x 2 = √ 2x 1 x 1 , x 2 ≥ 0, x 1 , x 2 ∈ I.
dove Z a (e quindi Z ott ) contiene la sola origine, ma l’obiettivo del rilassa- mento lineare ´ e illimitato.
Un’importante osservazione ´ e la seguente.
I problemi di PLO sono in generale molto pi´ u semplici da risolvere dei pro- blemi di PLI 1 . In particolare il rilassamento lineare di un problema di PLI ´ e tipicamente molto pi´ u facile da risolvere del problema di PLI stesso.
Questa osservazione pu´ o spingere a risolvere i problemi di PLI con la seguente procedura:
• risolvo il rilassamento lineare del problema di PLI;
1