UN CASO DI STUDIO PER CLP(FD): ROSTERING OSPEDALIERO



Documenti analoghi
L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia

RISOLUTORE AUTOMATICO PER SUDOKU

PROVA FINALE V. AULETTA G. PERSIANO ALGORITMI II - -MAGIS INFO

INFORMATICA 1 L. Mezzalira

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C

FONDAMENTI di INFORMATICA L. Mezzalira

JAIL: Javacard Abstract Interpretation-based Lifeguard

Algoritmi euristici per il caricamento e l instradamento di una flotta di bisarche

PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE

Basi di Dati Relazionali

Informatica 3. LEZIONE 23: Indicizzazione. Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees

Corso di Informatica

Modulo 4 Il pannello amministrativo dell'hosting e il database per Wordpress

PrometeoQualità. Manuale Documenti

EXCEL FUNZIONI PRINCIPALI

TECNOLOGIE INFORMATICHE DELLA COMUNICAZIONE ORE SETTIMANALI 2 TIPO DI PROVA PER GIUDIZIO SOSPESO PROVA DI LABORATORIO

LINGUAGGI DI PROGRAMMAZIONE

Ricapitoliamo. Ricapitoliamo

12. Implementazione di un File System Struttura a livelli Allocazione contigua

Raggruppamenti Conti Movimenti

Esercitazioni di Progettazione del Software. Esercitazione (Prova al calcolatore del 17 settembre 2010)

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione

IN COLLABORAZIONE CON OPTA SRL

I servizi per tutti SOCCER MANAGER SOCCER MANAGER. I nuovi strumenti on- line, per uno servizio sempre migliore

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Allegato) all art.4 punto 5 Informatizzazione del Magazzino

Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica. Ingegneria del Software. La fase di Analisi

DSCube. L analisi dei dati come strumento per i processi decisionali

PROGRAMMA GESTIONE TURNI MANUALE UTENTE. Programma Gestione Turni Manuale Utente versione 1.1

Algoritmo proposto. Maria Silvia Pini, Francesca Rossi, K. Brent Venable. Dipartimento di Matematica Pura e Applicata Università di Padova

Programmazione in Java e gestione della grafica (I modulo) Lezione 1: Presentazione corso

Corso di Laurea Triennale in Ingegneria Informatica. Corso di Ingegneria del software A. A Marina Mongiello

FONDAMENTI DI INTELLIGENZA ARTIFICIALE-M

Disegni di Ricerca e Analisi dei Dati in Psicologia Clinica. Rcmdr

Progetto di RHS MicroAODV per Reti di Sensori A.A. 2007/2008

Obiettivi dell esercitazione. Requisiti (cont.) Requisiti. Università di Roma La Sapienza A.A Facoltà di Ingegneria Sede di Latina

FONDAMENTI DI INTELLIGENZA ARTIFICIALE (8 CFU)

Il sistema operativo TinyOS

Equilibrio bayesiano perfetto. Giochi di segnalazione

Introduzione alla Programmazione

Sommario. Prefazione...9. Introduzione...11

Organizzare le risorse umane con ricerca obiettivo

ALGEBRA DELLE PROPOSIZIONI

BMSO1001. Orchestrator. Istruzioni d uso 02/10-01 PC

Eclipse - Nozioni Base

Ottimizzazione Multi Obiettivo

Il foglio elettronico. Excel PARTE

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

Altri metodi di indicizzazione

Tesi Di Laurea. Anno Accademico 2010/2011. relatore Ch.mo prof. Cinque Marcello. correlatore Ch.mo Ing. Catello Cacace

Ottimizzazione delle interrogazioni (parte I)

8.9 CREARE UNA TABELLA PIVOT

Sistemi informativi secondo prospettive combinate

Gestione ed analisi di base dati nell epidemiologia. delle malattie infettive

Il Sistema Operativo: il File System

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Database Manager Guida utente DMAN-IT-01/09/10

MANDATO ELETTRONICO ISTRUZIONI PER L ESTRAZIONE FILE XLS

EASYGEST COME FATTURARE I DOCUMENTI DI TRASPORTO

Titolo della tesi Testing Black Box di un Web Service : sperimentazione su di un servizio con stato

PROGETTAZIONE MECCANICA DESIGN INDUSTRIALE OUTSOURCING RICERCA E SVILUPPO GRAFICA DOCUMENTAZIONE TECNICA STUDIO TECNICO

