Programmazione lineare

Programmazione lineare contiene alcuni algoritmi utili per risolvere certi problemi di ottimizzazione.

Introduzione

Andiamo in questa sezione a definire un problema di programmazione lineare

Definizione

  • Variabili reali che saranno le variabili del nostro problema, sono in numero finito (eg. tutti in Rn)
  • Funzione obiettivo che ci definisce il costo
  • Vincoli lineari che limitano il dominio delle variabili reali e li mettono in relazione fra di loro

Se le variabili appartengono agli interi andiamo a parlare di programmazione lineare intera.

  • Slide

    Untitled

Rappresentazione della soluzione si può formalizzare sempre in questo modo:

Programmazione lineare intera

In modo curioso la programmazione lineare è più facile rispetto alla PLI.

  • Esempio di modelizzazione

    Ha fatto un esempio di modelizzazione di un problema introduttivo in classe, in effetti si deve fare attenzione a moltissime cose… (soprattutto costraints impliciti).

Quantitative rappresentano alcune quantità

Logiche rappresentano valori binari (di solito utilizzati per modellare l’assegnamento ad un task)

Relazioni logiche

Possiamo codificare con relazioni fra variabili logiche il concetto di negazione, implicazione congiuzione e disgiunzione.

Le variabili in questo caso. La cosa interessante è che possiamo codificare relazioni logiche con relazioni lineari!

  • Slide rappresentazione di relazioni logiche con relazioni lineari

    Untitled 1

Vincoli di (semi-)assegnamento

Abbiamo un insieme di oggetti da assegnare in luoghi.

Questo si può codificare con una matrice e usare una variabile logica per specificare se è stato assegnato a quel luogo o meno.

(Secondo me si potrebbe anche utilizzare un numero per questo, ma magari l’algoritmo utilizzato è leggermente diverso, no forse specifica una possibilità di assegnamento, per questo una matrice è una cosa giusta).

Vincoli di semiassegnamento

Ossia ogni oggetto è assegnato a un singolo luogo

  • Slide semiassegnamento

    Untitled 2

Vincoli di assegnamento

Ogni oggetto ha un singolo luogo e ogni luogo un oggetto

  • Slide assegnamento

    Untitled 3

Selezione sottoinsiemi

Vogliamo selezionare il minimo fra certi sottoinsiemi (non per forza partizioni!)

Formulazione classica: sia , voglia determinare tale che abbia il costo minimo fra tutti. Nella selezione di questi sottoinsiemi possiamo considerare insiemi di copertura, di riempimento o di partizione.

Esempio del costo classico cioè aggiungo il costo con la variabile booleana che decide se lo scelgo o meno, e poi chiamo una matrice che dice se l'elemento i è in

  • Formalizzazione classica

    Untitled 4

  • Copertura, riempimento partizione

    Untitled 5

Variabili a Valori Discreti

Questa parte tratta di valori vincolati a valori reali. (un esempio solito è una macchina che è stata costruita a lavorare entro voltaggi precisi).

Si indica per un insieme di valori che una variabile può assumere. Una rappresentazione classica è in silde sotto

  • Slide

    Untitled 6

Minima Quantità Positiva Prefissata

Di solito queste tipologie di variabili rappresentano valori di produzione di una macchina perché o è spenta, rappresentata da uno 0, oppure è accesa e presente in un intervallo

  • Slide

    Untitled 7

Funzione a carico fisso

Indica costi 0 quando la macchina non è in produzione, mentre però è attiva, anche se fa poco, c'è un carico fisso ossia un costo che c'è sempre, e poi cresce in modo lineare

  • Slide introduttive

    Untitled 8

  • Formalizzazione classica

    Untitled 9

Rappresentazione del valore assoluto

SI tratta di come rappresentare mediante vincoli la relazione di valore assoluto.

Un problema con questo metodo è che non sempre si riescono a gestire

