8
Programmazione a vincoli: algoritmi di scheduling in OPL Laureanda : Sara Zanette Relatore: Ch.mo Prof. Agostino Cortesi Correlatore: Ch.mo Prof. Elena Moretti Università Ca’Foscari - Venezia - A.A. 2000/2001

Programmazione a vincoli: algoritmi di scheduling in OPL Laureanda : Sara Zanette Relatore: Ch.mo Prof. Agostino Cortesi Correlatore: Ch.mo Prof. Elena

Embed Size (px)

Citation preview

Page 1: Programmazione a vincoli: algoritmi di scheduling in OPL Laureanda : Sara Zanette Relatore: Ch.mo Prof. Agostino Cortesi Correlatore: Ch.mo Prof. Elena

Programmazione a vincoli: algoritmi di scheduling in

OPL

Laureanda : Sara Zanette

Relatore: Ch.mo Prof. Agostino Cortesi

Correlatore: Ch.mo Prof. Elena Moretti

Università Ca’Foscari - Venezia - A.A. 2000/2001

Page 2: Programmazione a vincoli: algoritmi di scheduling in OPL Laureanda : Sara Zanette Relatore: Ch.mo Prof. Agostino Cortesi Correlatore: Ch.mo Prof. Elena

2

Gli obiettivi della tesi

Primo obiettivo: studio della programmazione a vincoli, in particolare delle tecniche di risoluzione per i problemi a vincoli.

Secondo obiettivo: verificare l’efficacia del linguaggio OPL (Optimization Programming Language)

- modellare problemi di scheduling;

- studiare l’efficienza del solver dal punto di vista dellacorrettezza cioè se esso riesce a trovare una soluzionecorretta e ottima per i problemi;

- studiare l’efficienza del solver dal punto di vista dei tempi computazionali cioè studiare come reagisce il solver aumentando i dati di input.

Page 3: Programmazione a vincoli: algoritmi di scheduling in OPL Laureanda : Sara Zanette Relatore: Ch.mo Prof. Agostino Cortesi Correlatore: Ch.mo Prof. Elena

3

La programmazione a vincoli

Un vincolo è una relazione logica fra diverse variabili e la programmazione a vincoli è lo studio dei sistemi computazionali basati sui vincoli.

Le tecniche risolutive studiate riguardano i problemi di Constraint Satisfaction cioè i problemi definiti su domini finiti.

- La ricerca sistematica: Generete&Test e Backtracking.

- Le tecniche di consistenza: dei nodi, degli archi, path consistenza.

- La propagazione dei vincoli: metodi di look forward e di look ahead.

Page 4: Programmazione a vincoli: algoritmi di scheduling in OPL Laureanda : Sara Zanette Relatore: Ch.mo Prof. Agostino Cortesi Correlatore: Ch.mo Prof. Elena

4

Classi di problemi particolari

Problemi di ottimizzazioneLo scopo è trovare la soluzione migliore e la qualità della soluzione dipende da una funzione obiettivo.

Metodo risolutivo: - Algoritmo di Branch&Bound

Problemi di over-constraint Problemi in cui non tutti i vincoli verranno soddisfatti dalla soluzione.

Metodi risolutivi: - Partial Constraint Satisfaction - Vincoli gerarchici

Page 5: Programmazione a vincoli: algoritmi di scheduling in OPL Laureanda : Sara Zanette Relatore: Ch.mo Prof. Agostino Cortesi Correlatore: Ch.mo Prof. Elena

5

Vantaggi e limiti della programmazione a vincoli La natura dichiarativa: il programmatore descrive cosa deve essere risolto in un problema, non come va risolto.

Trovare la soluzione è compito del solver e non è necessario verificarne la correttezza.

La separazione tra la dichiarazione dei vincoli e la ricerca permette di modificare una componente senza modificare l’altra.

I problemi NP-hard hanno efficienza imprevedibile.

La stabilità dei modelli: apportando piccoli cambiamenti ai dati o aggiungendo vincoli ad un problema può verificarsi un notevole abbassamento di performance.

Page 6: Programmazione a vincoli: algoritmi di scheduling in OPL Laureanda : Sara Zanette Relatore: Ch.mo Prof. Agostino Cortesi Correlatore: Ch.mo Prof. Elena

6

OPL : Optimization Programming Language

OPL è un linguaggio ad alto livello per l’ottimizzazione che combina assieme la potenza dei linguaggi a vincoli con quella dei linguaggi a modelli. OPL è stato sviluppato da Pascal Van Hentenryck nel 1999.

Le aree di applicazione di OPL: - La programmazione lineare, intera e mista - I problemi per la risoluzione di vincoli non di ottimizzazione - Lo scheduling.

Il codice OPL è composto da:1. Una sequenza di dichiarazioni di costanti e di variabili;2. Un’istruzione che indica la funzione obiettivo;3. Una sequenza di dichiarazioni di vincoli;4. Una procedura di ricerca (opzionale);

Page 7: Programmazione a vincoli: algoritmi di scheduling in OPL Laureanda : Sara Zanette Relatore: Ch.mo Prof. Agostino Cortesi Correlatore: Ch.mo Prof. Elena

7

I problemi di scheduling modellati nella tesi

Skin flow shop

Job shop

Flow shop ibrido

Flow shop con tempi di set-up

- Ogni problema è stato modellato scrivendo in media solo 45 righe di codice e si sono usati algoritmi predefiniti da OPL

- Si sono introdotti nuovi tipi di vincoli per poter modellare correttamente i problemi, potenziando gli strumenti di OPL.

- In tutti i casi si è trovata la soluzione ottima e si è verificata la correttezza.

- Si sono calcolate le curve di tendenza dei tempi d’esecuzione

Page 8: Programmazione a vincoli: algoritmi di scheduling in OPL Laureanda : Sara Zanette Relatore: Ch.mo Prof. Agostino Cortesi Correlatore: Ch.mo Prof. Elena

8

Vantaggi di OPL

Codice semplice da interpretare - vocabolario ridotto, strutture e algoritmi predefiniti; - la sintassi è facilmente apprendibile e il codice è di

immediata comprensione per l’utente.

Semplicità nell’individuare gli errori - il codice è chiaro ed ogni riga può essere interpretata

correttamente senza l’onere di conoscere l’intero programma.

La velocità e la funzionalità per lo studio di diversi input è assicurata dalla separazione tra il modello e la dichiarazione dei dati.

Nei casi di tempi computazionali proibitivi, l’ambiente di sviluppo ILOG OPL Studio permette di ottenere una soluzione subottima senza attendere la fine del processo di ricerca.