Title: Programmazione a vincoli: algoritmi di scheduling in OPL
1Programmazione a vincoli algoritmi di scheduling
in OPL
Laureanda Sara Zanette Relatore Ch.mo Prof.
Agostino Cortesi Correlatore Ch.mo Prof. Elena
Moretti Università CaFoscari - Venezia - A.A.
2000/2001
2Gli obiettivi della tesi
Primo obiettivo studio della programmazione a
vincoli, in particolare
delle tecniche di risoluzione
per i problemi a vincoli. Secondo obiettivo
verificare lefficacia del linguaggio OPL
(Optimization Programming
Language) - modellare problemi di
scheduling - studiare lefficienza del
solver dal punto di vista della correttezza cioè
se esso riesce a trovare una soluzione corretta e
ottima per i problemi - studiare
lefficienza del solver dal punto di vista dei
tempi computazionali cioè studiare come
reagisce il solver aumentando i dati di input.
3La 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 GenereteTest e
Backtracking. - Le tecniche di consistenza
dei nodi, degli archi, path
consistenza. - La
propagazione dei vincoli metodi di look forward
e
di look ahead.
4Classi di problemi particolari
Problemi di ottimizzazione Lo scopo è trovare la
soluzione migliore e la qualità della soluzione
dipende da una funzione obiettivo. Metodo
risolutivo - Algoritmo di BranchBound Probl
emi di over-constraint Problemi in cui non tutti
i vincoli verranno soddisfatti dalla soluzione.
Metodi risolutivi - Partial Constraint
Satisfaction - Vincoli gerarchici
5Vantaggi 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 laltra. - 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.
6OPL Optimization Programming Language
OPL è un linguaggio ad alto livello per
lottimizzazione 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. Unistruzione che indica la
funzione obiettivo 3. Una sequenza di
dichiarazioni di vincoli 4. Una procedura di
ricerca (opzionale)
7I 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 desecuzione
8Vantaggi di OPL
Codice semplice da interpretare
- vocabolario
ridotto, strutture e algoritmi predefiniti
- la sintassi è facilmente
apprendibile e il codice è di immediata
comprensione per lutente. Semplicità
nellindividuare gli errori
- il codice è chiaro ed
ogni riga può essere interpretata correttamente
senza lonere di conoscere lintero 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,
lambiente di sviluppo ILOG OPL Studio permette
di ottenere una soluzione subottima senza
attendere la fine del processo di ricerca.