Ricerca Operativa e Logistica Dott. F.Carrabs e Dott.ssa M.Gentili A.A. 2011/2012 Lezione 10: Variabili e vincoli logici
Variabili logiche Spesso nei problemi reali che dobbiamo affrontare ci sono dei vincoli logici a cui sono soggette le variabili decisionali. Ad esempio: Vincoli di incompatibilità: se posiziono un antenna in un certo sito, non possiamo installarne altre in siti adiacenti per evitare problemi di interferenze. Costi fissi: se decido di costruire un impianto in un certo sito pagherò un costo fisso di funzionamento associato a quel sito. Vincoli alternativi: dato un insieme di vincoli solo uno di essi deve essere soddisfatto;.
Variabili logiche L obiettivo è quello di aggiungere al modello equazioni e disequazioni lineari (vincoli logici) che esprimono algebricamente quando un determinato espressione è vera. Per creare questi vincoli logici facciamo uso di variabili logiche che possono assumere solo il valore 0 (FALSO) oppure 1 (VERO). A livello modellistico le variabili logiche sono variabili come tutte le altre e quindi possono essere combinate solo in modo lineare. Quindi non è possibile applicare a queste variabili operatori logici (AND, OR e NOT) oppure operatori linguistici (if y 1 =1 allora y 2 =1), ne tantomeno si possono moltiplicare tra loro. Sarebbero tutte forme non lineari. E importante sottolineare che l uso delle variabili logiche da un lato aumentano l espressività dei modelli di ottimizzazione ma dall altro possono rendere molto più difficile il problema.
Variabili logiche Siano S A, S B ed S C tre affermazioni. Associamo ad ogni affermazione una corrispondente variabile logica come segue: 1 y X = 0 se l'affermazione X è vera altrimenti con X={A,B,C} Di seguito descriveremo come far assumere alla variabile logica i valori corretti (quelli indicati nella sua definizione) attraverso l introduzione di nuovi vincoli nel modello. Successivamente utilizzeremo queste variabili per esprimere condizioni logiche sulle tre affermazioni (S A, S B, S C ) attraverso l utilizzo di vincoli sulle variabili logiche (y X ) ad esse associate.
Esempio: Assegnazione delle frequenze La compagnia di telefonia cellulare Televodawind ha suddiviso la città di Salerno in varie zone dove installare le antenne al fine di coprire l intera città. Ad ogni antenna deve essere associata una frequenza f i tenendo però presente che, per evitare problemi di interferenze, due antenne adiacenti non possono utilizzare la stessa frequenza. p 14 p 13 p 2 p 4 p 5 p 9 p 12 p 1 p 3 p 8 p 10 p 11 p 6 p 7
Esempio: Assegnazione delle frequenze p 14 p 13 p 2 p 4 p 5 p 9 p 12 p 1 p 3 p 8 p 10 p 11 p 6 p 7 Per stabilire quali sono le antenne adiacenti nella città, si fa uso di un grafo G=(V,E) non orientato in cui i nodi rappresentano le antenne e gli archi indicano quali sono le antenne adiacenti, i.e. se (i,j) E allora le antenne i e j sono adiacenti e non possono usare la stessa frequenza. Indichiamo con F={f 1,,f t } l insieme delle frequenze disponibili. Poiché acquistare una frequenza ha un costo rilevante, la compagnia vuole individuare un assegnamento di frequenze alle antenne che non produca interferenze e soprattutto che utilizzi il minimo numero di frequenze. (Questo problema viene anche detto problema della colorazione del grafo perché l obiettivo è quello di colorare i nodi del grafo minimizzando il numero di colori utilizzati e assicurandosi che non venga mai assegnato lo stesso colore a due nodi adiacenti).
Esempio: Assegnazione delle frequenze! 1 se al nodo i viene assegnata la frequenza k x ik = " # 0 altrimenti! 1 se la frequenza k è stato assegnata a qualche nodo y k = " # 0 altrimenti min " k!f y k x ik + x jk #1 $(i,j)! E, $ k! F " x ik =1 $ i! V k!f " x ik # My k $ k! F i!v x ik! 0,1 { } $k! F, $i! V oppure x ik! y k "i # V,"k # F y k! { 0,1} $k! F
Variabili logiche: operatori logici S B =NOT S A Questa condizione logica equivale a scrivere nei vincoli: y B = (1-y A ) y A S A NOT S A y B 0 Falso Vero 1 1 Vero Falso 0
Variabili logiche: operatori logici y A y B S A AND S B y C S C = S A AND S B Questa condizione logica equivale a scrivere i vincoli: y C y A + y B 1, y C ½(y A + y B ) 0 0 Falso 0 1 Falso 1 0 Falso 1 1 Vero 0 0 0 1 y A y B S A NAND S B y C S A NAND S B Questa condizione logica equivale a scrivere i vincoli: y C 2 y A y B, y C ½(2 y A y B ) 0 0 Vero 1 0 1 Vero 1 1 0 Vero 1 1 1 Falso 0
Variabili logiche: operatori logici y A y B S A OR S B y C S C = S A OR S B Questa condizione logica equivale a scrivere i vincoli: y C y A + y B, y C y A, y C y B 0 0 Falso 0 0 1 Vero 1 1 0 Vero 1 1 1 Vero 1 S C = S A XOR S B Questa condizione logica equivale a scrivere i vincoli: y A y B y C, y B y A y C y C y A + y B, y C 2 y A y B y A y B S A XOR S B y C 0 0 Falso 0 0 1 Vero 1 1 0 Vero 1 1 1 Falso 0
Vincoli logici NOT S A Questa condizione logica equivale a scrivere nei vincoli: (1-y A ) y A NOT S A (1-y A ) 0 Vero 1 1 Falso 0
Vincoli logici y A y B S A AND S B y A +y B =2 S A AND S B Questa condizione logica equivale a scrivere il vincolo: y A + y B = 2 0 0 Falso 0 1 Falso 1 0 Falso 1 1 Vero Violato Violato Violato Soddisf. y A y B S A NAND S B y A +y B 1 S A NAND S B Questa condizione logica equivale a scrivere il vincolo: y A +y B 1 0 0 Vero Soddisf. 0 1 Vero Soddisf. 1 0 Vero Soddisf. 1 1 Falso Violato
Vincoli logici y A y B S A OR S B y A +y B 1 S A OR S B Questa condizione logica equivale a scrivere il vincolo: y A + y B 1 0 0 Falso Violato 0 1 Vero Soddisf. 1 0 Vero Soddisf. 1 1 Vero Soddisf. y A y B S A XOR S B y A +y B =1 S A XOR S B Questa condizione logica equivale a scrivere il vincolo: y A + y B = 1 0 0 Falso Violato 0 1 Vero Soddisf. 1 0 Vero Soddisf. 1 1 Falso Violato
Vincoli logici: operatori linguistici If S A è vero then S B è vero Questa condizione logica equivale a scrivere il vincolo: y A y B y A y B S A S B y A y B 0 0 Indiff. Soddisf. 0 1 Indiff. Soddisf. 1 0 Falso Violato 1 1 Vero Soddisf. S A è vero se e solo se S B è vero Questa condizione logica equivale a scrivere il vincolo: y A = y B y A y B S A S B y A =y B 0 0 Vero Soddisf. 0 1 Falso Violato 1 0 Falso Violato 1 1 Vero Soddisf.
Vincoli logici: operatori linguistici If S A e S B sono vere then S C è vero Questa condizione logica equivale a scrivere il vincolo: y A +y B 1+y C y A y B y C If (S A AND S B ) then S C y A +y B 1+y C 0 0 0 Indiff. Soddisf. 0 0 1 Indiff. Soddisf. 0 1 0 Indiff. Soddisf. 0 1 1 Indiff. Soddisf. 1 0 0 Indiff. Soddisf. 1 0 1 Indiff. Soddisf. 1 1 0 Falso Violato 1 1 1 Vero Soddisf.
Vincoli logici: operatori linguistici If S A o S B sono vere then S C è vero Questa condizione logica equivale a scrivere il vincolo: y A +y B 2y C y A y B y C If (S A OR S B ) then S C y A +y B 2y C 0 0 0 Indiff. Soddisf. 0 0 1 Indiff. Soddisf. 0 1 0 Falso Violato 0 1 1 Vero Soddisf. 1 0 0 Falso Violato 1 0 1 Vero Soddisf. 1 1 0 Falso Violato 1 1 1 Vero Soddisf.
Esempio: Investimenti Un cliente affida ad un agenzia finanziaria un milione di euro da impiegare in fondi di investimento. Attualmente ci sono 6 fondi (A,B,C,D,E,F) offerti dal mercato, le cui caratteristiche sono riportati nella seguente tabella: Nome Tipo Rischio Durata (anni) Rendita alla maturazione A Privato 2 9 4,5% B Pubblico 3 8 11% C Stato 1 4 5,1% D Stato 4 3 4,4% E Privato 5 2 4,1% F Privato 2.5 3 3,9% Si sa che i fondi pubblici e dello stato sono tassati del 50% alla fine del periodo. Il cliente chiede di riservare almeno il 40% del capitale a fondi pubblici e dello stato e vuole che la durata media dell investimento non superi i 5 anni. Inoltre, il valore medio del rischio dell investimento non deve superare 2. Oltre alle richieste del cliente, bisogna anche rispettare una serie di regole imposte dal mercato. In particolare: - investire in C preclude la possibilità di investire in D, e viceversa; - è obbligatorio investire su uno dei fondi A, C, F; - è possibile investire in E solo se si investe anche in A. - Una volta deciso di investire su un fondo, la quota minima di investimento è pari a 100 euro. Tale quota sale a 1000 euro se l investimento scelto è A. - si può investire in B solo se sono stati investiti soldi su A e F. Si vuole massimizzare la rendita finale dell investimento.
Esempio: Investimenti Variabili decisionali, logiche e parametri - x i : i {A,B,C,D,E,F}: quantità di euro investita su i - y i : i {A,B,C,D,E,F}: variabile binaria associata all investimento i, cioè: 1 se si investe qualcosa su i y i = 0 altrimenti - M: costante sufficientemente grande (M 1.000.000)
max 0, 045x A + 0,11 2 x 0, 051 0, 044 B + x C + x D + 0, 041x E + 0, 039x F 2 2 x A + x B + x C + x D + x E + x F!1000000 Budget disponibile x B + x C + x D " 400000 Esempio: Investimenti 9x A +8x B + 4x C + 3x D + 2x E + 2, 5x F! 5(x A + x B + x C + x D + x E + x F ) 2x A + 3x B + x C + 4x D + 5x E + 3x F! 2(x A + x B + x C + x D + x E + x F ) x i! My i i # {A, B,C, D, E, F} y i! Mx i i # {A, B,C, D, E, F} y C + y D!1 y A + y C + y F "1 Investimento minimo pubblico/stato Def. variabili logiche Vincolo logico C nand D Investimento obbligatorio su A o C o F Durata media Rischio medio y E! y A x A "1000y A x i "1000y i i # {B,C, D, E, F} y B! 1 2 (y A + y F ) Vincolo logico E A Investimento minimo su A Investimento minimo Vincolo logico E A and F y i # {0,1}, x i " 0 i # {A, B,C, D, E, F}