Anteprima
Vedrai una selezione di 14 pagine su 62
Ricerca operativa - Programmazione lineare intera Pag. 1 Ricerca operativa - Programmazione lineare intera Pag. 2
Anteprima di 14 pagg. su 62.
Scarica il documento per vederlo tutto.
Ricerca operativa - Programmazione lineare intera Pag. 6
Anteprima di 14 pagg. su 62.
Scarica il documento per vederlo tutto.
Ricerca operativa - Programmazione lineare intera Pag. 11
Anteprima di 14 pagg. su 62.
Scarica il documento per vederlo tutto.
Ricerca operativa - Programmazione lineare intera Pag. 16
Anteprima di 14 pagg. su 62.
Scarica il documento per vederlo tutto.
Ricerca operativa - Programmazione lineare intera Pag. 21
Anteprima di 14 pagg. su 62.
Scarica il documento per vederlo tutto.
Ricerca operativa - Programmazione lineare intera Pag. 26
Anteprima di 14 pagg. su 62.
Scarica il documento per vederlo tutto.
Ricerca operativa - Programmazione lineare intera Pag. 31
Anteprima di 14 pagg. su 62.
Scarica il documento per vederlo tutto.
Ricerca operativa - Programmazione lineare intera Pag. 36
Anteprima di 14 pagg. su 62.
Scarica il documento per vederlo tutto.
Ricerca operativa - Programmazione lineare intera Pag. 41
Anteprima di 14 pagg. su 62.
Scarica il documento per vederlo tutto.
Ricerca operativa - Programmazione lineare intera Pag. 46
Anteprima di 14 pagg. su 62.
Scarica il documento per vederlo tutto.
Ricerca operativa - Programmazione lineare intera Pag. 51
Anteprima di 14 pagg. su 62.
Scarica il documento per vederlo tutto.
Ricerca operativa - Programmazione lineare intera Pag. 56
Anteprima di 14 pagg. su 62.
Scarica il documento per vederlo tutto.
Ricerca operativa - Programmazione lineare intera Pag. 61
1 su 62
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

PROGRAMMAZIONE LINEARE INTERA

Un problema di PLI è un problema di PL in cui c'è un ulteriore vincolo le variabili i di un problema nella forma

min cTx Ax ≥ b x ≥ 0 x ∈ Z n

devono essere intere. Con questo vincolo si possono modellare problemi che con la PL non si possono modellare (ad esempio la scelta (tra alternative)). Il valore ottimo della funzione obiettivo di un problema di PLI viene chiamato ZILI.

Possiamo distinguere tra problemi di

  • PLI puri
  • PL 0-1 (o binari)
  • PLI misti

Esempio (PLI mista) Supponiamo di avere una compagnia di trasporti e che questa compagnia abbia veicoli di vario genere, ogni veicolo richiede delle risorse, che pos sono essere di tipo materiale (olio, carburante), ma anche risorse umane (autisti). Un problema potrebbe essere quello di soddisfare le richieste di tutti i clienti ottimizzando i costi. In questo problema, alcune variab li possono assumere anche valori non interi, altre no.

Esempio (PLI 0-1) Le variabili binarie di solito rappresentano valori di tipo 'SI/NO', ad esempio se in un incrocio c'è un semaforo acceso, no. Lo 1 significa 'Si' lo 0 'No'.

Esempio (PLI pura) Un esempio di PLI pura è quello in cui dobbiamo produrre certe quantità di un certo prodotto (ad esempio automobili), quantità che possano essere solo intere (82,3 automobili?). Riscriviamo il nostro problema di PLT: min cTx Ax ≥ b x ≥ 0 intere I vincoli Ax ≥ b individuano un poliedro...

Le soluzioni possono essere solo:

Il numero delle soluzioni ammissibili è finito, quindi per trovare una soluzione ottima potremmo semplicemente enumerare tutte le soluzioni e scegliere quella col valore migliore della funzione obiettivo. Nella pratica questo non si può fare, vediamo perché. Consideriamo un problema di PL 0-1:

x ∈ {0,1}n

enumeriamoli:

  • x(1) = [0,0,...,0]T
  • x(2) = [1,0,...,0]T
  • x(n) = [1,0,...,1]T

In tutto sono 2n vettori; per ciascuno di questi vettori devo valutare l'ammissibilità e della funzione obiettivo. Il problema è proprio quel 2n. Supponiamo di avere un x per che in un secondo riesca a valutare l'ammissibilità di n=106 vettori (220).

n t (sec) 20 1 30 17 minuti 50 31 anni 60 38 milioni di miliardi d’anni

È assolutamente inaccettabile spendere tutto questo tempo per le enumerazioni. Anche avendo a disposizione una potenza di calcolo maggiore, il discorso non cambia. Possiamo esaminare 230 vettori in un secondo:

n t (sec) 40 1 50 107 giorni 60 30 anni 1000 3743 miliardi di anni

Questo approccio è assolutamente impraticabile per problemi di dimensioni realistiche.