IL SISTEMA INFORMATIVO

Ottimizzazione in ECLiPSe

Problemi, Algoritmi e Programmi

Strumenti per la costruzione di modelli economici in Excel. Parte 2. Strumenti di Analisi

Tale attività non è descritta in questa dispensa

Documentazione esterna al software matematico sviluppato con MatLab

Il Metodo Branch and Bound

Organizzazione degli archivi

uadro Soluzioni software per L archiviazione elettronica dei documenti Gestione Aziendale Fa quadrato attorno alla tua azienda

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

Registro delle Lezioni

STAMPA UNIONE DI WORD

Progettazione ed implementazione di un tool per lo sviluppo di applicazioni in Esperanto

Gestione Turni. Introduzione

Mac Application Manager 1.3 (SOLO PER TIGER)

Stampa unione -contratto di tirocinio. Documentazione

Esercizi di JavaScript

Introduzione a Dev-C++

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

IL CICLO DI VITA DEL PROGETTO. Elementi essenziali di progetto. Fasi e tappe Gli Approcci

Manuale d uso [Rev.1 del 07/08/2015] Manutenzione impianti termici Ver [05/01/2015]

Analisi dei requisiti e casi d uso

MOBS Sistema di interscambio dati Mobilità Sanitaria Guida al linguaggio XSD

Indaco. Industrial Data Collection

Estensione di un sistema per la gestione semi-automatica di siti didattici con XML

DataWarehouse Regionale del Settore Socio Sanitario Modulo Dati di Mortalità

La conservazione digitale tra obblighi e opportunità

Tricks & Tips. [Access] Tutorial - ActiveX - Controllo Tree View. - Michele de Nittis - Versione: 1 Data Versione: venerdì 30 agosto 2002

Analisi Dati del Personale con Qlik View

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

RIFERIMENTI ATTORI GLOSSARIO. ERRORI COMUNI REV. REQUISITI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova

con ANTLR tesi di laurea Anno Accademico Relatore Ch.mo prof. Porfirio Tramontana Candidato Fabio Canova Matr

Funzioni in C. Violetta Lonati

Allocazione dinamica della memoria - riepilogo

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale

Università di Roma La Sapienza, Facoltà di Ingegneria

ALLEGATO 1 (SCHEDA DI ASSEGNAZIONE OBIETTIVI)

VALUTAZIONE PRESTAZIONI del PERSONALE NEL SETTORE BANCARIO

Transcript:

Seminario per il corso di Linguaggi di nuova concezione UN CASO DI STUDIO PER CLP(FD): ROSTERING OSPEDALIERO RAFFAELE CIPRIANO 22 Maggio 2007

Struttura del seminario 2 Il problema reale Modello decisionale in CLP(FD) Funzione obiettivo in CLP(FD) Miglioriamo ancora: La Ricerca Locale Alcuni accorgimenti pratici Sviluppi futuri Domande

Il problema reale 3 Il rostering ospedaliero

Il problema reale 3 Il rostering ospedaliero Il self-scheduling...

Il problema reale 3 Il rostering ospedaliero Il self-scheduling... Requisiti del sistema Input: caratteristiche del mese struttura del mese ferie turni particolari

Il problema reale 3 Il rostering ospedaliero Il self-scheduling... Requisiti del sistema Input: caratteristiche del mese struttura del mese ferie turni particolari Modello: conoscenza dell organizzazione del reparto suddivisione dei turni esigenze di servizio regole contrattuali caratteristiche del personale

Il problema reale 4 Output: orario con le seguenti caratteristiche copertura dei turni competenze corrette ferie soddisfatte norme lavorative rispettate lavoro bilanciato nel reparto lavoro bilanciato per ciascun medico

Il problema reale 4 Output: orario con le seguenti caratteristiche copertura dei turni competenze corrette ferie soddisfatte norme lavorative rispettate lavoro bilanciato nel reparto lavoro bilanciato per ciascun medico Obiettivi trovare soluzione ammissibile (CSP)

Il problema reale 4 Output: orario con le seguenti caratteristiche copertura dei turni competenze corrette ferie soddisfatte norme lavorative rispettate lavoro bilanciato nel reparto lavoro bilanciato per ciascun medico Obiettivi trovare soluzione ammissibile (CSP) trovare soluzione ammissibile buona (COP)

