Ricerca Operativa 1

fireball1
Non capisco perché la risposta al seguente quesito sia che le variabili da considerare
non devono essere più di 8... Per me sono 12...

Si abbia il seguente problema di Programmazione Lineare:

$"Max "2x_1+3x_2+4x_3+5x_4+6x_5
$" "x_1+3x_2+2x_3+x_4-2x_5>=22
$" "-2x_1+2x_2+x_3-2x_4+3x_5<=34
$" "x_1,x_2,x_3,x_4,x_5" qualsiasi"

Qual è il minimo numero di variabili da considerare
affinché si abbia un PL equivalente con restrizioni di positività
su tutte le variabili e vincoli soltanto di uguaglianza?
La mia risposta è 12, mentre il libro dice che non sono più di 8,
e di motivare la risposta... Boh!

Risposte
Cheguevilla
Per trasformare un sistema con vincoli di $<=$ o $>=$, in un sistema con vincoli di uguaglianza stretta, è sufficiente aggiungere una variabile "slack" in ogni vincolo.
In pratica, il senso è questo:
Se il vincolo $a$ impone che $x_1+3x_2+2x_3+x_4-2x_5>=22$, posso inserire una variabile $x_6$ fittizia che misuri lo "scarto". In questo caso, le variabili aggiunte vengono chiamate variabili "surplus".
Quindi, posso trasformare il vincolo $a$ in:
$x_1+3x_2+2x_3+x_4-2x_5-x_6=22$
Il significato della variabile $x_6$ è di fondamentale importanza nella ricerca operativa: generalmente, un vincolo rappresenta la quantità utilizzabile di una risorsa scarsa.
Il valore che la variabile $x_6$ assume, nella soluzione ottimale, è la quantità "avanzata" di risorsa.
Se, al contrario, la variabile slack vale 0, significa che il vincolo è "attivo", quindi è effettivamente vincolante per la soluzione, cioè la soluzione giace su un vertice generato da questo vincolo.
Quanto detto vale per i vincoli di maggioranza; al contrario, per i vincoli di minoranza, bisognerà aggiungere, invece che sottrarre, la variabile slack.
Il problema sorge quando il testo chiede di trasformare le variabili non vincolate in variabili non negative.
Il sistema usato generalmente è la sostituzione di ogni variabile non vincolata nella differenza tra due variabili positive: $x_i=v_i-u-i$.
Pertanto, sono necessarie 10 variabili standard e due variabili slack (una slack e una surplus).
In assenza di altre condizioni, non saprei come "diminuire" il numero di variabili.
Purtroppo, non riesco ad esserti più di tanto di aiuto...

fireball1
Ti ringrazio lo stesso...
Cosa intendi per

"Se, al contrario, la variabile slack vale 0, significa
che il vincolo è "attivo", quindi è effettivamente vincolante
per la soluzione, cioè la soluzione giace su un vertice generato da questo vincolo."

?

Cheguevilla
Se, nella soluzione del problema, la variabile slack vale 0, la risorsa è interamente utilizzata.
Facciamo un esempio semplice:
$max z=5x_1+10x_2
$" "10x_1+5x_2<=25
$" "4x_1+10x_2<=20
$" "x_1+1.5x_2<=4.5
$" "x_1,x_2>=0$
La soluzione di questo problema è:
$x_1=1.875
$x_2=1.25
$z=21.875
Come puoi notare, la soluzione è l'intersezione tra il primo e il secondo vincolo.
Se provi a trasformare questo problema in un problema standard, vedrai che le variabili slack relative ai primi due vincoli valgono 0. Questo significa che le risorse associate ai due vincoli saranno utilizzate per intero.
Queste risorse vengono definite "scarse".
La variazione della disponibilità di una variabile scarsa comporta la variazione della soluzione del problema.
Al contrario, una variabile non scarsa ha un "campo di variabilità" all'interno del quale la soluzione non varia.
Questi brevi concetti sono fondamentali quando vedrai la dualità e il teorema della complementary slackness.
Ad esempio, la variabilità della soluzione in funzione del variare di una risorsa determina il "valore" della risorsa scarsa.
Puoi tranquillamente immaginare quante possano essere le applicazioni nel campo dell'economia...
In generale, si deve vedere il sistema dato dai vincoli come lo parte di spazio n-dimensionale (dove n è il numero di variabili) in cui può essere compresa la soluzione.
Non è difficile immaginare che la soluzione, massima o minima che sia, deve trovarsi su un vertice dello spazio ammissibile.
Questo vertice è dato dall'intersezione dei vincoli attivi.
Per questo, molti algoritmi cercano la soluzione spostandosi direttamente da un vertice all'altro.

fireball1
Ma come faccio a vedere che la variabile di slack verrà 0?

Cheguevilla
Devi risolvere il problema...

fireball1
Ah... No, io non sono ancora arrivato a studiare gli
algoritmi di risoluzione (ho letto più volte
del celeberrimo simplesso)... Ecco perché.
Pensavo esistesse un modo per vederlo dall'inizio.

Cheguevilla
No. Però, se ti può interessare, leggendo quanto ho scritto nel mio ultimo post, potresti essere in grado di risolvere il problema esempio che ho posto.
Anzi, facciamo così, te ne do un altro:
$min z=30x_1+48x_2$
$" "1/2x_1+x_2>=3$
$" "x_1+4x_2>=7$
$" "2x_1+2x_2>=13/2$
$" "x_1,x_2>=0$
Vediamo se ti viene in mente qualche idea.
Tra qualche minuto, se non hai ancora avuto idee, ti posto qualche suggerimento.

fireball1
Ti ringrazio molto, ma non ho ancora cominciato a
studiare metodi di risoluzione...

Cheguevilla
Puoi sempre inventarne uno...
Primo suggerimento:
"Cheguevilla":
In generale, si deve vedere il sistema dato dai vincoli come lo parte di spazio n-dimensionale (dove n è il numero di variabili) in cui può essere compresa la soluzione.
Il numero di variabili nel problema che ho postato non è casuale.

fireball1
Mah, saranno i punti estremi del politopo individuato
dai vincoli a dare la soluzione ottima, penso...

Cheguevilla
Che cosa rappresenta la funzione obiettivo, dal punto di vista matematico?

fireball1
Beh è un piano in $RR^3$...

Cheguevilla
E in $RR^2$?

fireball1
In $RR^2$ fissato z rappresenta una retta...

Cheguevilla
Eheheh, ci stai girando attorno...
Considerando z un parametro?

fireball1
Un fascio di rette.

Cheguevilla
Bene.
Il parametro z, cosa rappresenta analiticamente?

fireball1
il valore della funzione...

Cheguevilla
Vero.
E il suo significato in termini di "geometria analitica"?

fireball1
Ah, ecco, allora avevo inteso bene, volevi dire
"geometricamente" invece che "analiticamente"...
Boh, non credo che abbia un significato geometrico preciso...

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.