cerca
Ricerca Operativa - PL - Pasticceria - 3.11.04
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Uni.RO-PL-3nov2004 History

Hide minor edits - Show changes to output

September 12, 2009, at 03:59 PM by MiTicozzo-detto anche Stefano -
Deleted line 106:
Added line 109:
September 12, 2009, at 03:58 PM by MiTicozzo-detto anche Stefano -
Added line 107:
September 12, 2009, at 03:55 PM by MiTicozzo-detto anche Stefano -
Changed line 91 from:
'''min [(somma)'_i_' (somma)'_j_' x'_ij_' * cProd'_ij_'] + [(somma)'_i_' (somma)'_j_' z'_ij_' * cMag'_i_']
to:
'''min [(somma)'_i_' (somma)'_j_' x'_ij_' * cProd'_ij_'] + [(somma)'_i_' (somma)'_j_' z'_ij_' * cMag'_i_']'''
Changed lines 50-51 from:
7) Contratto con i trasportatori: limiti di quantita' trasportabili dopo ogni turno (Kg)
to:
7) Contratto con i trasportatori: limiti di quantita' trasportabili
dopo ogni turno (Kg)
Changed lines 124-125 from:
min 12 x11 + 15 x12 + 8 x21 + 11.5 x22 + 10 x31 + 12 x32 + 1.8 z11 + 0.4 z12 + 1.8 z21 + 0.4 z22
to:
min 12 x11 + 15 x12 + 8 x21 + 11.5 x22 + 10 x31 + 12 x32 + 1.8 z11
+ 0.4 z12 + 1.8 z21 + 0.4 z22
Added lines 1-224:
[[Torna alla pagina di Ricerca Operativa -> Ricerca Operativa]]
----

(:title Ricerca Operativa - PL - Pasticceria - 3.11.04:)
%titolo%''':: Ricerca Operativa - PL - Pasticceria - 3.11.04 ::'''

!!Testo del problema
Una pasticceria rifornisce un centro commerciale di due tipi di lavorati. Gli operai dell’azienda lavorano in tre turni orari (dalle 6 alle 14, dalle 14 alle 22 e dalle 22 alle 6). Il costo della produzione di ogni tipo di lavorato varia da turno a turno, a causa della diversa paga oraria degli operai. Alla fine di ciascun turno, parte dei lavorati prodotti viene trasportata al centro commerciale, parte può essere immagazzinata e trasportata al centro commerciale al termine dei turni successivi. Anche la conservazione dei lavorati nel magazzino, tuttavia, ha un costo.\\
La produzione di ciascun lavorato richiede l’utilizzo di alcune materie prime, conservate in un magazzino esterno, diverso da quello utilizzato per i lavorati, avente capacità limitata. Il rifornimento di materie prime deve essere effettuato una volta al giorno, all’inizio del primo turno.\\
La pasticceria deve assicurare una fornitura minima giornaliera complessiva. Inoltre, a causa di convenzioni con i trasportatori, sono fissati dei limiti minimi e massimi alla quantità totale di lavorati trasportabili dalla pasticceria al centro commerciale alla fine di ogni turno.\\
Pianificare la produzione giornaliera, minimizzando i costi.\\
Formulare il problema, classificarlo e risolverlo con i dati del file PASTICC.TXT.

!!!Dati
[@
1) Costi di produzione (Euro / Kg)

Turno Lavorato A Lavorato B
1 12 15
2 8 11.5
3 10 12

2) Costi di magazzino (Euro / Kg)

Lavorato A 1.8
Lavorato B 0.4

3) Composizione dei lavorati (percentuale)

Ingrediente Lavorato A Lavorato B
X 20 50
Y 60 10
Z 20 40

4) Volume degli ingredienti (decimetri cubi / Kg)

Ingrediente Volume
X 20
Y 35
Z 15

5) Capacita' del magazzino:

7100 decimetri cubi

6) Fornitura minima per il centro commerciale:

300 Kg

7) Contratto con i trasportatori: limiti di quantita' trasportabili dopo ogni turno (Kg)

Turno Minimo Massimo
1 65 135
2 70 135
3 50 135

8) Affitto del magazzino:

0.20 Euro / decimetro cubo

9) Aumento della produzione minima:

5 Kg
@]

!!Formulazione del problema
!!!Dati
* '''turni = 3''' (numero di turni)
* '''lavorati = 2''' (numero di lavorati prodotti)
* '''mp = 3''' (numero di materie prime)
* '''cProd'_ij_'''' (costo di produzione del lavorato i=1..2 nel turno j=1..3) [€]
* '''cMag'_i_'''' (costo di immagazzinamento del lavorato i=1..2) [€]
* '''comp'_ik_'''' (percentuale di materia prima k=1..3 nel lavorato i=1..2) [%]
* '''volMP'_k_'''' (volume occupato dalla materia prima k=1..3) [dm'^3^'/Kg]
* '''cap = 7100''' (capacità del magazzino) [dm'^3^']
* '''fornMin = 300''' (fornitura minima da garantire al centro commerciale) [Kg]
* '''trMin'_j_'''' (quantità minima di lavorato trasportabile dopo il turno j=1..3) [Kg]
* '''trMax'_j_'''' (quantità massima di lavorato trasportabile dopo il turno j=1..3) [Kg]

!!!Variabili
* '''x'_ij_'''' (quantità di lavorato i=1..2 da produrre nel turno j=1..3) [Kg]
* '''y'_ij_'''' (quantità di lavorato i=1..2 da spedire al centro commerciale dopo il turno j=1..3) [Kg]
* '''z'_ij_'''' (quantità di lavorato i=1..2 da mandare in magazzino dopo il turno j=1..3) [Kg]
* '''w'_k_'''' (quantità di materia prima k=1..3 da comprare) [Kg]

Le variabili sono continue e non negative.

!!!Funzione obiettivo
Dobbiamo minimizzare i costi:\\
'''min [(somma)'_i_' (somma)'_j_' x'_ij_' * cProd'_ij_'] + [(somma)'_i_' (somma)'_j_' z'_ij_' * cMag'_i_']