Il problema reale 4 Output: orario con le seguenti caratteristiche copertura dei turni competenze corrette ferie soddisfatte norme lavorative rispettate lavoro bilanciato nel reparto lavoro bilanciato per ciascun medico Obiettivi trovare soluzione ammissibile (CSP) trovare soluzione ammissibile buona (COP) trovare soluzione ammissibile buona in poco tempo!

Modello decisionale CLP(FD) Costruiamo un modello per il Constrain Satisfaction Problem (CSP) relativo alle esigenze del reparto. Useremo:

Modello decisionale CLP(FD) Costruiamo un modello per il Constrain Satisfaction Problem (CSP) relativo alle esigenze del reparto. Useremo: SICStus Prolog in particolare la libreria CLP(FD)

Modello decisionale CLP(FD) Costruiamo un modello per il Constrain Satisfaction Problem (CSP) relativo alle esigenze del reparto. Useremo: SICStus Prolog in particolare la libreria CLP(FD) La filosofia Constraint & Generate: Scelta delle variabili Impostazione dei domini delle variabili Impostazione dei vincoli sulle variabili Assegnamento dei valori alle variabili

Modello decisionale CLP(FD) Scelta delle variabili Supponiamo di avere... 7 giorni da coprire (1-7) 5 medici a disposizione (dr. Jekill, dr. Jones, dr. House, dr. Freud, dr. Watson) 3 turni possibili (U, R, E) Idee?

Modello decisionale CLP(FD) Scelta delle variabili Supponiamo di avere... 7 giorni da coprire (1-7) 5 medici a disposizione (dr. Jekill, dr. Jones, dr. House, dr. Freud, dr. Watson) 3 turni possibili (U, R, E) Idee? DOM: Dr. 1 2 3 4 5 6 7 U R E

Modello decisionale CLP(FD) DOM: Turno 1 2 3 4 5 6 7 Dr. Jekill Dr. Jones Dr. House Dr. Freud Dr. Watson

Modello decisionale CLP(FD) DOM: Turno 1 2 3 4 5 6 7 Dr. Jekill Dr. Jones Dr. House Dr. Freud Dr. Watson 1 2 3 4 5 6 7 DOM: bool U R E U R E U R E U R E U R E U R E U R Dr. Jekill Dr. Jones Dr. House Dr. Freud Dr. Watson

Modello decisionale CLP(FD) 1 2... 31 0/1 T 1 T 2... T k T 1 T 2... T k... T 1 T 2... T k MedicoA... MedicoB X B,k,1 X B,k,2............................................. MedicoM...

Modello decisionale CLP(FD) 1 2... 31 0/1 T 1 T 2... T k T 1 T 2... T k... T 1 T 2... T k MedicoA... MedicoB X B,k,1 X B,k,2............................................. MedicoM... Impostazione dei domini delle variabili Variabili booleane

Modello decisionale CLP(FD) 1 2... 31 0/1 T 1 T 2... T k T 1 T 2... T k... T 1 T 2... T k MedicoA... MedicoB X B,k,1 X B,k,2............................................. MedicoM... Impostazione dei domini delle variabili Variabili booleane Le variabili vengono impostate a 0 per medici non competenti sul turno o in ferie

Modello decisionale CLP(FD) Impostazione dei vincoli sulle variabili 1 2... 31 T 1 T 2... T k T 1 T 2... T k... T 1 T 2... T k MedicoA... MedicoB X B,k,1 X B,k,2............................................. MedicoM...

Modello decisionale CLP(FD) Impostazione dei vincoli sulle variabili 1 2... 31 T 1 T 2... T k T 1 T 2... T k... T 1 T 2... T k MedicoA... MedicoB X B,k,1 X B,k,2............................................. MedicoM... copertura dei turni - per colonna

Modello decisionale CLP(FD) Impostazione dei vincoli sulle variabili 1 2... 31 T 1 T 2... T k T 1 T 2... T k... T 1 T 2... T k MedicoA... MedicoB X B,k,1 X B,k,2............................................. MedicoM... copertura dei turni - per colonna norme lavorative rispettate - per porzioni di riga

Modello decisionale CLP(FD) Impostazione dei vincoli sulle variabili 1 2... 31 T 1 T 2... T k T 1 T 2... T k... T 1 T 2... T k MedicoA... MedicoB X B,k,1 X B,k,2............................................. MedicoM... copertura dei turni - per colonna norme lavorative rispettate - per porzioni di riga lavoro bilanciato per ciascun medico - per riga