12.10.2020

Lezione 2

Esempi di formulazioni

Il primo esempio è il problema noto come Knapsack. Com' è definito?

Abbiamo un contenitore con una certa capacità B. n oggetti. Per ogni oggetto sono noti 2 valori: un profitto pi ed un peso wi. Il problema consiste nel selezionare quegli sottoinsiemi di oggetti da inserire nel contenitore che non ne violi la capacità e che abbia massimo profitto. Di solito si assume che Σpi= B (altrimenti non avremmo niente da ottimizzare) e si assume anche che wi ≤ B. Vi: come formuliamo il nostro problema? La prima cosa da fare è capire qual è la decisione da prendere, e scegliere quindi le variabili decisionali. Quando c'è qualcosa da selezionare le variabili sono binarie:

  • 1 se l'oggetto e selezionato
  • 0 altrimenti

i=1,...,n

Quanto alla funzione obbiettivo, vogliamo un profitto massimo:

nΣi=1 Pix

con pi profitto dell'oggetto i-esimo. Vogliamo anche che:

nΣi=1 Wixi≤B

xi∈{0,1}

Come cambia la formulazione se invece di avere un oggetto di ogni tipo ne ho tanti? Supponiamo di dover caricare un camion e di avere tre tipi di oggetti:

  1. r1 ... w1
  2. r2 ... w2
  3. rn ... wn

#n copie di ogni oggetto illimitato

Non devo stabilire se un oggetto viene selezionato o meno, ma quante copie prendere di ciascun oggetto. Questo problema viene chiamato Knapsack intero, e l'unica cosa che cambia sono le variabili:

xi# copie selezionate di ciascun oggetto

La formulazione è identica

nΣi=1 Pixi (massimizzare il profitto) nΣi=1 Wixi (restrizione sulla capacità)

xi≥0, xi intero

Modellazione PLI — casi standard

Limitazioni inferiori/superiori

Supponiamo di avere una variabile x che rappresenti una quantità da produrre e che i vincoli del problema mi impongano che x non si produca affatto o che sia compresa in un certo intervallo [Nmin, Nmax]. Quindi:

x ∈ {0} ∪ [Nmin, Nmax]

Dobbiamo trovare un modo per scrivere questa relazione con vincoli lineari. Per fare questo utilizziamo una variabile ausiliaria (la utilizziamo solo per rappresentare quel vincolo, e non sarà parte del problema) binaria:

cioè:

y = {    0   se x ∈ [Nmin, Nmax]    1   altrimenti

Per ogni vincolo ne scriviamo due:

x ≤ Nmaxy x ≥ Nminy

Questi due vincoli dicono che se y = 0 allora x = 0, e se y = 1 allora Nmin ≤ x ≤ Nmax

Questo caso è molto simile a quello dei costi fissi di attivazione.

Costi fissi di attivazione

Supponiamo di voler produrre un certo bene, e come prima o non lo produciamo o ne produciamo una certa quantità. Per iniziare la produzione supponiamo di avere un costo fisso, cf, che x rappresenti la quantità di questo bene che deve essere prodotto. Oltre al costo fisso abbiamo un costo unitario pari a c. Possiamo quindi assumere di avere una funzione di costo che ha questo aspetto:

{ 0                   se x=0(f(x) = {(cf + cx    se x>0

Graficamente le funzioni di costo |f(x) Supponiamo di voler minimizzare f1(x), ma aggiungiamo una variabile d da minimizzare. f1(x) può essere tutta la funzione obiettivo o solo una parte. Introduciamo una variabile ausiliaria y che vale:

y = { 1          se x > 0        0          altrimenti (x = 0)

19.10.2010

Lezione 4

Formulato come problema di PL:

  1. min f( c(x) )
  2. max f( c(x) )

Sia f( c(x) ) una funzione lineare.

Dobbiamo minimizzare il modulo di f( c(x) ), e possiamo osservare che:

  • |f( c(x) )| = max { f( c(x) ), -f( c(x) ) }

Per modellare la minimizzazione del modulo introduciamo una variabile ausiliaria z, e dobbiamo fare in modo che:

  • z ≥ f( c(x) )
  • z ≥ -f( c(x) )

In generale se vogliamo minimizzare il massimo tra più scelte usiamo z e chiediamo che z sia ≥ di ciascuna di queste scelte.

max { |f( c(x) )|

  • f( c(x) ) = max { g( c(x) ), r( c(x) ) }

con: z ≥ g( c(x) ) z ≥ r( c(x) )

con g non rappresenterebbe il modulo.

Possiamo scrivere:

  • f( c(x) ) se x ≥ 0
  • z |f( c(x) )| = {-f( c(x)) se x
Dettagli
Publisher
A.A. 2010-2011
62 pagine
1 download
SSD Scienze matematiche e informatiche MAT/09 Ricerca operativa

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher dottorp di informazioni apprese con la frequenza delle lezioni di Ricerca operativa II e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi Roma Tre o del prof Nicosia Gaia.