...

(9) Esercizi di Programmazione Lineare Intera

by user

on
Category: Documents
9

views

Report

Comments

Transcript

(9) Esercizi di Programmazione Lineare Intera
Esercizi di Programmazione Lineare Intera
a cura di A. Agnetis
1
Risolvere il seguente problema di PLI con l’algoritmo dei piani di Gomory:
max z = 40x1 + 24x2 + 15x3 + 8x4
8x1 + 6x2 + 5x3 + 4x4
≤
22
xi
≥
0
xi intero
Soluzione.
Si tratta di un problema di knapsack intero, che potrebbe dunque anche risolversi ad
esempio con la programmazione dinamica, o con un branch and bound specializzato.
Tuttavia utilizziamo i piani di Gomory.
Portando il problema in forma canonica:
0 -40 -24 -15 -8 0
22 8
6
5
4 1
l’elemento di pivot è chiaramente 8, da cui il tableau ottimo
110 0
22
1
8
6
3
4
10 12
5
8
1
2
5
1
8
La soluzione ottima è frazionaria. Dunque, aggiungendo il taglio si ha:
110 0
22
1
8
3
-4 0
6
10 12
5
3
4
- 34
5
8
- 58
1
8
- 18
1
2
- 12
0
0
1
applicando una iterazione del metodo duale del simplesso, si ha che l’elemento pivot è
-3/4, si ottiene il nuovo tableau ottimo:
1
104 0
2 1
1 0
0
0
1
5
0
8
0
4
0
8
1
5
6
2
3
1
6
4
3
e quindi la soluzione ottima (2, 1, 0, 0).
2
Risolvere il seguente problema di PLI con l’algoritmo dei piani di Gomory, indicando le
equazioni del taglio in funzione delle variabili originarie:
max z = x1 + 2x2
x1 − 2x2
≥
−2
x1 + x2
≤
3
x1 , x2
≥
0
x1 , x2 interi
Soluzione.
Portando il problema in forma canonica si ha
0 -1
2 -1
3 1
-2 0 0
2 1 0
1 0 1
ove
x3 = 2 + x1 − 2x2
x4 = 3 − x1 − x2
Dopo due iterazioni del metodo del simplesso si arriva al tableau ottimo:
14
3
5
3
4
3
0
0
1
0
1
0
1
3
1
3
- 13
4
3
1
3
2
3
La soluzione è frazionaria, occorre quindi generare un taglio. Scegliendo la prima riga, si
ha:
1
2
1
− x3 − x4 ≤ −
3
3
3
2
e dunque il nuovo tableau:
14
3
5
3
4
3
- 23
0
0
1
0
0
1
0
0
1
3
1
3
- 13
- 13
4
3
1
3
2
3
- 13
0
0
0
1
effettuando l’operazione di pivot attorno all’elemento sulla riga 3 e in colonna 3, si ottiene
il nuovo tableau ottimo
4
1
2
2
0
0
1
0
0
1
0
0
0
0
0
1
1 1
0 1
1 -1
1 -3
e dunque la soluzione ottima del problema originario è (2, 1). Per ottenere l’espressione
del taglio, osserviamo che questo può scriversi
x3 + x4 ≥ 2
da cui, sfruttando le espressioni di x3 e x4 sopra riportate, si ha in definitiva che il taglio
è
x2 ≤ 1
3
Un insieme di 7 lavorazioni deve essere eseguito da una macchina a controllo numerico.
Ciascuna lavorazione richiede alcuni utensili, e, una volta effettuata, porta un certo profitto. La seguente tabella mostra, per ogni lavorazione, l’insieme di utensili richiesto e il
corrispondente profitto:
lavorazione
Utensili
profitto
1
A, C, D, E
2000
2
A, B, F, G
1500
3
A, B, C, E
1800
4
B, D, E, G
1700
5
E, F, G
800
6
A, D, G
900
7
A, E, F
750
Il magazzino utensili della macchina può ospitare solo al più 5 utensili. Formulare come
PLI il problema di determinare la configurazione del magazzino utensili con l’obiettivo di
massimizzare il profitto.
3
Soluzione.
Si tratta di decidere quali utensili dovranno essere montati sulla macchina, e di conseguenza quali lavorazioni potranno essere effettuate. Risulta allora conveniente introdurre le seguenti variabili di decisione:
{
xi =
{
yj =
1 se la lavorazione i è effettuata
0 altrimenti
1 se l’utensile j è montato
0 altrimenti
La funzione obiettivo risulta dunque essere
min 2000x1 + 1500x2 + 1800x3 + 1700x4 + 800x5 + 900x6 + 750x7
Vediamo ora i vincoli. Un primo tipo di vincoli consiste nell’esprimere il fatto che una
lavorazione può essere eseguita solo se tutti i corrispondenti utensili sono montati sulla
macchina. Questo può essere espresso dicendo che una lavorazione i non può effettuarsi
se l’utensile j richiesto non è montato. Nel nostro esempio, otteniamo 25 vincoli:
x 1 ≤ yA
x 1 ≤ yC
x 1 ≤ yD
x 1 ≤ yE
x 2 ≤ yA
x 2 ≤ yB
x 2 ≤ yF
x 2 ≤ yG
...
...
In alternativa, si poteva più compattamente scrivere
x1 + x2 + x3 + x6 + x7 ≤ 5yA
x2 + x3 + x4 ≤ 3yB
x1 + x3 ≤ 2yC
...
...
4
dove, si noti, se yj = 0 tutte le variabili corrispondenti a lvaorazioni che richiedono
l’utensile j sono contemporaneamente poste a 0. (Questa seconda formulazione è però
molto più debole, dal punto di vista risolutivo, della prima).
Un secondo tipo di vincoli è relativo alla capacità limitata di immagazzinamento della
macchina, che può esprimersi semplicemente come
yA + yB + yC + yD + yE + yF + yG ≤ 5
4
In una rete di calcolatori, vi sono n terminali ciascuno dei quali deve essere collegato ad un
concentratore. Ci sono m concentratori, a ognuno dei quali possono essere collegati al più
k terminali. Perché un terminale possa essere collegato a un concentratore, quest’ultimo
deve essere ”attivo”. Il costo di attivazione di un concentratore j è fj , mentre il costo di
collegamento del terminale i con il concentratore j è cij . Formulare come PLI il problema
di minimizzare i costi complessivi, nel rispetto dei vincoli.
Soluzione.
Si tratta di un problema di plant location. Le variabili di decisione saranno
{
1 se il terminale i è collegato al concentratore j
0 altrimenti
xij =
{
yj =
1 se il concentratore j è attivato
0 altrimenti
La funzione obiettivo risulta dunque dalla somma dei due tipi di costi:
min
n
∑
cij xij +
i=1
m
∑
fj y j
j=1
Per quanto riguarda i vincoli, oltre ai consueti vincoli di assegnamento (ciascun terminale
deve essere connesso a uno e un solo concentratore)
m
∑
xij = 1 i = 1, . . . , n
j=1
avremo i vincoli per cui un terminale i non può essere collegato al concentratore j se
quest’ultimo non è attivato, ossia
xij ≤ yj
i = 1, . . . , n,
j = 1, . . . , m
Infine, i vincoli sulla capacità di ciascun concentratore:
n
∑
xij ≤ k j = 1, . . . , m
i=1
5
5
Ci sono n lavori indivisibili da effettuare, ognuno caratterizzato da una sua durata pi ,
i = 1, . . . , n. Avendo due persone a disposizione, volete ripartire i lavori tra queste due
persone facendo in modo che i loro carichi di lavoro siano il più possibile bilanciati.
Formulare il problema in termini di problema di knapsack, e risolverlo con un opportuno algoritmo nel caso n = 4, p1 = 2, p2 = 3, p3 = 6, p4 = 7.
Soluzione.
Poiché la somma dei pi è pari a 18, si tratta di risolvere il problema
max z = 2x1 + 3x2 + 6x3 + 7x4
2x1 + 3x2 + 6x3 + 7x4 ≤ 9
xi ∈ {0, 1}
dove le variabili pari a 1 e a 0 indicheranno la partizione dei lavori tra le due persone.
Applicando l’algoritmo di programmazione dinamica si ottiene
↓k→y
0
1
2
3
4
0
0
0
0
0
0
1
0
0
0
0
0
2
0
2
2
2
2
3
0
2
3
3
3
4
0
2
3
3
3
5
0
2
5
5
5
6
0
2
5
6
6
7
0
2
5
6
7
8
0
2
5
8
8
9
0
2
5
9
9
Dalla tabella si ricostruisce una soluzione ottima, x1 = 1, x2 = 0, x3 = 0, x4 = 1.
6
In figura è rappresentata una rete stradale che unisce varie località. A ogni tratto di
strada sono associati due numeri. Il primo rappresenta il tempo necessario a percorrerlo,
il secondo il pedaggio che è necessario pagare. Si vuole andare da A a B nel minor tempo
possibile, ma si hanno in tasca solo 44 euro per pagare i pedaggi. Formulare in termini di
programmazione lineare a numeri interi il problema di trovare il percorso più conveniente.
Soluzione.
La formulazione si ottiene aggiungendo alla classica formulazione di cammino minimo
un vincolo di knapsack. Chiaramente, l’aggiunta di questo vincolo distrugge la totale
unimodularità della matrice dei coefficienti, per cui il problema non è più risolvibile in
termini di programmazione lineare.
6
1
2.5, 13
2
4, 14
3, 16
2, 11
2, 30
A
B
2, 8
1, 6
6, 23
4, 20
3
1.5, 25
4
Figura 1: Rete stradale.
min z = 3xA1 + 4xA3 + 2x13 + 2.5x12 +
x23 + 1.5x34 + 2x41 + 2x42 + 4x2B + 6x4B
xA1 + xA2 = 1
xA1 + x41 = x13 + x12
x12 + x42 = x23 + x2B
xA3 + x13 + x23 = x34
x34 = x41 + x42 + x4B
16xA1 + 20xA3 + 30x13 + 13x12 + 6x23 + 25x34 + 11x41 + 8x42 + 14x2B + 23x4B ≤ 44
xij
intero
7
Dato un grafo G = (N, A), non orientato, si consideri il seguente problema. I nodi del
grafo rappresentano città che devono essere difese da pattuglie. Le pattuglie possono
essere dislocate in corrispondenza dei nodi del grafo, e possono essere di due tipi, fisse e
mobili. Una pattuglia fissa dislocata nella città i difende solo la città i. Una pattuglia
mobile dislocata nella città i difende, oltre a i, anche tutte le città adiacenti, ossia difende
{i} ∪ δ(i). Dislocare una pattuglia fissa ha un costo pari a 2, una mobile ha costo 3.
Il problema è quello di difendere tutti i nodi del grafo al costo minimo. Formulare il
problema come programmazione lineare a numeri interi.
Soluzione.
7
Consideriamo due insiemi di variabili, ossia:
{
1 se è installata una pattuglia fissa in i
0 altrimenti
xi =
{
1 se è installata una pattuglia mobile in i
0 altrimenti
yi =
La funzione obiettivo può essere immediatamente espressa come
min
∑
(2xi + 3yi )
i∈N
Si tratta ora di esprimere il vincolo sulla difesa di ciascuna città. Questo può essere
scritto tenendo conto che una città i è difesa se in i è dislocata una pattuglia, oppure se
in i ∪ δ(i) ve ne è almeno una mobile:
∑
xi + yi +
yj ≥ 1
j∈δ(i)
8
Siete i curatori dell’opera omnia del celebre gruppo Hashirim, i quali hanno pubblicato,
durante la loro carriera, complessivamente n brani, di varie durate (sia pi la durata del
brano i). Vi è stato chiesto di far uscire una collana di m compact disc, comprendente
tutti i brani, con l’unico requisito che la differenza tra la durata complessiva del cd più
lungo e di quello più corto sia minima.
Dovete decidere di quali brani deve essere composto ogni cd. Formulare il problema
come programmazione lineare a numeri interi.
Soluzione.
Utilizziamo delle variabili di assegnamento, del tipo
{
xij =
1 se il brano i è assegnato al cd j
0 altrimenti
E dunque si hanno i vincoli in base ai quali ciascun brano deve essere assegnato a un
cd:
m
∑
xij = 1
i = 1, . . . , n
j=1
Per scrivere la funzione obiettivo, dobbiamo introdurre le variabili scalari y e z che
staranno a indicare la lunghezza del più corto e più lungo cd rispettivamente. Per fare
questo basta imporre
y≤
n
∑
pi xij
j = 1, . . . , m
i=1
8
z≥
n
∑
pi xij
j = 1, . . . , m
i=1
dopo di che, la funzione obiettivo è semplicemente
min z − y
9
Un’azienda produce scarpe. Nella tabella sono indicate le risorse richieste dalla produzione
di ciascun paio di scarpe, e il prezzo di vendita. Il problema consiste nel determinare
la produzione di ciascun tipo di scarpa, considerando le risorse disponibili, e tenendo
presente che per ciascun tipo di scarpa è stabilita una soglia minima, sotto la quale non
vi è convenienza a produrre (ad esempio, la produzione di scarponi sarà pari a 0 oppure
dev’essere almeno pari a 100 paia, e cosi’ per gli altri tipi). Formulare il problema di
massimizzare il profitto in termini di programmazione lineare intera.
tipo
cuoio (g) ore-macchina chiodi
scarponi da montagna
850
3
20
mocassini
600
2
15
scarpe da passeggio
700
2.5
20
disponibilità
120000
7000
40000
soglia
100
200
150
prezzo (euro/paio)
150
120
130
Soluzione.
Come in tutti i problemi di allocazione di risorse, avremo alcune variabili continue (x1 ,
x2 , x3 ) corrispondenti al numero di unità di ciascun prodotto da produrre. La funzione
obiettivo e i vincoli sulla disponibilità di risorse sono dunque:
max z = 150x1 + 120x2 + 130x3
850x1 + 600x2 + 700x3 ≤ 120000
3x1 + 2x2 + 2.5x3 ≤ 7000
20x1 + 15x2 + 20x3 ≤ 40000
oltre a questi vincoli, vanno però aggiunti quelli relativi alla soglia di produzione.
In particolare, dobbiamo esprimere il fatto che se un tipo di articolo viene prodotto, la
corrispondente variabile deve assumere almeno un certo valore. Questo richiede allora
l’introduzione di variabili binarie:
{
yi =
1 se l’articolo i è prodotto
0 altrimenti
9
vanno quindi aggiunti altri due tipi di vincoli. Il primo tipo impone che una variabile
xi non può essere maggiore di zero se quell’articolo non viene prodotto. Tale vincolo deve
scomparire nel caso in cui invece l’articolo venga prodotto, per cui dobbiamo usare un
numero M sufficientemente grande a secondo membro (ad es. M > 100000):
x 1 ≤ M y1
x 2 ≤ M y2
x 3 ≤ M y3
Un secondo tipo di vincoli deve invece imporre che, se un articolo viene prodotto, ciò deve
avvenire in una certa quantità minima:
x1 ≥ 100y1
x2 ≥ 200y2
x3 ≥ 150y3
10
Una macchina deve effettuare n lavorazioni non interrompibili {1, 2, . . . , n}. La lavorazione i richiede un tempo di processamento pi . Per ogni lavorazione è specificata una
due date di . Formulare in termini di programmazione lineare a numeri interi il problema
di determinare l’ordine in cui eseguire le lavorazioni in modo tale da minimizzare la somma
delle tardiness (ricordiamo che la tardiness Ti è definita come max{0, Ci − di }, ove Ci è il
tempo di completamento del job i).
Soluzione.
Si tratta di un problema di scheduling (NP completo in senso ordinario). Possiamo
utilizzare le variabili continue Si a indicare l’istante di inizio del job i, e dunque:
Ci = Si + pi
i = 1, . . . , n
Ti ≥ Ci − di
i = 1, . . . , n
Ti ≥ 0
i = 1, . . . , n
dove la variabile Ti , dal momento che stiamo minimizzando, sarà pari, in una soluzione
ottima, esattamente alla tardiness del job i. La funzione obiettivo sarà dunque
min
n
∑
Ti
i=1
10
Rimane da esprimere il vincolo che la macchina non può eseguire più di una lavorazione
alla volta. A questo scopo possiamo introdurre le variabili
{
sij =
1 se il job i è effettuato prima di j
0 se il job j è effettuato prima di i
Vogliamo dunque imporre che se sij = 1, allora deve essere
Si + p i ≤ Sj
mentre ciò non è vero se sij = 0. Introducendo una costante M sufficientemente grande
∑
(ad esempio M > pi ), per ogni coppia di job i, j avremo i due vincoli:
Si + pi ≤ Sj + M (1 − sij )
e
Sj + pj ≤ Si + M (1 − sji )
oltre a, ovviamente:
sij + sji = 1
11
Esercizi proposti
11
Risolvere il seguente problema di knapsack con il metodo del branch and bound o con la
programmazione dinamica:
max z = 2x1 + 3x2 + 4x3 + 6x4
x1 + 4x2 + 5x3 + 6x4 ≤ 9
xj ∈ {0, 1}
Risposta. La soluzione ottima è (1, 0, 0, 1), di valore 8.
12
Risolvere il seguente problema con il metodo del branch and bound:
max z = 3x1 + x2
x1 + 4x2
≤
12
2x1 + x2
≤
5
xj intero
Risposta. La soluzione ottima è (2, 1), di valore 7.
13
Risolvere il seguente problema di knapsack:
max z = 2x1 + 3x2 + 4x3 + 6x4
x1 + 4x2 + 5x3 + 6x4 ≤ 9
xj ∈ {0, 1}
Risposta. La soluzione ottima è (1, 0, 0, 1), di valore 8.
12
14
Risolvere il seguente problema di PLI con l’algoritmo dei piani di Gomory:
max z = 40x1 + 24x2 + 15x3 + 8x4
8x1 + 6x2 + 5x3 + 4x4
≤
22
xj
≥
0
xj intero
Risposta. La soluzione ottima è (2, 1, 0, 0), di valore 104.
15
Risolvere il seguente problema di PLI con l’algoritmo dei piani di Gomory:
max z = 2x1 + x2
3x1 − 2x2 ≤ 0
x1 + 2x2 ≥ 0
xj ≥ 0
xj ∈ {0, 1}
Risposta. La soluzione ottima è (0, 1), di valore 1.
16
Risolvere il seguente problema di knapsack
max z = 52x1 + 40x2 + 38x3 + 19x4 + x5
17x1 + 5x2 + 13x3 + 4x4 + 5x5 ≤ 20
xi ∈ {0, 1}
Risposta. La soluzione ottima è (0, 1, 1, 0, 0), di valore 78.
17
Risolvere il seguente problema di knapsack
max z = 52x1 + 10x2 + 38x3 + 9x4 + x5
17x1 + 5x2 + 13x3 + 3x4 + x5
xi
13
≤
intero
29
Risposta. La soluzione ottima è (1, 0, 0, 4, 0), di valore 88.
18
Risolvere il seguente problema di knapsack
max z = 12x1 + 9x2 + 10x3 + 7x4
8x1 + 6x2 + 7x3 + 5x4 ≤ 20
xi ∈ {0, 1}
Risposta. La soluzione ottima è (1, 0, 1, 1), di valore 29.
19
Si risolva il seguente problema di knapsack
max z = 3x1 + 7x2 + 9x3 + 11x4
6x1 + 8x2 + 9x3 + 10x4 ≤ 23
xi ∈ {0, 1}
Risposta. La soluzione ottima è (0, 0, 1, 1), di valore 20.
20
Risolvere il seguente problema di PLI con l’algoritmo dei piani di Gomory:
max z = x1 + 2x2
x1 − 2x2 ≥
−2
x1 + x2
≤
3
x1 , x2
≥
0
x1 , x2 interi
Risposta. La soluzione ottima è (2, 1), di valore 4.
14
21
Grazie a una vincita al superenalotto, avete ora il problema di investire 100 milioni di
lire. Un vostro amico vi consiglia di comprare quote di fondi di investimento, della società
Kezef. In particolare vi sono due tipi di fondi: Kezef Italia e Kezef Europa. Le quote
possono essere acquistate solo in lotti indivisibili, da 12 milioni ciscuno per Kezef Italia, da
20 milioni ciascuno per Kezef Europa. Il vostro amico ritiene che il rendimento annuo di
Kezef Italia dovrebbe essere pari a un sesto del capitale investito; quello di Kezef Europa
pari al 15%. Il numero di lotti di Kezef Europa non può superare il 50% del numero
complessivo di lotti acquistati. Formulare il problema come programmazione lineare a
numeri interi e risolverlo con il metodo dei piani di taglio, indicando le disequazioni
(tagli) generate nel corso del procedimento.
22
Ci sono n lavori indivisibili da effettuare, ognuno caratterizzato da una sua durata pi ,
i = 1, . . . , n. Avendo due persone a disposizione, volete ripartire i lavori tra queste
due persone facendo in modo che i loro carichi di lavoro siano il più possibile bilanciati.
Formulare il problema in termini di problema di knapsack.
23
Un operatore turistico noleggia il proprio furgoncino a 8 posti per far fare ai turisti
escursioni guidate di Radiator Springs. Si presentano all’operatore quattro gruppi di
turisti, costituiti da 2, 3, 4 e 5 persone. Siccome non c’è posto per tutti, l’operatore chiede
a ogni gruppo (i cui componenti non vogliono separarsi) di offrire una cifra per il trasporto.
I componenti dei quattro gruppi si consultano, e alla fine offrono, rispettivamente, 30, 50,
80 e 70 euro. Quali gruppi accetterà l’operatore turistico per massimizzare i guadagni?
Rispondere formulando il problema e applicando un opportuno algoritmo.
24
Una macchina deve eseguire 6 lavori, ciascuno dei quali è caratterizzato da una durata pi ,
una data di consegna di e un peso wi , che può pensarsi come una misura dell’importanza
di ciascun lavoro. Tra i lavori esistono relazioni di precedenza. Formulare come PLI
il problema di determinare la sequenza di lavorazione sulla macchina in modo tale da
15
minimizzare il massimo valore che assume la quantità wi Ti , ove Ti indica la tardiness del
lavoro i-esimo.
i di
1 8
2 12
3 8
4 8
5 12
6 13
wi
2
1
2
1
4
3
pi
4
3
2
4
1
1
precede...
5
5
6
6
–
–
25
Un grafo non orientato G(N, A) rappresenta un’area geografica, in cui N è l’insieme dei
nodi (numerati da 1 a n) e A è quello degli archi. I nodi rappresentano potenziali città
in cui una linea aerea può aprire sedi. Aprire una sede nella città i ha un costo pari a fi .
Per ogni arco (i, j) sono dati due valori: cij e dij . Può essere attivata una tratta aerea tra
le città i e j, solo se vi è una sede in i oppure in j. Se vi è una sede soltanto in una delle
due città, allora la compagnia prevede di guadagnare cij . Se vi è una sede in ambedue
le città, allora la compagnia prevede di guadagnare dij > cij . Il problema consiste nel
determinare in quali città aprire una sede, in modo da massimizzare i profitti. Scrivere la
formulazione del problema come PLI.
26
E’ dato un grafo non orientato G(N, A), in cui N è l’insieme dei nodi (numerati da 1 a n)
e A è quello degli archi. Per ogni arco (i, j) è associato un peso cij . Il problema consiste
nel colorare ciascun nodo con uno tra quattro colori (Rosso, Blu, Nero, Verde), in modo
da minimizzare il peso complessivo degli archi aventi ambedue gli estremi con lo stesso
colore. Formulare tale problema come PLI.
27
In un pronto soccorso, per ciascun giorno della settimana è dato un certo fabbisogno in
termini di persone che devono essere presenti in servizio a tempo pieno. Il fabbisogno di
una persona a tempo pieno può essere soddisfatto da due persone a tempo parziale.
persone
lunedi martedi mercoledi giovedi venerdi sabato
10
8
12
9
9
7
16
domenica
8
La struttura dei turni è la seguente: quattro giorni consecutivi di lavoro a tempo pieno,
seguiti da un giorno di lavoro a tempo parziale, seguiti da due di riposo.
Il costo settimanale di un lavoratore si ottiene considerando 100 euro per ogni giorno
feriale (dal lunedi al venerdi), 110 per ogni sabato lavorato e 130 per ogni domenica
lavorata. Questi costi si dimezzano per le giornate lavorate a tempo parziale.
Formulare come PLI il problema di come coprire il fabbisogno di personale al costo
minimo.
28
Un circuito elettronico è rappresentato da un grafo non orientato G(N, A), in cui N è
l’insieme dei nodi (componenti) e A quello degli archi (collegamenti). Per ogni nodo i è
dato un peso wi che rappresenta l’area del componente e per ogni arco (i, j) un valore cij
che rappresenta il numero di collegamenti elettrici tra i due componenti i e j. Si vuole
partizionare l’insieme dei nodi in 3 insiemi, in modo tale che il peso dei nodi di ciascun
sottoinsieme sia compreso tra due valori L e U , e che la somma dei valori degli archi aventi
estremi in insiemi diversi sia minimizzata. Formulare tale problema come PLI.
29
In una scuola di musica, bisogna definire l’orario settimanale. Ci sono da riempire complessivamente quattro pomeriggi (L, Ma, Me, G) di tre ore ciascuno (indicate come ore 1,
2 e 3). Le specifiche sono le seguenti:
• Ci sono da allocare 6 ore di chitarra, 3 di violino, 2 di pianoforte e 1 di arpa.
• Ogni giorno vi deve essere lezione di almeno due strumenti diversi.
• Siccome l’arpista e il pianista hanno litigato, non vogliono incontrarsi e quindi le
due lezioni corrispondenti non devono mai essere consecutive.
• Ogni insegnante può esprimere delle preferenze, in termini di ore in cui non vuole
fare lezione:
– l’insegnante di chitarra non vuole fare lezione nelle ore 1 del lunedi o del
martedi;
– l’insegnante di violino non vuole fare lezione nelle ore 2 del mercoledi o del
giovedi;
17
– l’insegnante di pianoforte non vuole mai fare lezione nell’ora 3 di qualsiasi
giorno;
– l’insegnante di arpa non vuole fare lezione il martedi.
Formulare come PLI il problema di determinare un orario che rispetti tutti i vincoli
indicati, minimizzando il numero di ore che non rispettano le preferenze degli insegnanti.
30
Il centro prove di una casa automobilistica deve eseguire una serie di test su motori. I
motori disponibili sono raggruppati in classi, numerate da 1 a 5 (1 è la classe più alta).
Ciascun test j è caratterizzato da due informazioni: il chilometraggio kj e la classe minima
cj . Ad esempio, se cj = 3, vuol dire che il test j può essere svolto da motori di classe 1,
2 o 3, ma non 4 o 5.
A ogni classe i, sono associate due quantità: il prezzo pi di acquisto di un motore di
quella classe, e un costo chilometrico hi . Ad esempio, se tutto il test j venisse svolto da un
motore di classe i, il costo chilometrico sarebbe kj hi . Si consideri che uno stesso motore
può essere utilizzato per più test, dunque pi viene pagato una volta sola.
Formulare PER ESTESO come PLI il problema di determinare quali motori acquistare
e come assegnare i test al fine di minimizzare la spesa complessiva.
test j
A
B
C
D
E
motore (classe) i
1
2
3
4
5
kj (km) cj
20000
4
40000
2
30000
5
50000
4
20000
3
pi (euro) hj (euro/km)
10500
0.3
8500
0.4
8000
0.5
7500
0.6
6000
0.7
31
Nel territorio di una ASL, vi sono n centri abitati, in ognuno dei quali può essere dislocata
una unità di pronto soccorso. Per ogni coppia di centri i e j è nota la distanza dij .
18
Considerando che, data una dislocazione delle unità, ciascun centro abitato si servirà del
pronto soccorso più vicino, il problema consiste nel decidere dove localizzare m < n unità
di pronto soccorso, facendo in modo che sia minima la massima distanza di un centro
abitato dal pronto soccorso a esso più vicino. (Non si può aprire più di una unità in un
centro abitato.) Formulare il problema come PLI.
32
Un sistema per la gestione dei carichi elettrici domestici controlla, tra le altre cose, uno
scaldabagno. Lo scaldabagno può essere tenuto acceso o spento durante ciascuna delle 24
ore. Siccome si vuole però che la temperatura dell’acqua non scenda mai troppo rispetto
a un valore di riferimento, devono valere le seguenti condizioni:
• Nell’arco delle 24 ore, lo scaldabagno non può rimanere spento per più di 12 ore.
• Lo scaldabagno non può restare mai spento per più di 4 ore consecutive.
• Ogni intervallo di tempo in cui lo scaldabagno è acceso deve durare almeno 3 ore.
Il costo dell’energia elettrica varia di ora in ora: sia pt il consumo (in KWh) se lo
scaldabagno è acceso durante l’ora t, t = 1, . . . , 24 (chiaramente il consumo è nullo se
lo scaldabagno è spento). Formulare come programmazione lineare intera il problema
di decidere, per ciascuna ora nell’arco di una giornata, se lo scaldabagno deve rimanere
acceso o spento, nel rispetto delle condizioni indicate, e in modo da minimizzare i costi
complessivi.
33
Un’officina di gommista consiste di un reparto cambio gomme (1), seguito da un reparto
dove viene effettuata la convergenza (2). Ogni vettura i deve essere processata prima
dal reparto (1), per un tempo pi1 , e poi dal (2), per un tempo pi2 , fermo restando che
ciascun reparto può operare su una vettura sola alla volta. L’istante al quale una vettura
termina la lavorazione nel reparto (2) prende il nome di tempo di completamento. La
sequenza con cui le vetture sono processate dai due reparti è la stessa. Considerando che
per ciascuna vettura saranno necessari i tempi (in minuti) indicati in tabella, formulare
come programmazione lineare intera il problema di determinare la sequenza delle vetture
che minimizza la somma dei tempi di completamento delle lavorazioni.
19
vettura pi1
A
12
B
7
C
9
D
8
pi2
8
15
11
4
34
Un grafo G = (N, A) rappresenta una rete stradale. Una pattuglia di polizia può essere
localizzata in qualsiasi nodo. Vi sono due tipi di pattuglie. Una normale, che ha un costo
cn , che consente di controllare il nodo stesso. Una speciale, che ha un costo superiore
cs > cn , che consente di controllare, oltre al nodo stesso, anche tutti i suoi adiacenti.
Per il grafo in figura, formulare come programmazione a numeri interi il problema di
determinare in quali nodi dislocare pattuglie normali e speciali in modo da controllare
tutti i nodi del grafo al costo minimo.
35
Uno stabilimento per la produzione di ceramiche deve organizzare la produzione per il
prossimo periodo. La fornace deve produrre i lotti indicati in tabella, per ognuno dei quali
è dato l’istante di rilascio (ri , release date, in giorni a partire da oggi) prima del quale il
lotto non può iniziare, il tempo necessario al suo processamento (pi , giorni), una data di
consegna prevista (di , due date, in giorni a partire da oggi) e la penale (wi , in euro) che
si paga se un lotto non viene terminato entro la propria due date. Una volta iniziato, il
lotto non può essere interrotto.
Formulare come programmazione lineare intera il problema di determinare l’istante di
inizio di ciascun lotto in modo tale da minimizzare i costi legati alle penali.
lotto ri
A
0
B
1
C
7
D
2
pi
4
5
3
6
di
8
8
12
15
wi
3000
2500
1000
4000
36
Dalle 12 alle 18 di un certo giorno, il prezzo dell’energia elettrica al consumatore è
il seguente (centesimi di euro/kWh, supposto costante all’interno dello slot temporale
orario):
20
12–13 13–14 14–15 15–16 16–17 17–18
3
1
2
2
3
1
Un consumatore deve usare, nell’arco orario compreso tra le 12 e le 18, tre elettrodomestici: lavatrice, lavastoviglie e forno. Per i programmi scelti, tali elettrodomestici
hanno i profili di carico (kW) indicati nella seguente tabella (si noti che i programmi di
lavatrice e forno durano tre ore, la lavastoviglie due):
lavatrice
2 1 1,5
lavastoviglie
forno
2,5
1
2,5 2 1,5
Una volta fatto partire, un elettrodomestico non può essere interrotto. In nessuna
ora si possono superare i 3.5 kW complessivi. Il problema è decidere quando far partire
ciascun elettrodomestico per minimizzare i costi complessivi, nel rispetto del vincolo sul
consumo complessivo. Formulare il problema come programmazione lineare a numeri
interi.
37
È dato un insieme di 10 elettrodomestici, che devono essere caricati su 4 furgoni. Ciascun
elettrodomestico è caratterizzato da un peso wi , e dal suo tipo (congelatore, lavatrice,
lavastoviglie). Il massimo peso che un furgone può portare è 230 kg. Ciascun elettrodomestico, per il trasporto, deve essere montato su un apposito supporto di legno.
Uno stesso supporto può essere usato, su un furgone, per più elettrodomestici dello stesso
tipo. I furgoni hanno varie restrizioni per quanto riguarda i tipi di elettrodomestico che
possono ospitare, come indicato nella tabella, che riporta anche il costo dei vari tipi di
supporto.
i
wi
1 80
2 90
3 105
4 80
5 75
6 85
7 90
8 55
9 65
10 75
tipo
congelatore
congelatore
congelatore
frigorifero
frigorifero
frigorifero
frigorifero
lavastoviglie
lavastoviglie
lavastoviglie
21
tipo
furgoni compatibili
congelatore
1,2,4
frigorifero
1,3,4,5
lavastoviglie
2,3,4,5
costo supporto
500 euro
600 euro
700 euro
Formulare come PLI il problema di come caricare i furgoni minimizzando la spesa per
i supporti.
38
Un insieme di n lavorazioni deve essere effettuato da una macchina utensile. Ogni lavorazione è caratterizzata da un numero di giorni-macchina necessari per effettuarla pi , una
due date di (espressa in giorni a partire da oggi), e un guadagno ri . Il guadagno però è conseguito se e solo se la lavorazione termina entro la propria due date. La macchina utensile
può eseguire una sola lavorazione per volta. Le lavorazioni non sono interrompibili.
Formulare come PLI il problema di determinare in che ordine sequenziare le lavorazioni
sulla macchina al fine di massimizzare il guadagno.
22
Fly UP