Modello decisionale CLP(FD) Assegnamento dei valori alle variabili

Modello decisionale CLP(FD) Assegnamento dei valori alle variabili Ordine di assegnamento

Modello decisionale CLP(FD) Assegnamento dei valori alle variabili Ordine di assegnamento Concateniamo le liste... cosa succederà?

Modello decisionale CLP(FD) Assegnamento dei valori alle variabili Ordine di assegnamento Concateniamo le liste... cosa succederà? idee?

Modello decisionale CLP(FD) Assegnamento dei valori alle variabili Ordine di assegnamento Concateniamo le liste... cosa succederà? idee? Andiamo in diagonale con i dovuti accorgimenti...

Modello decisionale CLP(FD) Assegnamento dei valori alle variabili Ordine di assegnamento Concateniamo le liste... cosa succederà? idee? Andiamo in diagonale con i dovuti accorgimenti... Valore da assegnare (proviamo prima 0 o prima 1?)

Modello decisionale CLP(FD) Assegnamento dei valori alle variabili Ordine di assegnamento Concateniamo le liste... cosa succederà? idee? Andiamo in diagonale con i dovuti accorgimenti... Valore da assegnare (proviamo prima 0 o prima 1?) Se partiamo prima da 0...

Modello decisionale CLP(FD) Assegnamento dei valori alle variabili Ordine di assegnamento Concateniamo le liste... cosa succederà? idee? Andiamo in diagonale con i dovuti accorgimenti... Valore da assegnare (proviamo prima 0 o prima 1?) Se partiamo prima da 0... Se partiamo prima da 1...

Modello decisionale CLP(FD) Abbiamo il nostro modello in CLP(FD) per il CSP, lo lanciamo...

Modello decisionale CLP(FD) Abbiamo il nostro modello in CLP(FD) per il CSP, lo lanciamo... Il programma dà errore mentre pone dei vincoli... vincoli troppo restrittivi!

Modello decisionale CLP(FD) Abbiamo il nostro modello in CLP(FD) per il CSP, lo lanciamo... Il programma dà errore mentre pone dei vincoli... vincoli troppo restrittivi! Il programma trova una soluzione in pochi secondi... ok!

Modello decisionale CLP(FD) Abbiamo il nostro modello in CLP(FD) per il CSP, lo lanciamo... Il programma dà errore mentre pone dei vincoli... vincoli troppo restrittivi! Il programma trova una soluzione in pochi secondi... ok! Il labeling diverge... concludiamo che non esiste soluzione e il sistema non è in grado di accorgersene in tempi umani... continuerà ad esplorare lo spazio delle soluzioni!

Modello decisionale CLP(FD) Abbiamo il nostro modello in CLP(FD) per il CSP, lo lanciamo... Il programma dà errore mentre pone dei vincoli... vincoli troppo restrittivi! Il programma trova una soluzione in pochi secondi... ok! Il labeling diverge... concludiamo che non esiste soluzione e il sistema non è in grado di accorgersene in tempi umani... continuerà ad esplorare lo spazio delle soluzioni! Com è la soluzione?

Funzione obiettivo CLP(FD) 10 Arricchiamo il modello con una FObj per i soft-constraint per: Equilibrare tra i medici i turni sgraditi Evitare turni doppi (mattina e pomeriggio) Evitare turni uguali consecutivi

Funzione obiettivo CLP(FD) 10 Arricchiamo il modello con una FObj per i soft-constraint per: Equilibrare tra i medici i turni sgraditi Evitare turni doppi (mattina e pomeriggio) Evitare turni uguali consecutivi Cosa ne facciamo?

Funzione obiettivo CLP(FD) 10 Arricchiamo il modello con una FObj per i soft-constraint per: Equilibrare tra i medici i turni sgraditi Evitare turni doppi (mattina e pomeriggio) Evitare turni uguali consecutivi Cosa ne facciamo? labeling( [down, minimize(fobj)], Vars ).

Funzione obiettivo CLP(FD) 10 Arricchiamo il modello con una FObj per i soft-constraint per: Equilibrare tra i medici i turni sgraditi Evitare turni doppi (mattina e pomeriggio) Evitare turni uguali consecutivi Cosa ne facciamo? labeling( [down, minimize(fobj)], Vars ). Inizia ad esplorare tutto lo spazio delle soluzioni...diverge!

