Torna alla pagina di Ricerca Operativa
:: Ricerca Operativa - Esercizi di laboratorio ::
Esercizio 3: Scommesse su cavalli
In una corsa di cavalli i favoriti sono Fulmine, Freccia, Dardo e Lampo, quotati rispettivamente 3:1, 4:1, 5:1 e 6:1. Ho un budget di 57 Euro da spendere. Voglio massimizzare la vincita nel caso peggiore.
C = 4 | cavalli | |
qi | quotazione cavallo i (1, ... , C) | |
b | budget | [€] |
xi ≥ 0 | puntata su cavallo i (1, ... , C) | [€] |
Notare il maggiore uguale a 0, condizione necessaria dato che non posso scommettere una somma negativa di euro. Notare inoltre che la approssimiamo come variabile continua, anche se in realtà non possiamo puntare una cifra qualsiasi (ad esempio, 4 pi greco euro).
∑i xi ≤ b | con i = 1, ... , C | [€] |
Vogliamo massimizzare la vincita nel caso peggiore, quindi:
max min { qi • xi } | con i = 1, ... , C | [€] |
La funzione scritta così però non è lineare, e non lo sarebbe stata nemmeno nel caso opposto, ovvero con un min max
. Dunque cosa si fa? Si crea una nuova variabile il cui valore è "min { qi • xi }", così che poi si possa trovare il massimo tra tutti i valori che assume.
Definiamo così z = min { qi • xi }
ed aggiorniamo i vincoli e la funzione obiettivo:
∑i xi ≤ b | con i = 1, ... , C | [€] |
z ≤ qi • xi | per ogni i = 1, ... , C |
max z
Il problema è diventato così lineare.
Osservazioni da fare:
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.
! Esercizio Scommesse sui cavalli ! Variabili: x(i) = puntata sul cavallo i = 1, ... , 4 [Euro] ! La variabile è approssimata continua e non negativa ! Funzione obiettivo: massimizzare la vincita nel caso peggiore [Euro] max z subject to ! Vincoli max-min [Euro] cavallo1) z - 3 x1 <= 0 cavallo2) z - 4 x2 <= 0 cavallo3) z - 5 x3 <= 0 cavallo4) z - 6 x4 <= 0 !Vincolo sul budget [Euro] budget) x1 + x2 + x3 + x4 <= 57 end |
Facciamo alcune considerazioni sul codice:
Cliccando sul pulsante della risoluzione (il bersaglio) appare la seguente finestra di riepilogo:
LP OPTIMUM FOUND AT STEP 5 OBJECTIVE FUNCTION VALUE 1) 60.00000 VARIABLE VALUE REDUCED COST Z 60.000000 0.000000 X1 20.000000 0.000000 X2 15.000000 0.000000 X3 12.000000 0.000000 X4 10.000000 0.000000 ROW SLACK OR SURPLUS DUAL PRICES CAVALLO1) 0.000000 0.350877 CAVALLO2) 0.000000 0.263158 CAVALLO3) 0.000000 0.210526 CAVALLO4) 0.000000 0.175439 BUDGET) 0.000000 1.052632 NO. ITERATIONS= 5 |
Notare che tutte le variabili in base hanno costo ridotto 0, mentre quelle fuori base uno qualsiasi.
Notare anche che ogni variabile in base moltiplicata per il coefficiente espresso nei vincoli dà sempre 60, ovvero la funzione obiettivo.