Anche gestendolo in questo modo ci sono alcune ambiguità

  • Slide, formalizzazione classica e funzione costo

    Untitled 10

Funzioni lineari a tratti

L'idea è utilizzare una variabile logica che ci dice in quale tratto è presente, poi utilizzare la funzione per calcolare il valore corretto.

In pratica questa è una forma di generalizzazione dei problemi con funzioni a carico fisso, in cui vengono introdotte delle variabili per dire dove sei, e poi utilizzare la funzione di costo del carico fisso.

Questo metodo è buono perché posso utilizzarlo per quanti tratti mi pare

  • Formalizzazione

    Untitled 11

    Untitled 12

    Untitled 13

Modellizzazione per Problemi noti

Problema della fonderia

Untitled 14

  • Soluzione fonderia

    Untitled 15

Problema pianificazione della produzione

Untitled 16

  • Soluzione pianificazione produzione

    Untitled 17

Problema dello zaino (!)

Untitled 18

  • Soluzione del modello

    Untitled 19

Albero di copertura di costo minimo

Untitled 20

  • Soluzione

    Untitled 21

Problema del commesso viaggiatore

Untitled 22

Untitled 23

  • Note sulla path hamiltoniana

    Untitled 24

  • Soluzione modellizzazione

    Untitled 25

Problema dell’agenzia matrimoniale (!)

Untitled 26

Untitled 27

  • Soluzione modellizzazione

    Untitled 28

Problema allocazione dei lavori alle macchine (!)

Descrizione del problema

  • Dal libro

    Untitled 29

    Untitled 30

Abbiamo dei lavori che devono essere svolti in questi intervalli : , che sono certi valori che svolgono qualcosa, vogliamo cercare di massimizzare il numero di cose svolte, avendo un certo numero di macchine. Una macchina può avere solo un lavoro (o dipendente).

Questo è un problema di semiassegnamento.

Modellizzazione

poniamo se il lavoro è svolto dalla macchina , altrimenti 0

vincoli necessari semi-assegnamento , ora dobbiamo andare a modellizzare il concetto dell’intervallo.

Quindi mi definisco un insieme che contiene tutti i lavori incompatibili a .

Allora il vincolo diventa con , Cioè vogliamo che una macchina esegua solamente un lavoro, o nessun lavoro. E questo vincolo ci dà il concetto di vincolo.

Ora passo alla discussione della funzione obiettivo, quindi introduco una nuova variabile che mi conta le macchine utilizzate

, per tutte le macchine, e poi questa è maggiore di tutti gli per una macchina j fissata.. Così provo ad utilizzare meno macchine possibili

Problema docente di informatica (!)

Questo problema è rappresentato nel libro come di minimizzazione del tempo per lavori di macchina a pagina 37 del pdf delle dispense

Descrizione del problema

Ho progetti da compilare su pc, voglio che ci mettano meno tempo possibile.

Modellizzazione

Sia la variabile la variabile logica se il progetto è data alla macchina

Semi-assegnamento al massimo assegno il progetto a una singola macchina

. Ora entra la parte difficile, introdurre delle variabili che siano utili per avere questo concetto di tempo.

Sia , questo rappresenta il tempo di utilizzo del singolo PC. Quello che noi dobbiamo minimizzare è

Ma questo vincolo non è lineare, quindi è un problema

Quindi introduco un valore che e provo a minimizzare solamente z, quindi sarà il suo valore più basso. (minimo upper bound)

Problema assegnamento delle frequenze

Untitled 31

  • Soluzione problema assegnamento

    Untitled 32

Problema della commesse

Ho n dipendenti, devo evadere m pacchi, un sottoinsieme che indica da chi può essere eseguito questo pacco j, può essere da luogo a un ricavo di . Un dipendente può lavorare su un solo pacco per un intervallo di tempo. Può essere che non tutti i pacchi siano da evadere.

Inizio modello

se la commessa j è selezionata, altrimenti 0

boh

Funzione obiettivo