Funzione obiettivo CLP(FD) 11 Cerchiamo soluzioni progressivamente migliori: while( not timeout ) { labeling( [ff,down], Lista ), save( Lista ); f := valueofobjectivefunction( Lista ); addconstraint( FObj #< f ); deletevalue( Lista ) } load( Lista )

Funzione obiettivo CLP(FD) 11 Cerchiamo soluzioni progressivamente migliori: while( not timeout ) { labeling( [ff,down], Lista ), save( Lista ); f := valueofobjectivefunction( Lista ); addconstraint( FObj #< f ); deletevalue( Lista ) } load( Lista ) Migliora di poco! Da gestire con assert + retract + fail!:(

Funzione obiettivo CLP(FD) 11 Cerchiamo soluzioni progressivamente migliori: while( not timeout ) { labeling( [ff,down], Lista ), save( Lista ); f := valueofobjectivefunction( Lista ); addconstraint( FObj #< f ); deletevalue( Lista ) } load( Lista ) Migliora di poco! Da gestire con assert + retract + fail!:( Per la FObj conviene Local Search

Local Search 12 Famiglia di metodi incompleti:

Local Search 12 Famiglia di metodi incompleti: si basano sull uso di euristiche,

Local Search 12 Famiglia di metodi incompleti: si basano sull uso di euristiche, esplorano solo alcune aree dello SDS

Local Search 12 Famiglia di metodi incompleti: si basano sull uso di euristiche, esplorano solo alcune aree dello SDS lo scopo è trovare una soluzione ammissibile/buona.

Local Search 12 Famiglia di metodi incompleti: si basano sull uso di euristiche, esplorano solo alcune aree dello SDS lo scopo è trovare una soluzione ammissibile/buona. Concetti fondamentali Stato

Local Search 12 Famiglia di metodi incompleti: si basano sull uso di euristiche, esplorano solo alcune aree dello SDS lo scopo è trovare una soluzione ammissibile/buona. Concetti fondamentali Stato Funzione obiettivo

Local Search 12 Famiglia di metodi incompleti: si basano sull uso di euristiche, esplorano solo alcune aree dello SDS lo scopo è trovare una soluzione ammissibile/buona. Concetti fondamentali Stato Funzione obiettivo Mossa

Local Search 12 Famiglia di metodi incompleti: si basano sull uso di euristiche, esplorano solo alcune aree dello SDS lo scopo è trovare una soluzione ammissibile/buona. Concetti fondamentali Stato Funzione obiettivo Mossa Vicinato

Local Search 12 Famiglia di metodi incompleti: si basano sull uso di euristiche, esplorano solo alcune aree dello SDS lo scopo è trovare una soluzione ammissibile/buona. Concetti fondamentali Stato Funzione obiettivo Mossa Vicinato Esplorazione del vicinato

Local Search 12 Famiglia di metodi incompleti: si basano sull uso di euristiche, esplorano solo alcune aree dello SDS lo scopo è trovare una soluzione ammissibile/buona. Concetti fondamentali Stato Funzione obiettivo Mossa Vicinato Esplorazione del vicinato Varie strategie...

Approcci ibridi 13 Due tipi di approcci che fondono Constraint Programming e Local Search:

Approcci ibridi 13 Due tipi di approcci che fondono Constraint Programming e Local Search: Algoritmi di CP con all interno procedure di LS che possono intervenire nell albero di ricerca: migliorare la soluzione relativa a foglie o nodi; restringere la lista dei figli di un nodo; generare in modo greedy un cammino;

Approcci ibridi 13 Due tipi di approcci che fondono Constraint Programming e Local Search: Algoritmi di CP con all interno procedure di LS che possono intervenire nell albero di ricerca: migliorare la soluzione relativa a foglie o nodi; restringere la lista dei figli di un nodo; generare in modo greedy un cammino; Algoritmi LS con all interno procedure di CP che possono scartare i vicini che violano vincoli del problema; esplorare una porzione di vicinato; definire la ricerca del miglior vicino come un problema di ottimizzazione con vincoli.

Approcci ibridi 13 Due tipi di approcci che fondono Constraint Programming e Local Search: Algoritmi di CP con all interno procedure di LS che possono intervenire nell albero di ricerca: migliorare la soluzione relativa a foglie o nodi; restringere la lista dei figli di un nodo; generare in modo greedy un cammino; Algoritmi LS con all interno procedure di CP che possono scartare i vicini che violano vincoli del problema; esplorare una porzione di vicinato; definire la ricerca del miglior vicino come un problema di ottimizzazione con vincoli.

La Ricerca Locale 14 Per implementare gli algoritmi di ricerca locale usiamo il framework JEasyLocal [Schaerf, Di Gaspero]

La Ricerca Locale 14 Per implementare gli algoritmi di ricerca locale usiamo il framework JEasyLocal [Schaerf, Di Gaspero] Dobbiamo definire: Input Mese e anno, giorni festivi, ferie richieste,...

La Ricerca Locale 15 State Una soluzione, ovvero un orario: Dott 1 2 3 4 5... 31 MedicoA Mat UM UN... MedicoA Pom RM... UN MedicoB Mat ED... MedicoB Pom SU........................... MedicoB Mat SU ED... MedicoB Pom ED UN...

La Ricerca Locale 15 State Una soluzione, ovvero un orario: Dott 1 2 3 4 5... 31 MedicoA Mat UM UN... MedicoA Pom RM... UN MedicoB Mat ED... MedicoB Pom SU........................... MedicoB Mat SU ED... MedicoB Pom ED UN... Una FObj associata allo stato Usiamo la stessa formula usata per CLP(FD)

La Ricerca Locale 16 Move Mossa di scambio: Scambiare i turni di due medici relativi allo stesso giorno e alla stessa fascia oraria Dott 1 2... Jones... DH............... Freud UM............... = Dott 1 2... Jones... UM............... Freud DH...............

La Ricerca Locale 16 Move Mossa di scambio: Scambiare i turni di due medici relativi allo stesso giorno e alla stessa fascia oraria Dott 1 2... Jones... DH............... Freud UM............... = Stato iniziale Quello restituito da CLP(FD) Dott 1 2... Jones... UM............... Freud DH...............

La Ricerca Locale 16 Move Mossa di scambio: Scambiare i turni di due medici relativi allo stesso giorno e alla stessa fascia oraria Dott 1 2... Jones... DH............... Freud UM............... = Stato iniziale Quello restituito da CLP(FD) Dott 1 2... Jones... UM............... Freud DH............... Strategia di esplorazione del vicinato Random - Hill Climbing Esaustiva - Steepest Descent Esaustiva con TabuSearch

Eplorazione ibrida 17 Due tipi di approcci che fondono Constraint Programming e Local Search: Algoritmi di CP con all interno procedure di LS che possono intervenire nell albero di ricerca: migliorare la soluzione relativa a foglie o nodi; restringere la lista dei figli di un nodo; generare in modo greedy un cammino; Algoritmi LS con all interno procedure di CP che possono scartare i vicini che violano vincoli del problema; esplorare una porzione di vicinato; definire la ricerca del miglior vicino come un problema di ottimizzazione con vincoli.

La Ricerca Locale 18 Lanciamo Ricerca Locale

La Ricerca Locale 18 Lanciamo Ricerca Locale La FObj viene notevolmente migliorata Hill climbing più veloce e più efficace

Alcuni accorgimenti pratici 19 JEasyLocal in Java, CLP(FD) in SIC- Stus Prolog! Come fare?

Alcuni accorgimenti pratici 19 JEasyLocal in Java, CLP(FD) in SIC- Stus Prolog! Come fare? Master - slave? Master Java o SICStus?

Alcuni accorgimenti pratici 19 JEasyLocal in Java, CLP(FD) in SIC- Stus Prolog! Come fare? Master - slave? Master Java o SICStus? Come far comunicare i linguaggi per lo scambio di informazioni?

Alcuni accorgimenti pratici 19 JEasyLocal in Java, CLP(FD) in SIC- Stus Prolog! Come fare? Master - slave? Master Java o SICStus? Come far comunicare i linguaggi per lo scambio di informazioni? Jasper?...

Alcuni accorgimenti pratici 19 JEasyLocal in Java, CLP(FD) in SIC- Stus Prolog! Come fare? Master - slave? Master Java o SICStus? Come far comunicare i linguaggi per lo scambio di informazioni? Jasper?... File di testo?

Alcuni accorgimenti pratici 19 JEasyLocal in Java, CLP(FD) in SIC- Stus Prolog! Come fare? Master - slave? Master Java o SICStus? Come far comunicare i linguaggi per lo scambio di informazioni? Jasper?... File di testo? File XML?

Alcuni accorgimenti pratici 20 L orario generato come lo restituiamo?

Alcuni accorgimenti pratici 20 L orario generato come lo restituiamo? Deve poter essere visualizzabile - stampabile...

Alcuni accorgimenti pratici 20 L orario generato come lo restituiamo? Deve poter essere visualizzabile - stampabile... In ospedale usano un foglio excel che compilano a mano...

Alcuni accorgimenti pratici 20 L orario generato come lo restituiamo? Deve poter essere visualizzabile - stampabile... In ospedale usano un foglio excel che compilano a mano... Salviamo l orario in un formato ricosciuto da excel per poterlo caricare comodamente!

Alcuni accorgimenti pratici 20 L orario generato come lo restituiamo? Deve poter essere visualizzabile - stampabile... In ospedale usano un foglio excel che compilano a mano... Salviamo l orario in un formato ricosciuto da excel per poterlo caricare comodamente! Dobbiamo dare il tool in mano a qualcuno che non sa niente di ricerca locale o programmazione logica... GUI!

Sviluppi futuri 21 Non si finisce mai! :)

Sviluppi futuri 21 Non si finisce mai! :) Migliorare la fusione di CLP(FD)-LS

Sviluppi futuri 21 Non si finisce mai! :) Migliorare la fusione di CLP(FD)-LS Uso di GECODE per CLP(FD), scritto in C++

Sviluppi futuri 21 Non si finisce mai! :) Migliorare la fusione di CLP(FD)-LS Uso di GECODE per CLP(FD), scritto in C++ Uso di EasyLocal++, versione C++ di JEasyLocal

Sviluppi futuri 21 Non si finisce mai! :) Migliorare la fusione di CLP(FD)-LS Uso di GECODE per CLP(FD), scritto in C++ Uso di EasyLocal++, versione C++ di JEasyLocal Fusione dei due framework in un unico ambiente di sviluppo

Sviluppi futuri 21 Non si finisce mai! :) Migliorare la fusione di CLP(FD)-LS Uso di GECODE per CLP(FD), scritto in C++ Uso di EasyLocal++, versione C++ di JEasyLocal Fusione dei due framework in un unico ambiente di sviluppo Vantaggi possibili