Importante: nel contributo della produzione si contano tutti e tre i turni, mentre nel contributo del magazzino solo i primi due turni (perché alla fine del terzo turno il magazzino va svuotato).

!!!Vincoli
* vincolo che impone di spedire una quantità minima di lavorato dopo ogni turno:\\
'''(somma)'_i_' y'_ij_' >= trMin'_j_'''' (per ogni j)
* vincolo che impone di spedire una quantità massima di lavorato dopo ogni turno:\\
'''(somma)'_i_' y'_ij_' <= trMax'_j_'''' (per ogni j)
* vincolo sulla produzione minima da garantire al centro commerciale:\\
'''(somma)'_i_' (somma)'_j_' x'_ij_' >= fornMin'''
* vincolo di capacità del magazzino:\\
'''(somma)'_i_' (somma)'_j_' z'_ij_' <= cap'''
* vincolo che impone che le materie prime utilizzate non superino quelle disponibili:\\
'''(somma)'_i_' (somma)'_j_' comp'_ik_' * x'_ij_' <= w'_k_'''' (per ogni k)\\
che va Lindizzato spostando tutti i termini non noti a sinistra, e quindi:\\
'''(somma)'_i_' (somma)'_j_' comp'_ik_' * x'_ij_' – w'_k_' <= 0''' (per ogni k)
* vincoli che impongono la conservazione dei lavorati nei vari turni. Nota bene: l'intero contenuto del magazzino deve essere spedito in giornata, quindi entro e non oltre il terzo turno (nulla rimane del giorno prima)\\
** '''x'_i1_' – y'_i1_' – z'_i1_' = 0''' (per ogni i)
** '''z'_i1_' + x'_i2_' – y'_i2_' – z'_i2_' = 0''' (per ogni i)
** '''z'_i2_' + x'_i3_' – y'_i3_' = 0''' (per ogni i)

!!Lindizzazione del problema
[@
! esercizio - Pasticceria

! variabili: x(i,j) = quantità di lavorato prodotto al turno j [Kg]
! y(i,j) = quantità di lavorato spedito dopo il turno j [Kg]
! z(i,j) = quantità di lavorato immagazzinato dopo il turno j [Kg]
! w(k) = quantità di materie prime acquistate [Kg]
! le variabili sono continue e non negative

! funzione obiettivo;
min 12 x11 + 15 x12 + 8 x21 + 11.5 x22 + 10 x31 + 12 x32 + 1.8 z11 + 0.4 z12 + 1.8 z21 + 0.4 z22

st

! vincolo di spedizione minima di lavorato
trMin1) y11 + y12 >= 65
trMin2) y21 + y22 >= 70
trMin3) y31 + y32 >= 50

! vincolo di spedizione massima di lavorato
trMax1) y11 + y12 <= 135
trMax2) y21 + y22 <= 135
trMax3) y31 + y32 <= 135

! vincolo di produzione minima
produz) y11 + y12 + y21 + y22 + y31 + y32 >= 300

! vincolo di capacità del magazzino
capacit) 20 q1 + 35 q2 + 15 q3 <= 7100

! vincolo disponibilità materie prime
dispMP1) 0.2 x11 + 0.2 x21 + 0.2 x31 + 0.5 x12 + 0.5 x22 + 0.5 x32 - q1 <= 0
dispMP2) 0.6 x11 + 0.6 x21 + 0.6 x31 + 0.1 x12 + 0.1 x22 + 0.1 x32 - q2 <= 0
dispMP3) 0.2 x11 + 0.2 x21 + 0.2 x31 + 0.4 x12 + 0.4 x22 + 0.4 x32 - q3 <= 0

! vincolo di conservazione dei lavorati nei vari turni
cons11) x11 - y11 - z11 = 0
cons12) x12 - y12 - z12 = 0
cons21) z11 + x21 - y21 - z21 = 0
cons22) z12 + x22 - y22 - z22 = 0
cons31) z21 + x31 - y31 = 0
cons32) z22 + x32 - y32 = 0

