Upload
thorello-forti
View
214
Download
1
Embed Size (px)
Citation preview
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
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.
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.
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
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.
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);
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
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.