Sviluppi futuri 21 Non si finisce mai! :) Migliorare la fusione di CLP(FD)-LS Uso di GECODE per CLP(FD), scritto in C++ Uso di EasyLocal++, versione C++ di JEasyLocal Fusione dei due framework in un unico ambiente di sviluppo Vantaggi possibili Modellare problemi ad alto livello: GECODE è pacchetto CLP(FD) completo;

Sviluppi futuri 21 Non si finisce mai! :) Migliorare la fusione di CLP(FD)-LS Uso di GECODE per CLP(FD), scritto in C++ Uso di EasyLocal++, versione C++ di JEasyLocal Fusione dei due framework in un unico ambiente di sviluppo Vantaggi possibili Modellare problemi ad alto livello: GECODE è pacchetto CLP(FD) completo; Algoritmi di ricerca locale già pronti

Sviluppi futuri 21 Non si finisce mai! :) Migliorare la fusione di CLP(FD)-LS Uso di GECODE per CLP(FD), scritto in C++ Uso di EasyLocal++, versione C++ di JEasyLocal Fusione dei due framework in un unico ambiente di sviluppo Vantaggi possibili Modellare problemi ad alto livello: GECODE è pacchetto CLP(FD) completo; Algoritmi di ricerca locale già pronti Manipolare strutture dati e flusso di controllo: C++