end
@]

!!Altre domande
!!!Al direttore della pasticceria viene offerto dello spazio per conservare le materie prime in un magazzino adiacente. L’affitto sarebbe di 0.20 euro per ogni decimetro cubo occupato. La proposta è vantaggiosa? Qual’è il massimo volume di magazzino che è utile affittare?
Osservando il report della soluzione, vediamo che il prezzo-ombra del vincolo relativo alla capacità del magazzino è 0.352931:

[@ ROW SLACK OR SURPLUS DUAL PRICES
TRMIN1) 0.000000 -3.100000
TRMIN2) 65.000000 0.000000
TRMIN3) 50.000000 0.000000
TRMAX1) 70.000000 0.000000
TRMAX2) 0.000000 0.900000
TRMAX3) 35.000000 0.000000
PRODUZ) 0.000000 -18.782352
CAPACIT) 0.000000 0.352941
...@]

Questo vuol dire che la proposta di 0.20 euro per decimetro cubo è quasi la metà di quello che saremmo disposti a pagare, quindi la proposta è assolutamente vantaggiosa. Per poter dire qual è il massimo volume di magazzino che è utile affittare dovremmo invece fare un'analisi parametrica, fissando ad esempio arbitrariamente il valore della capacità a 100000 e vedere cosa succede:

[@RIGHTHANDSIDE PARAMETRICS REPORT FOR ROW: CAPACIT

VAR VAR PIVOT RHS DUAL PRICE OBJ
OUT IN ROW VAL BEFORE PIVOT VAL

7100.00 0.352941 3208.82
X12 Z21 14 7550.00 0.352941 3050.00
X22 SLK 9 7 8400.00 0.247059 2840.00
100000. 0.000000E+00 2840.00@]

A quanto pare conviene arrivare a 8400 decimetri cubi totali, quindi affittare '''8400 – 7100 = 1300''' decimetri cubi.

!!!Il direttore del centro commerciale richiede un aumento della produzione minima garantita di 5 Kg. Che aumento comporterebbe nei costi di produzione? La produzione ottima cambierebbe?
Come si può vedere dall'analisi di sensitività:

[@ RIGHTHAND SIDE RANGES
ROW CURRENT ALLOWABLE ALLOWABLE
RHS INCREASE DECREASE
TRMIN1 65.000000 50.000000 35.000000
TRMIN2 70.000000 65.000000 INFINITY
TRMIN3 50.000000 50.000000 INFINITY
TRMAX1 135.000000 INFINITY 70.000000
TRMAX2 135.000000 12.058824 35.000000
TRMAX3 135.000000 INFINITY 35.000000
PRODUZ 300.000000 5.256410 23.076923
...@]

La produzione può aumentare di 5.256410 (colonna “allowable increase”) senza che usciamo dalla soluzione ottima. Ovviamente cambierà il valore ottimo, e per scoprire di quanto abbiamo due modi equivalenti: il primo è quello sbrigativo e prevede l'aggiornamento dei dati nel listato in Lindo e la riesecuzione dell'algoritmo risolutivo; il secondo è quello più furbo in generale (non sempre gli algoritmi trovano la soluzione in pochi secondi), e consiste nel controllare il prezzo-ombra relativo al vincolo di produzione e moltiplicarlo per le unità di cui vogliamo incrementarlo. Nel nostro caso il prezzo-ombra vale 18.782352, che moltiplicato per 5 (i 5 kg di cui vogliamo aumentare la produzione) fa '''93,91176'''.

!!!Il responsabile della qualità, inoltre, riferisce che l’aumento della fornitura minima richiesta richiede una modifica al contratto con i trasportatori, che comprenda un incremento della quantità minima trasportata dopo ciascun turno. Il responsabile propone di aumentare la quantità minima trasportabile durante il primo turno, dato che la richiesta dei trasportatori è la meno stringente, portandola da 65 a 70 Kg. Valutare la sua proposta. Come possono essere modificate le quantità minime trasportate in modo che la produzione ottima non cambi?
Aumentare la quantità minima trasportabile dopo il primo turno è l'idea peggiore, perché si tratta dell'unico vincolo attivo:

[@ ROW SLACK OR SURPLUS DUAL PRICES
TRMIN1) 0.000000 -3.100000
TRMIN2) 65.000000 0.000000
TRMIN3) 55.000000 0.000000@]

La conseguenza di questo aumento è tuttavia solo un aumento del valore ottimo (3318.235), ma non della soluzione ottima. Per sapere fino a quanto possiamo aumentare le quantità minime trasportabili senza che quest'ultima cambi, basta guardare la colonna “allowable increase” dell'analisi di sensitività:

[@ RIGHTHAND SIDE RANGES
ROW CURRENT ALLOWABLE ALLOWABLE
RHS INCREASE DECREASE

MIN1 65.000000 50.000000 35.000000
MIN2 70.000000 65.000000 INFINITY
MIN3 50.000000 50.000000 INFINITY@]

----
[[Torna alla pagina di Ricerca Operativa -> Ricerca Operativa]]