cerca
Ricerca Operativa - PNL - Scorte - 04.04.07
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Uni.RO-PNL-4apr2007 History

Hide minor edits - Show changes to output

Added lines 1-94:
[[Torna alla pagina di Ricerca Operativa -> Ricerca Operativa]]
----

(:title Ricerca Operativa - PNL - Scorte - 04.04.07:)
%titolo%''':: Ricerca Operativa - PNL - Scorte - 04.04.07 ::'''

!!Testo del problema
L’ufficio approvvigionamenti di una grande impresa deve stabilire i contratti di fornitura per uno dei suoi numerosi magazzini. Al magazzino devono pervenire periodicamente alcuni differenti tipi di materie prime e di semilavorati, provenienti ciascuno da un fornitore diverso. Per ogni tipo di merce da immagazzinare è stato calcolato quale sarebbe il periodo ottimale per minimizzare i costi di immagazzinamento.\\
Il problema è che tali periodi sono tutti diversi uno dall’altro e non sono multipli fra loro e quindi, se fossero rispettati, provocherebbero un continuo afflusso di fornitori al magazzino ogni giorno della settimana. L’ufficio invece vorrebbe pianificare i rifornimenti mantenendoli periodici ma in modo da farli arrivare sempre lo stesso giorno della settimana (eventualmente non tutti ogni settimana).
L’obiettivo è di minimizzare i costi, sapendo che per ogni prodotto i vale la formula:

%center%Attach:RO-PNL-4apr2007.jpg

dove c(i) è il costo di magazzino relativo alla merce i, c*(i) è il costo ottimo, T(i) è il periodo di rifornimento della merce i e T*(i) è il periodo ottimo.\\
Formulare il problema, classificarlo e risolverlo con i dati del file SCORTE.TXT.

!!!Dati
[@
Le merci sono 7.
I loro periodi ottimi sono i seguenti:

Merce Periodo ottimo
[giorni]
A 17
B 10
C 19
D 12
E 5
F 12.5
G 24

I costi ottimi corrispondenti sono i seguenti:

Merce Costo ottimo
[KEuro/settimana]
A 140
B 65
C 200
D 115
E 75
F 145
G 100
@]

!!Formulazione del problema
!!!Dati
* '''merce = 7''' (numero di merci)
* '''perOtt'_i_'''' (periodo ottimo della merce i=1..7) [giorni]
* '''cosOtt'_i_'''' (costo ottimo della merce i=1..7) [migliaia di € / settimana]

!!!Variabili
* '''x'_i_'''' (periodo di rifornimento della merce i=1..7)

La variabile è intera.

!!!Funzione obiettivo
Bisogna minimizzare i costi, e possiamo ricavare la formula per calcolarli da quella data nel testo (in cui sono indicati come c'_i_').\\
Introduciamo la variabile ausiliaria '''per'_i_'''', che definireni poi nei vincoli:\\
'''min (somma)'_i_' cosOtt'_i_' * 1/2 * (per'_i_' / perOtt'_i_' + perOtt'_i_' / per'_i_')'''

!!!Vincoli
Dobbiamo fare in modo che il periodo da scegliere per ogni merce sia multiplo di una settimana, quindi di 7 giorni, ed è proprio per questo motivo che non abbiamo potuto inserire direttamente la x'_i_' nella funzione obiettivo ma abbiamo dovuto introdurre la seguente variabile ausiliaria:\\
'''per'_i_' = x'_i_' * 7''' (per ogni i)

!!Linghizzazione del problema
[@
! problema - Scorte;

model:

sets:
merce /1..7/: perOtt, cosOtt, per, x;
endsets

data:
perOtt = 17 10 19 12 5 12.5 24;
cosOtt = 140 65 200 115 75 145 100;
enddata

! funzione obiettivo;
min = @sum(merce(i):
cosOtt(i) * 1/2 * (per(i)/perOtt(i) + perOtt(i)/per(i)));

! vincolo che rende il periodo multiplo di 7 giorni;
@for(merce(i): per(i) = x(i) * 7);

! dichiarazione variabile intera x;
@for(merce(i): @gin(x(i)));

end
@]

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