Sviluppi futuri 21 Non si finisce mai! :) Migliorare la fusione di CLP(FD)-LS Uso di GECODE per CLP(FD), scritto in C++ Uso di EasyLocal++, versione C++ di JEasyLocal Fusione dei due framework in un unico ambiente di sviluppo Vantaggi possibili Modellare problemi ad alto livello: GECODE è pacchetto CLP(FD) completo; Algoritmi di ricerca locale già pronti Manipolare strutture dati e flusso di controllo: C++ Ditribuire le elaborazioni su più processori

Sviluppi futuri 22 Difficoltà

Sviluppi futuri 22 Difficoltà Entrare nei dettagli implementativi di software scritto da altri

Sviluppi futuri 22 Difficoltà Entrare nei dettagli implementativi di software scritto da altri Trovare strutture dati agili per far comunicare i due framework con facilità

Sviluppi futuri 22 Difficoltà Entrare nei dettagli implementativi di software scritto da altri Trovare strutture dati agili per far comunicare i due framework con facilità Trade-off: efficienza computazionale VS facilità di modellazione

Parentesi: il GECODE 23 GEneric COnstraint Development Environment

Parentesi: il GECODE 23 GEneric COnstraint Development Environment Ambiente free in C++ per la programmazione con vincoli

Parentesi: il GECODE 23 GEneric COnstraint Development Environment Ambiente free in C++ per la programmazione con vincoli Stabile

