|
Wiki
UniCrema
Materie per semestre
Materie per anno
Materie per laurea
Help
|
|
Uni.RO-Es2 History
Hide minor edits - Show changes to output
Changed line 295 from:
Bisogna andare in qualche menu e selezionare il comando "''Row parametrics...''", che farà apparire questa finestra:
to:
Bisogna andare nel menù "''Reports''" e selezionare il comando "''Parametrics...''", che farà apparire questa finestra:
Changed line 340 from:
* variabili in base: x52, x51, slack 3
to:
* variabili in base: x52, x51, slack 2
Changed line 346 from:
* variabili in base: x52, x51, slack 3 (tutte strettamente positive)
to:
* variabili in base: x52, x51, slack 2 (tutte strettamente positive)
Changed line 337 from:
* variabili in base: x25, slack 2, slack 3 (tutte strettamente positive)
to:
* variabili in base: x52, slack 2, slack 3 (tutte strettamente positive)
Changed line 340 from:
* variabili in base: x25, x15, slack 3
to:
* variabili in base: x52, x51, slack 3
Changed line 346 from:
* variabili in base: x25, x15, slack 3 (tutte strettamente positive)
to:
* variabili in base: x52, x51, slack 3 (tutte strettamente positive)
Changed line 349 from:
* variabili in base: x25, x15, x26
to:
* variabili in base: x52, x51, x62
Changed line 355 from:
* variabili in base: x25, x15, x26 (tutte strettamente positive)
to:
* variabili in base: x52, x51, x62 (tutte strettamente positive)
Changed line 358 from:
* variabili in base: slack 4, x15, x26
to:
* variabili in base: slack 4, x51, x62
Changed line 345 from:
''Situazione '''prima''' del primo cambio di base'':
to:
''Situazione '''prima''' del secondo cambio di base'':
Changed line 354 from:
''Situazione '''prima''' del primo cambio di base'':
to:
''Situazione '''prima''' del terzo cambio di base'':
Changed line 336 from:
''Situazione '''prima''' del primo cambio di base'':\\
to:
''Situazione '''prima''' del primo cambio di base'':
Changed line 339 from:
''Situazione '''dopo''' il primo cambio di base'':\\
to:
''Situazione '''dopo''' il primo cambio di base'':
Changed line 345 from:
''Situazione '''prima''' del primo cambio di base'':\\
to:
''Situazione '''prima''' del primo cambio di base'':
Changed line 348 from:
''Situazione '''dopo''' il primo cambio di base'':\\
to:
''Situazione '''dopo''' il primo cambio di base'':
Changed line 354 from:
''Situazione '''prima''' del primo cambio di base'':\\
to:
''Situazione '''prima''' del primo cambio di base'':
Changed line 357 from:
''Situazione '''dopo''' il primo cambio di base'':\\
to:
''Situazione '''dopo''' il primo cambio di base'':
Changed line 331 from:
%center%analisiParametricaGraf.jpg
to:
%center%Attach:analisiParametricaGraf.jpg
Changed lines 327-329 from:
Le colonne indicano rispettivamente le variabili uscite di base (VAR OUT) ed entrate in base (VAR IN) per ognuno dei punti di cambio di discontinuità, stessa cosa per il PIVOT ROW, il valore del termine noto (RHS VAL), il prezzo duale prima del pivot (DUAL PRICE BEFORE PIVOT) e la soluzione ottima (OBJ VAL).
..to be continued
to:
Le colonne indicano rispettivamente le variabili uscite di base (VAR OUT) ed entrate in base (VAR IN) per ognuno dei punti di cambio di discontinuità, stessa cosa per il PIVOT ROW, il valore del termine noto (RHS VAL), il prezzo duale di cui parleremo alla fine (DUAL PRICE BEFORE PIVOT) e la soluzione ottima (OBJ VAL).
In questa tabella sono contenute le informazioni per tracciare il grafico seguente (il valore 1000000 stara un po' la percezione della forma reale della curva.. si capirà meglio il suo andamento nelle considerazioni che faremo poi):
%center%analisiParametricaGraf.jpg
Il grafico parte dal punto con ascissa (RHS VAL) 400 e ordinata (OBJ VAL) 226977.\\ Quando arriva ad ascissa 1433.33 e ordinata 813333 avremo un primo cambio di base, e ci viene segnalato che diventa attiva la variabile slack 3. Ricordiamo brevemente l'ordine delle variabili: funzione obiettivo (1), area A (2), area B (3), acqua (4). Quindi questo cambio di base è caratterizzato dal fatto che siamo riusciti a riempire di cereali tutto il campo B.
''Situazione '''prima''' del primo cambio di base'':\\ * variabili in base: x25, slack 2, slack 3 (tutte strettamente positive) * vincoli attivi: acqua ''Situazione '''dopo''' il primo cambio di base'':\\ * variabili in base: x25, x15, slack 3 * vincoli attivi: acqua, area B
Quando arriviamo ad ascissa 2293,33 e ordinata 1301330 avremo un altro cambio di base, in cui diventa attiva la variabile slack 2. Ciò significa che siamo riusciti a riempire di cerali anche tutto il campo A.
''Situazione '''prima''' del primo cambio di base'':\\ * variabili in base: x25, x15, slack 3 (tutte strettamente positive) * vincoli attivi: acqua, area B ''Situazione '''dopo''' il primo cambio di base'':\\ * variabili in base: x25, x15, x26 * vincoli attivi: acqua, area B, area A
In pratica abbiamo iniziato a coltivare il cereale 6 sul terreno B.
''Situazione '''prima''' del primo cambio di base'':\\ * variabili in base: x25, x15, x26 (tutte strettamente positive) * vincoli attivi: acqua, area B, area A ''Situazione '''dopo''' il primo cambio di base'':\\ * variabili in base: slack 4, x15, x26 * vincoli attivi: area B, area A
Il che significa che stiamo coltivando tutto il campo A col cereale 1 e tutto il campo B col cereale 6. L'acqua è diventata ora un vincolo strettamente positivo, ridondante, dunque non più attivo. Fino a quest’ultimo cambio di base era lei l'elemento vincolante, ovvero decideva lei cosa era realmente conveniente coltivare e cosa no; da ora non più.
Infine, breve considerazione sul ''prezzo duale''. Il prezzo duale indica di quanto aumenta la funzione obiettivo a seconda del termine noto; da un punto di vista grafico corrisponde al coefficiente angolare, ed infatti l’ultimo segmento della nostra curva ha coefficiente 0, parallela all’asse.
Dall’analisi di sensitività sapevamo che l’acqua rimaneva una variabile scarsa da 400 a 1033.33, ora sappiamo cosa succede anche dopo.
Changed lines 250-251 from:
Ogni volta che facciamo calcolare la soluzione a Lindo, questi ci chiede attraverso la finestra di dialogo a sinistra se effettuare l'analisi di sensitività.
to:
Ogni volta che facciamo calcolare la soluzione a Lindo, questi ci chiede attraverso la finestra di dialogo a sinistra se effettuare l''''analisi di sensitività'''.\\
Changed lines 293-329 from:
L’analisi di sensitività ci dice cosa accade al valore ottimo del problema solo all’interno dell’intervallo in cui può stare il termine noto del vincolo attivo (l’acqua). Per capire cosa succede al di fuori bisogna fare l’analisi parametrica.
to:
L’analisi di sensitività ci dice cosa accade al valore ottimo del problema solo all’interno dell’intervallo in cui può stare il termine noto del vincolo attivo (l’acqua). Per capire cosa succede al di fuori bisogna fare l’'''analisi parametrica'''.
Bisogna andare in qualche menu e selezionare il comando "''Row parametrics...''", che farà apparire questa finestra:
%lframe%Attach:analisiParametrica.jpg
Osserviamo che:
->* la risorsa scarsa da selezionare è l'Acqua ->* il vincolo è di tipo [@<=@] ->* il termine noto della disuguaglianza è attualmente 400, ma possiamo (e dobbiamo) cambiarlo per effettuare l’analisi. Ad esempio diamo nuovo valore 1000000 ->* la checkbox "Text" fornirà un output testuale, dunque è meglio checkarla ->* c'è un segno di spunta anche sull'opzione "Graphics", bisognerà scegliere se lo vogliamo in 2d o in 3d
Diamo l''''OK'''. [[<<]]
Prima di osservare il grafico notiamo che sono state aggiunte nuove informazioni al [@Report@]:
(:table cellpadding=10:) (:cellnr bgcolor=#ffeaff:) [@RIGHTHANDSIDE PARAMETRICS REPORT FOR ROW: ACQUA
VAR VAR PIVOT RHS DUAL PRICE OBJ OUT IN ROW VAL BEFORE PIVOT VAL
400.000 567.442 226977. SLK 3 X51 3 1433.33 567.442 813333. SLK 2 X62 2 2293.33 567.442 0.130133E+07 X52 SLK 4 4 2977.65 427.507 0.159388E+07 0.100000E+07 0.000000E+00 0.159388E+07 @] (:tableend:)
Le colonne indicano rispettivamente le variabili uscite di base (VAR OUT) ed entrate in base (VAR IN) per ognuno dei punti di cambio di discontinuità, stessa cosa per il PIVOT ROW, il valore del termine noto (RHS VAL), il prezzo duale prima del pivot (DUAL PRICE BEFORE PIVOT) e la soluzione ottima (OBJ VAL).
..to be continued
Deleted lines 248-249:
Quando facciamo calcolare la soluzione a Lindo ci appare la seguente finestra di dialogo che abbiamo finora ignorato:
Changed lines 250-251 from:
Se stavolta clicchiamo su '''Yes''' verrà visualizzato in calce al [@Report@] il rapporto sull'analisi di sensitività. Nel nostro esempio avremo:
to:
Ogni volta che facciamo calcolare la soluzione a Lindo, questi ci chiede attraverso la finestra di dialogo a sinistra se effettuare l'analisi di sensitività.
Finora abbiamo ignorato tale richiesta, ma stavolta clicchiamo su '''Yes'''.
In calce al consueto [@Report@] verrà ora visualizzato un rapporto sulla sensitività della soluzione.
Nel nostro esempio avremo:
Added line 18:
# [[#e6|Analisi parametrica]]
Changed lines 249-250 from:
to:
Quando facciamo calcolare la soluzione a Lindo ci appare la seguente finestra di dialogo che abbiamo finora ignorato:
%lframe%Attach:sensitivityAnalysis.jpg
Se stavolta clicchiamo su '''Yes''' verrà visualizzato in calce al [@Report@] il rapporto sull'analisi di sensitività. Nel nostro esempio avremo:
(:table cellpadding=10:) (:cellnr bgcolor=#edffea:) [@RANGES IN WHICH THE BASIS IS UNCHANGED:
OBJ COEFFICIENT RANGES VARIABLE CURRENT ALLOWABLE ALLOWABLE COEF INCREASE DECREASE X11 48.000000 20.093018 INFINITY X12 48.000000 20.093018 INFINITY X21 62.000000 28.790691 INFINITY X22 62.000000 28.790691 INFINITY X31 28.000000 28.744184 INFINITY X32 28.000000 28.744184 INFINITY X41 36.000000 43.441856 INFINITY X42 36.000000 43.441856 INFINITY X51 122.000000 0.000000 INFINITY X52 122.000000 INFINITY 0.000000 X61 94.000000 8.139534 INFINITY X62 94.000000 8.139534 INFINITY
RIGHTHAND SIDE RANGES ROW CURRENT ALLOWABLE ALLOWABLE RHS INCREASE DECREASE ACRI1 200.000000 INFINITY 200.000000 ACRI2 400.000000 INFINITY 288.372101 ACQUA 400.000000 1033.333374 400.000000 @] (:tableend:)
Le colonne ''allowable increase'' e ''allowable decrease'' indicano rispettivamente di quanto possono aumentare e diminuire i valori delle variabili senza che si esca dalla soluzione ottima. Nel nostro caso apprendiamo ad esempio che se il cereale 1 aumentasse il suo coefficiente di 20 allora diventerebbe anche lui ottimo e conveniente da coltivare; l'INFINITY nella colonna ''allowable decrease'' si spiega da sé: già così il valore non è ottimo, figuriamoci se lo diminuiamo! Consideriamo ora il cereale 5 nel campo 2, che può aumentare quanto si vuole di valore poiché è già ottimo e dunque può solo migliorare, ma non può diminuire assolutamente o uscirebbe dalla soluzione ottimale.
Dall'analisi viene ulteriormente evidenziato il fatto che le aree potrebbero aumentare di valore all’infinito senza variare la soluzione ottima: già ora non le sto usando tutte! Al contrario, possono diminuire massimo di 200 acri nel terreno A (tutto) e di 288.372101 nel B (la rimanenza).\\ Il vincolo sull’acqua è invece attivo dato che uso tutti i metri cubi disponibili. Quanta acqua potrei avere in più senza cambiare la base? Se superassimo i 1033.333374 metri cubi l’acqua non sarebbe più la risorsa scarsa, ma diventerebbe qualcun’altra (si arriverebbe al punto in cui avremo acqua in abbondanza ma scarsità di terreno da coltivare, che diventerebbe il nuovo vincolo attivo).
[[#e6]] !!Analisi parametrica L’analisi di sensitività ci dice cosa accade al valore ottimo del problema solo all’interno dell’intervallo in cui può stare il termine noto del vincolo attivo (l’acqua). Per capire cosa succede al di fuori bisogna fare l’analisi parametrica.
Added line 17:
# [[#e5|Analisi di sensitività]]
Changed lines 242-249 from:
Da cui osserviamo che il massimo del profitto è di 226976.7 €, ottenuti coltivando esclusivamente sul terreno B col cereale 5.
to:
Da cui osserviamo che il massimo del profitto è di 226976.7 € ottenuti coltivando esclusivamente sul terreno B col cereale 5, quello col miglior rapporto profitto/consumi. Notare che avrei avuto un risultato altrettanto ottimale se l'avessi coltivato sul campo A: la quantità di acri utilizzati non è una variabile stringente, dunque non influisce sulla soluzione. La variabile x51 ha infatti costo ridotto 0, quindi se entrasse in base varierebbe la soluzione ottima di 0, lasciandola di fatto inalterata.
Il vincolo stringente è quello sull’acqua, mentre le aree avanzano.
[[#e5]] !!Analisi di sensitività
Changed lines 89-90 from:
(:cell:)area necessaria per quintale di cereale i (1, ... , C) a seconda del tipo di terreno j (1, ... , T)
to:
(:cell:)area necessaria per quintale di cereale i (1, ... , C) a seconda\\ del tipo di terreno j (1, ... , T)
Changed lines 106-107 from:
(:cell:)quintali di cereali i (1, ... , C) da coltivare nel terreno j (1, ... , T)
to:
(:cell:)quintali di cereali i (1, ... , C) da coltivare nel\\ terreno j (1, ... , T)
Changed lines 197-198 from:
+ 0.140 x41 + 0.140 x42 + 0.215 x51 + 0.215 x52 + 0.180 x61 + 0.180 x62 <= 400
to:
+ 0.140 x41 + 0.140 x42 + 0.215 x51 + 0.215 x52 + 0.180 x61 + 0.180 x62 <= 400
Added lines 1-241:
(:title Ricerca Operativa - Esercizi di laboratorio:) [[#su]] [[Torna alla pagina di Ricerca Operativa->Ricerca Operativa]] ----
%titolo%''':: Ricerca Operativa - Esercizi di laboratorio ::'''
%center%%sottotitolo%Esercizio 2: La fattoria
>>left bgcolor=#f5f9fc width=270px border='2px solid #cccccc' padding=5px<< %center%'''Indice'''
# [[#e1|Problema]] # [[#e2|Formalizzazione]] # [[#e3|Risoluzione in Lindo]] # [[#e4|Report]] >><<
[[#e1]] !!Problema Una fattoria ha due lotti di terreno: A di 200 e B di 400 acri. Sei tipi di cereali numerati da 1 a 6 possono esservi coltivati. Per ogni quintale di cereale prodotto il profitto è dato dalla tabella seguente.
(:table width=50% border="1" cellpadding=5:) (:cellnr:)Cereale (:cell:)1 (:cell:)2 (:cell:)3 (:cell:)4 (:cell:)5 (:cell:)6 (:cellnr:)Profitto/quintale (:cell:)48 (:cell:)62 (:cell:)28 (:cell:)36 (:cell:)122 (:cell:)94 (:tableend:)
Ogni quintale di cereale necessita di una certa area (espressa in acri) e di una certa quantità di acqua (espressa in metri cubi) secondo questa tabella.
(:table width=50% border="1" cellpadding=5:) (:cellnr:)Cereale (:cell:)1 (:cell:)2 (:cell:)3 (:cell:)4 (:cell:)5 (:cell:)6 (:cellnr:)area su A (:cell:)0.02 (:cell:)0.03 (:cell:)0.02 (:cell:)0.016 (:cell:)0.05 (:cell:)0.04 (:cellnr:)area su B (:cell:)0.02 (:cell:)0.034 (:cell:)0.024 (:cell:)0.02 (:cell:)0.06 (:cell:)0.034 (:cellnr:)acqua (:cell:)120 (:cell:)160 (:cell:)100 (:cell:)140 (:cell:)215 (:cell:)180 (:tableend:)
Il volume totale di acqua disponibile è di 400mila metri cubi.
[[#e2]] !!Formalizzazione !!!!Dati (:table cellpadding=5 width=80%:) (:cellnr:)T = 2 (:cell:)lotti di terreno (:cell:) (:cellnr:)C = 6 (:cell:)cereali (:cell:) (:cellnr:)p'_i_' (:cell:)profitto del cereale i (1, ... , C) per quintale (:cell:)[€/q] (:cellnr:)ar'_ij_' (:cell:)area necessaria per quintale di cereale i (1, ... , C) a seconda del tipo di terreno j (1, ... , T) (:cell:)[acri] (:cellnr:)ac'_i_' (:cell:)quantità di acqua necessaria per quintale di cereale i (1, ... , C) (:cell:)[m'^3^'] (:cellnr:)lt'_j_' (:cell:)acri disponibili per terreno j (1, ... , T) (:cell:)[acri] (:cellnr:)la (:cell:)totale di acqua disponibile (:cell:)[m'^3^'] (:tableend:)
!!!!Variabili (:table cellpadding=5 width=70%:) (:cellnr:)x'_ij_' ≥ 0 (:cell:)quintali di cereali i (1, ... , C) da coltivare nel terreno j (1, ... , T) (:cell:)[q] (:tableend:)
Notare il maggiore uguale a 0, condizione necessaria dato che non posso coltivare una quantità negativa di cereali.
!!!!Vincoli (:table cellpadding=5 width=60%:) (:cellnr:)∑'_i_' x'_ij_' • ar'_ij_' ≤ lt'_j_' (:cell:)per ogni j = 1, ... , T\\ e con i = 1, ... , C (:cell:)[acri] (:cellnr:)∑'_i_' x'_ij_' • ∑'_j_' ac'_ij_' ≤ la (:cell:)per ogni j = 1, ... , T\\ e con i = 1, ... , C (:cell:)[m'^3^'] (:tableend:)
!!!!Funzione obiettivo Massimizzare il profitto, ovviamente.
(:table cellpadding=5 width=50%:) (:cellnr:)max ∑'_i_' ∑'_j_' p'_i_' • x'_i_' (:cell:)[€] (:tableend:)
!!!!Classificazione del problema Osservazioni da fare: # le variabili sono continue o no? # i vincoli sono lineari o no?
Le variabili sono variabili continue.\\ I vincoli sono espressi con un polinomio di primo grado, quindi il modello è lineare. La funzione obiettivo è espressa con un polinomio di primo grado, quindi il modello è lineare.
Riassumendo: è un problema di programmazione lineare.
[[#e3]] !!Risoluzione in Lindo (:table cellpadding=10:) (:cellnr bgcolor=#f2f6f9:) [@!Esercizio Fattoria
!Variabili x(i)(j) = quintali di cerali da coltivare nel campo j [q]
!Funzione obiettivo è massimizzare i guadagni [$/q] max 48 x11 + 48 x12 + 62 x21 + 62 x22 + 28 x31 + 28 x32 + 36 x41 + 36 x42 + 122 x51 + 122 x52 + 94 x61 + 94 x62
st
!Vincoli sulle aree disponibili [acri] acri1) 0.02 x11 + 0.03 x21 + 0.02 x31 + 0.016 x41 + 0.05 x51 + 0.04 x61 <= 200 acri2) 0.02 x12 + 0.034 x22 + 0.024 x32 + 0.02 x42 + 0.06 x52 + 0.034 x62 <= 400
!Vincoli sull'acqua disponibile [metri cubi] acqua) 120 x11 + 120 x12 + 160 x21 + 160 x22 + 100 x31 + 100 x32 + 140 x41 + 140 x42 + 215 x51 + 215 x52 + 180 x61 + 180 x62 <= 400000
End @] (:tableend:)
Cliccando sul pulsante della risoluzione (il bersaglio) appare la seguente finestra di riepilogo:
%lframe%Attach:statusEs2a.jpg
Questo tipo di errore si manifesta quando si richiede la risoluzione di un problema in cui le variabili hanno valori molto grandi e molto piccoli (infatti in questo caso andiamo da 400000 a 0.016). Conviene dunque scalare il problema, magari cambiando l'unità di misura per l'acqua ed esprimendola in k metri cubi. [[<<]]
Avremo perciò:
(:table cellpadding=10:) (:cellnr bgcolor=#f2f6f9:) [@!Esercizio Fattoria
!Variabili x(i)(j) = quintali di cerali da coltivare nel campo j [q]
!Funzione obiettivo è massimizzare i guadagni [$/q] max 48 x11 + 48 x12 + 62 x21 + 62 x22 + 28 x31 + 28 x32 + 36 x41 + 36 x42 + 122 x51 + 122 x52 + 94 x61 + 94 x62
st
!Vincoli sulle aree disponibili [acri] acri1) 0.02 x11 + 0.03 x21 + 0.02 x31 + 0.016 x41 + 0.05 x51 + 0.04 x61 <= 200 acri2) 0.02 x12 + 0.034 x22 + 0.024 x32 + 0.02 x42 + 0.06 x52 + 0.034 x62 <= 400
!Vincoli sull'acqua disponibile [K metri cubi] acqua) 0.120 x11 + 0.120 x12 + 0.160 x21 + 0.160 x22 + 0.100 x31 + 0.100 x32 + 0.140 x41 + 0.140 x42 + 0.215 x51 + 0.215 x52 + 0.180 x61 + 0.180 x62 <= 400
end@] (:tableend:)
...che stavolta andrà a buon fine
%lframe%Attach:statusEs2b.jpg [[<<]]
[[#e4]] !!Report (:table cellpadding=10:) (:cellnr bgcolor=#fff7ea:) [@LP OPTIMUM FOUND AT STEP 1
OBJECTIVE FUNCTION VALUE
1) 226976.7
VARIABLE VALUE REDUCED COST X11 0.000000 20.093021 X12 0.000000 20.093021 X21 0.000000 28.790693 X22 0.000000 28.790693 X31 0.000000 28.744186 X32 0.000000 28.744186 X41 0.000000 43.441860 X42 0.000000 43.441860 X51 0.000000 0.000000 X52 1860.465088 0.000000 X61 0.000000 8.139537 X62 0.000000 8.139537
ROW SLACK OR SURPLUS DUAL PRICES ACRI1) 200.000000 0.000000 ACRI2) 288.372101 0.000000 ACQUA) 0.000000 567.441833
NO. ITERATIONS= 1@] (:tableend:)
Da cui osserviamo che il massimo del profitto è di 226976.7 €, ottenuti coltivando esclusivamente sul terreno B col cereale 5.
---- [[Torna alla pagina di Ricerca Operativa->Ricerca Operativa]]
|
|