Torna alla pagina di Ricerca Operativa
:: Ricerca Operativa - PL - Dosaggio farmaci - 01.07 ::
Testo del problema
Nel trattamento farmacologico di un paziente un’équipe medica deve decidere le quantità ottimali di ogni farmaco da somministrare. Lo stato di salute del paziente viene misurato da alcuni parametri, ad esempio dalla quantità di date sostanze nel sangue. E’ noto da precedenti esperimenti l’effetto che ogni farmaco ha sull’aumento o diminuzione di ciascuno dei suddetti parametri. E’ noto inoltre lo stato iniziale del paziente, che si desume da recenti analisi compiute su di lui. Per ciascun parametro sono date una soglia minima ed una massima entro cui si vuole ricondurre o mantenere il parametro ed inoltre è noto un valore di riferimento a cui ci si vuole avvicinare il più possibile. Si vuole cioè minimizzare il rapporto tra lo scostamento dal valore ideale ed il massimo scostamento consentito dalla soglia. Perciò uno scostamento in eccesso è misurato da (valore_ottenuto – valore_ideale) / (valore_max_consentito – valore_ideale) mentre uno scostamento in difetto è misurato da (valore_ideale – valore_ottenuto) / (valore_ideale – valore_min_consentito). Poiché si vuole che tutti gli scostamenti siano piccoli, si vuole minimizzare il massimo di essi.
Poiché ogni farmaco induce effetti collaterali indesiderati, la quantità di ogni farmaco somministrabile non può eccedere un dato valore massimo.
Formulare il problema, classificarlo e risolverlo con i dati del file DOSAGGIO.TXT. Discutere l’ottimalità della soluzione trovata.
Dati
I parametri da valutare sono 7 (numerati 1...7), i farmaci disponibili
sono 5 (indicati da A...E).
Tabella 1: Valori dei parametri e soglie [unità di misura non specificate]
Parametro Valore Soglia Valore di Soglia
attuale minima riferimento massima
1 3.45 7.0 12.0 15.0
2 1800 1700 2500 3500
3 0.05 0.50 0.80 1.30
4 3200 1400 2000 2750
5 26.4 8.0 10.0 12.0
6 35 28 35 41
7 136 80 120 160
Tabella 2: Effetto dei farmaci (variazione parametri per ogni mg di farmaco)
Parametro Farmaco A B C D E
1 -0.2 +0.5 +0.7 +0.1 +0.2
2 -500 0.0 -250 +50 0.0
3 +0.2 -0.1 +0.3 0.0 +0.2
4 -80 -120 +15 -90 -100
5 -8.5 -7.0 -1.0 -3.0 +1.0
6 +5 -2 +8 -4 0
7 -5 -1 -2 -3 +4
Tabella 3: Quantità max di farmaci somministrabili [mg]
Farmaco Quantità
A 2.0
B 3.5
C 0.5
D 0.5
E 7.5
Formulazione del problema
Dati
- p = 7 (numero parametri da valutare)
- f = 5 (numero farmaci disponibili)
- valAtti (valore attuale del parametro i=1..7)
- valRifi (valore di riferimento del parametro i=1..7)
- soMini (soglia minima del parametro i=1..7)
- soMaxi (soglia massima del parametro i=1..7)
- effij (effetto del farmaco j=1..5 sul parametro i=1..7) [variazione/mg]
- limFarj (limite massimo farmaco j=1..5 somministrabile) [mg]
Variabili
- xj (quantità di farmaco j=1..5 da somministrare) [mg]
- yi (valore del parametro i=1..7 dopo la cura)
Le variabili sono continue e non negative.
Funzione obiettivo
Bisogna minimizzare il massimo scostamento consentito dalla soglia. Introduciamo perciò una variabile ausiliaria z (che definiremo nei vincoli) che rappresenta il massimo degli scostamenti:
min z
Vincoli
- vincolo sui valori minimi consentiti del parametro i
yi >= soMini (per ogni i)
- vincolo sui valori massimi consentiti del parametro i
yi <= soMaxi (per ogni i)
- vincolo sulle quantità massime di farmaco j somministrabile
xj <= limFarj (per ogni j)
- vincolo per mettere in relazione le cure prestate con i valori ottenuti
dovremmo scrivere: valAtti - effij * xj = yi (per ogni i)
ma dato che le incognite vanno scritte tutte a sinistra, lo riscriviamo come:
effij * xj – yi = -valAtti (per ogni i)
- definiamo ora la variabile ausiliaria z per gli scostamenti in eccesso. Nel testo ci viene detto come calcolarla, ma trattandosi di un rapporto si tradurrebbe in un'espressione non lineare. Trasformiamola in forma lineare:
yi – (soMaxi – valRifi) * z <= valRifi (per ogni i)
- definiamo infine la variabile ausiliaria z per gli scostamenti in difetto, anche in questo caso riesprimendola in forma lineare:
yi + (valRifi – soMini) * z >= valRifi (per ogni i)
Lindizzazione del problema
! esercizio - Dosaggio farmaci
! variabili: x(j) = quantità di farmaco j da somministrare [mg]
! y(i) = valore del parametro i dopo la cura
! le variabili sono continue e non negative
! funzione obiettivo
min z
! dove z è il massimo scostamento
st
! vincoli sui valori minimi consentiti
minVal1) y1 >= 7.00
minVal2) y2 >= 1700
minVal3) y3 >= 0.50
minVal4) y4 >= 1400
minVal5) y5 >= 8.0
minVal6) y6 >= 28
minVal7) y7 >= 80
! vincoli sui valori massimi consentiti
maxVal1) y1 <= 15.00
maxVal2) y2 <= 3500
maxVal3) y3 <= 1.30
maxVal4) y4 <= 2750
maxVal5) y5 <= 12.0
maxVal6) y6 <= 41
maxVal7) y7 <= 160
! vincoli sulle quantità max di ogni farmaco [mg];
maxFar1) x1 <= 2.0
maxFar2) x2 <= 3.5
maxFar3) x3 <= 0.5
maxFar4) x4 <= 0.5
maxFar5) x5 <= 7.5
! vincoli per mettere in relazione cure prestate con valori ottenuti
param1) -0.2 x1 +0.5 x2 +0.7 x3 +0.1 x4 +0.2 x5 - y1 = -3.45
param2) 500 x1 +0.0 x2 -250 x3 +50 x4 +0.0 x5 - y2 = -1800
param3) +0.2 x1 -0.1 x2 +0.3 x3 +0.0 x4 +0.2 x5 - y3 = -0.05
param4) -80 x1 -120 x2 +15 x3 -90 x4 -100 x5 - y4 = -3200
param5) -8.5 x1 -7.0 x2 -1.0 x3 -3.0 x4 +1.0 x5 - y5 = -26.4
param6) +5 x1 -2 x2 +8 x3 -4 x4 +0 x5 - y6 = -35
param7) -5 x1 -1 x2 -2 x3 -3 x4 +4 x5 - y7 = -136
! vincoli per definire lo scostamento z...
! ...in eccesso...
scoEcc1) y1 - 3.00 z <= 12.0
scoEcc2) y2 - 1000 z <= 2500
scoEcc3) y3 - 0.50 z <= 0.80
scoEcc4) y4 - 750 z <= 2000
scoEcc5) y5 - 2.0 z <= 10.0
scoEcc6) y6 - 6 z <= 35
scoEcc7) y7 - 40 z <= 120
! ...e in difetto
scoDif1) y1 + 5.00 z >= 12.0
scoDif2) y2 + 800 z >= 2500
scoDif3) y3 + 0.30 z >= 0.80
scoDif4) y4 + 600 z >= 2000
scoDif5) y5 + 2.0 z >= 10.0
scoDif6) y6 + 7 z >= 35
scoDif7) y7 + 40 z >= 120
end
Altre domande
Nel caso in cui il paziente risultasse allergico ad uno dei farmaci (uno solo), fino a che punto potrebbe essere ridotta la quantità di farmaco senza compromettere la possibilità di rispettare i vincoli sulle soglie massima e minima per i parametri?
Dovremo fare l'analisi parametrica del problema considerando un farmaco per volta, fissando a 0 la quantità massima di farmaco somministrabile e osservando fino a quando i vincoli di ammissibilità sono rispettati. Facciamo un esempio su tutti, saltando il primo farmaco (che dalla soluzione vediamo che non è mai utilizzato, dato che ha costo ridotto 0) e passando direttamente al secondo.
RIGHTHANDSIDE PARAMETRICS REPORT FOR ROW: MAXFAR2
VAR VAR PIVOT RHS DUAL PRICE OBJ
OUT IN ROW VAL BEFORE PIVOT VAL
3.50000 0.000000E+00 0.999623
SLK 17 SLK 34 2 3.48571 0.000000E+00 0.999623
SLK 3 SLK 36 34 3.47634 0.402597E-01 1.00000
SLK 2 SLK 35 12 3.47634 0.463609E-01 1.00000
SLK 6 SLK 39 30 3.47634 0.363281 1.00000
SLK 11 ART 21 3.47634 0.422727 1.00000
0.000000E+00 +INFINITY INFEASIBLE
Quindi il valore minimo consentito è di 3.47634.
Ripetiamo la stessa operazione per gli altri farmaci e ci risulterà che per il terzo farmaco il valore è 0.450929, per il quarto farmaco è 0.191030, e per l'ultimo farmaco è 7.27467.
Torna alla pagina di Ricerca Operativa