Parentesi: il GECODE 23 GEneric COnstraint Development Environment Ambiente free in C++ per la programmazione con vincoli Stabile Completo

Parentesi: il GECODE 23 GEneric COnstraint Development Environment Ambiente free in C++ per la programmazione con vincoli Stabile Completo Efficiente (più di SICStus)

Parentesi: il GECODE 23 GEneric COnstraint Development Environment Ambiente free in C++ per la programmazione con vincoli Stabile Completo Efficiente (più di SICStus) Codice sorgente a disposizione

Parentesi: il GECODE 23 GEneric COnstraint Development Environment Ambiente free in C++ per la programmazione con vincoli Stabile Completo Efficiente (più di SICStus) Codice sorgente a disposizione No vincoli di allocazione della memoria

Parentesi: il GECODE 23 GEneric COnstraint Development Environment Ambiente free in C++ per la programmazione con vincoli Stabile Completo Efficiente (più di SICStus) Codice sorgente a disposizione No vincoli di allocazione della memoria Sta diventando uno standard...

Parentesi: il GECODE 23 GEneric COnstraint Development Environment Ambiente free in C++ per la programmazione con vincoli Stabile Completo Efficiente (più di SICStus) Codice sorgente a disposizione No vincoli di allocazione della memoria Sta diventando uno standard... Documentato... male!!!

Parentesi: il GECODE 23 GEneric COnstraint Development Environment Ambiente free in C++ per la programmazione con vincoli Stabile Completo Efficiente (più di SICStus) Codice sorgente a disposizione No vincoli di allocazione della memoria Sta diventando uno standard... Documentato... male!!! www.gecode.org

Domande? 24?

Bibliografia 25 E. K. Burke, P. De Causmaecker, G. Vanden Berghe, H. Van Landeghem The State of the Art of Nurse Rostering, Journal of Scheduling, 7, pp. 441-499, 2004. L. Di Gaspero, A. Schaerf, EasyLocal++: an object-oriented framework for the flexible design of local-search algorithms, Software- Practice and Experience, 33:733-765, 2003. A. Dovier, Linguaggi e Tecniche Speciali di Programmazione, http://www.dovier.dimi.it/did/lnc.pdf, 2004. F. Focacci, F. Laburthe, A. Lodi, Local search and constraint programming, Handbook of Metaheuristic, 2002. N. Jussien, O. Lhomme, Local search with constraint propagation and conflict-based heuristic, Artificial Intelligence, 139(1), pp. 21-45, 2002. E. Monfroy, F. Saubion, T. Lambert On hybridization of local search and constraint propagation, In proceedings of ICLP 2004, volume 3132 of LNCS, pp. 299-313, Springer Verlag, 2004.

Bibliografia 26 R. Cipriano, A. Dovier, L. Di Gaspero Un tool integrato per il rostering ospedaliero, Università degli Studi di Udine, Tesi di Laurea Specialistica in Informatica, A.A. 2004-2005. R. Cipriano, L. Di Gaspero, A. Dovier Hybrid Approaches for Rostering: A Case Study in the Integration of Constraint Programming and Local Search, Hybrid Metaheuristics, Third International Workshop, HM 2006, Gran Canaria, Spain, October 13-15, 2006, Proceedings. raffaele.cipriano@dimi.uniud.com

Bibliografia 26 R. Cipriano, A. Dovier, L. Di Gaspero Un tool integrato per il rostering ospedaliero, Università degli Studi di Udine, Tesi di Laurea Specialistica in Informatica, A.A. 2004-2005. R. Cipriano, L. Di Gaspero, A. Dovier Hybrid Approaches for Rostering: A Case Study in the Integration of Constraint Programming and Local Search, Hybrid Metaheuristics, Third International Workshop, HM 2006, Gran Canaria, Spain, October 13-15, 2006, Proceedings. raffaele.cipriano@dimi.uniud.com Grazie per l attenzione