Ottimizzazione in ECLiPSe



Похожие документы
Il Metodo Branch and Bound

FONDAMENTI DI INTELLIGENZA ARTIFICIALE (8 CFU)

Algoritmi e strutture dati. Codici di Huffman

La programmazione con vincoli in breve. La programmazione con vincoli in breve

Ottimizzazione Multi Obiettivo

Seconda Prova di Ricerca Operativa. Cognome Nome Numero Matricola A 1/12 A 2/12

Intelligenza Artificiale

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Sistemi Operativi mod. B. Sistemi Operativi mod. B A B C A B C P P P P P P < P 1, >

Processi e Thread. Scheduling (Schedulazione)

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Esercizi su. Funzioni

Esercizi di Ricerca Operativa I

Intelligenza Artificiale. Metodi di ricerca

L amministratore di dominio

Ricerca non informata in uno spazio di stati

Soluzione dell esercizio del 12 Febbraio 2004

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

MOCA. Modulo Candidatura. [Manuale versione 1.0 marzo 2013]

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

NUOVA PROCEDURA COPIA ED INCOLLA PER L INSERIMENTO DELLE CLASSIFICHE NEL SISTEMA INFORMATICO KSPORT.

Introduzione a Dev-C++

Gestione dell account AdWords di Google Guida pratica

VC-dimension: Esempio

MAPPE DI KARNAUGH e sintesi ottima

Configuration Managment Configurare EC2 su AWS. Tutorial. Configuration Managment. Configurare il servizio EC2 su AWS. Pagina 1

Capitolo TOTALI PARZIALI E COMPLESSIVI Aprire la cartella di lavoro Lezione2 e inserire la tabella n 2 nel Foglio1 che chiameremo Totali.

Ricerca Operativa Esercizi sul metodo del simplesso. Luigi De Giovanni, Laura Brentegani

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007

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

Secondo Compitino di Basi di Dati

Dispensa di database Access

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Sistema operativo: Gestione della memoria

Archivio CD. Fondamenti di Programmazione

Per effettuare la stampa di una cartella di lavoro si accede al comando. Stampa dal menu File o si utilizza il pulsante omonimo sulla barra

Uso delle tabelle e dei grafici Pivot

STAMPA UNIONE DI WORD

Alcuni consigli per un uso di base delle serie di dati automatiche in Microsoft Excel

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

Procedura SMS. Manuale Utente

EXCEL FUNZIONI PRINCIPALI

Figura 1 Le Icone dei file di Excel con e senza macro.

I PROBLEMI ALGEBRICI

A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa.

Lezione 9: Cambio di base

e-dva - eni-depth Velocity Analysis

Guida alla registrazione on-line di un DataLogger

Implementing a new ADT based on the HL7 version 3 RIM. Esempio

Quadratic assignment Problem: The Hospital Layout

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

Agenzia delle entrate on line. A cosa serve?

Esempi di algoritmi. Lezione III

Manuale della Qualità e Controllo del Processo

Guida rapida per i docenti all'uso della piattaforma di e-learning dell'istituto Giua

~ Copyright Ripetizionando - All rights reserved ~ STUDIO DI FUNZIONE

Problemi di soddisfacimento di vincoli. Formulazione di problemi CSP. Colorazione di una mappa. Altri problemi

Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione

ESEMPIO 1: eseguire il complemento a 10 di 765

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

Università degli Studi di Ferrara - A.A. 2014/15 Dott. Valerio Muzzioli ORDINAMENTO DEI DATI

Simulazione traffico urbano

Esercizio 1: trading on-line

Manuale rapido di personalizzazione ed uso programma

MAGAZZINO FISCALE (agg. alla rel )

RAPPRESENTAZIONE GRAFICA DEGLI ALGORITMI

Cosa è un foglio elettronico

Lezione 8. La macchina universale

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

Procedura per l abbinamento tenico-atleta

Utilizzo delle formule in Excel

Plate Locator Riconoscimento Automatico di Targhe

Le equazioni. Diapositive riassemblate e rielaborate da prof. Antonio Manca da materiali offerti dalla rete.

Prova di Laboratorio di Programmazione

Hub-PA Versione Manuale utente

Ricerca Operativa e Logistica

Il costrutto monitor [Hoare 74]

INVIO SMS

Ricerca Operativa A.A. 2007/2008

Gestione Risorse Umane Web Work-flow Selezione

Deadlock (stallo) Parte III. Deadlock

Ricerca Operativa Branch-and-Bound per problemi di Programmazione Lineare Intera

2. LOGIN E RECUPERO DATI DI ACCESSO

Dimensione di uno Spazio vettoriale

risulta (x) = 1 se x < 0.

APPENDICE LINEE GUIDA PER SPERIMENTAZIONE WEB

Cos è ACCESS? E un programma di gestione di database (DBMS) Access offre: un ambiente user frendly da usare (ambiente grafico)

Tutorial per il modulo Composizione e tecnica fotografica Un approfondimento sulla fotografia panoramica. Roberto Gonella, Alberto Terragni

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Транскрипт:

OTTIMIZZAZIONE In molte applicazioni non siamo interessati a soluzioni ammissibili, ili, ma alla soluzione ottima rispetto a un certo criterio. ENUMERAZIONE trova tutte le soluzioni ammissibili scegli la migliore inefficiente I linguaggi di Programmazione a Vincoli in generale incapsulano una forma di Branch and Bound ogni volta che viene trovata una soluzione di costo C*, viene imposto un vincolo sulla parte rimanente dello spazio di ricerca. Il vincolo afferma che soluzioni successive (il cui costo e e C) devono essere migliori della migliore soluzione trovata finora. C < C* Ottimizzazione in ECLiPSe minimize(goal,cost) o min_max(goal,cost) invocano Goal; fra le varie soluzioni ne forniscono una per cui Cost è minimo Usano algoritmi diversi, entrambi basati su branch & bound 2

Ottimizzazione: Esempio Es: [A,B]::..5, A+B#<5,A*B#= -C, min_max(labeling([a,b]),c).. Impone i vincoli e propaga: A{[..4]}, B{[..4]}, C{[-6..]} 2. esegue labeling e trova una soluzione: A=, B=, C= 3. backtracking: torna alla situazione al passo 4. impone nuovo vincolo C #< e propaga: A{[..3]}, B{[..3]}, C{[-9 9.. -]} 5. esegue labeling e trova una soluzione: A=, B=, C=- 6. backtracking: torna alla situazione al passo 7. impone nuovo vincolo C #< - e propaga: etc. A{[..3]}, B{[..3]}, C{[-9 9.. -2]} Quando non trova più soluzioni, fornisce l ultimo risultato ottenuto come soluzione 3 Altri algoritmi di Search Esplorazione depth- st : in profondità lungo il ramo di sinistra, poi torna indietro passo, ecc. esplora le foglie di sinistra prima di quelle di destra. Supponiamo che l euristica sia molto buona: in tutto il percorso compie solo errore. errore all ultimo nodo => errore al primo => Soluzione 4

Limited Discrepancy Search Discrepanza= seguo l euristica Soluzione 5 Limited Discrepancy Search Discrepanza=: Permetto che ci sia un errore nell euristica. euristica. Prendo sempre il ramo di sinistra e prendo solo una volta il ramo di destra Soluzione 6

fd_search Libreria fd_search: search(l, Arg, Select, Choice, Method, Opt) L: Lista di variabili. Arg =, Opt=[] (per I nostri usi, V manuale per approfondimenti) Select: euristica di selezione della variabile. input_order, first_fail, smallest, largest, occurrence, most_constrained, max_regret, anti_first_fail Choice: euristica di selezione del valore indomain, indomain_min, indomain_max, indomain_middle, indomain_median, indomain_split, indomain_random, indomain_interval Method: Algoritmo di search complete, bbs(steps Steps), lds(disc), credit(credit Credit, bbs(steps Steps) or lds(disc)), dbs(level Level, bbs(steps Steps) or lds(disc)), sbds 7 LDS in ECLiPSe risolvi(l):- crea_domini(l), imponi_vincoli(l), search(l,,most_constrained, indomain, lds(5),[]). ottimizza(l):- crea_domini(l), imponi_vincoli(l), crea_obiettivo(l,f), minimize(search(l,, search(l,,most_constrained, indomain, lds(5),[]), F). 8

Creazione di nuovi vincoli In certi casi può essere utile creare nuovi vincoli se il linguaggio non è abbastanza espressivo se ho trovato un algoritmo efficiente per implementare un vincolo globale Metodi per implementare nuovi vincoli vincolo element/3 libreria propia implementazione sospensioni (altri, Vedi manuale) 9 Vincolo element/3 Un vincolo è una relazione, quindi può essere scritto come tabella in cui elenco Ie coppie consistenti e quelle inconsistenti X Y 2 c(x,y) 2

Vincolo element/3 Oppure con una tabella in cui elenco solo le consistenti In questo caso, il vincolo è soddisfatto solo se viene selezionata una riga c(x,y):- element(i,[,,,],x), element(i,[,2,,2],y). X Y 2 2 Primitive per gestire i domini In ECLIPSE ci sono primitive per creare nuovi vincoli dvar_domain(x,d) fornisce il dominio (dato astratto) della variabile X Es X::.., dvar_domain(x,d). yes, D=... dom_to_list(d,l) trasforma il dominio in lista Es X::[..3,..2], dvar_domain(x, D), dom_to_list(d,l). yes, D = [..3,..2] List = [, 2, 3,,, 2] Passa da una rappresentazione compatta ad una estesa: spesso sconsigliato 2

Primitive per gestire i domini dom_check_in(+element +Element, +Dom) Verifica che l intero Element sia nel dominio Dom. dom_compare(?res, +Dom, +Dom2) Confronta due domini. Res viene unificato con = sse Dom = Dom2, < sse Dom Dom2, > sse Dom2 Dom. Fallisce se nessuno è sottoinsieme dell altro dom_member(? (?Element, +Dom) istanzia nondeterministicamente Element ad uno dei valori in Dom dom_range(+dom +Dom,,?Min? Min,,?Max) Fornisce il minimo ed il massimo del dominio dom_size(+dom,?size) Fornisce il numero di elementi nel dominio 3 Primitive per gestire i domini dvar_remove_element(+dvar +DVar, +El) Elimina El dal dominio della variabile DVar dvar_remove_smaller(+dvar, +El) Elimina dal dominio di DVar gli elementi < El dvar_remove_greater(+dvar +DVar, +El) Elimina dal dominio di DVar gli elementi > El 4

(meta)predicato Suspend suspend(+goal +Goal, +Prio, +CondList) Sospende il Goal in attesa che si verifichi una delle condizioni nella CondList CondList è una lista che contiene elementi del tipo Variabili -> > libreria:evento Prio è una priorità da a 2: vengono risvegliati prima i vincoli con priorità bassa Es: suspend(c(a,b),3,[a->fd:min,b >fd:min,b->suspend:inst] >suspend:inst] sospende il goal c(a,b) e lo risveglia quando o viene eliminato il minimo nel dominio di A o viene istanziato B. 5 Esempio: implementazione di un vincolo minimo(a,b,c):- dvar_domain(a,doma), dom_range(doma,mina,maxa), dvar_domain(b,domb), dom_range(domb,minb,maxb), min_int(mina,minb,minmin), min_int(maxa,maxb,maxmin), dvar_remove_smaller(c,minmin), dvar_remove_greater(c,maxmin), ( nonvar(a), nonvar(b), nonvar(c) ->true ; suspend(minimo(a,b,c),3,[a->fd:min, A->fd:max,B->fd:min,B->fd:max]) >fd:max]) ), wake. min_int(a,b,b):- A>=B =B,!. min_int(a,b,a): (A,B,A):- A<B. Estraggo i domini Calcolo i nuovi domini Elimino i val inconsistenti Se vincolo risolto -> > fine Altrimenti sospendo Risveglio altri vincoli 6

Esempio A::3..5,B::2..6, C::..9, minimo(a,b,c). A = A{[3..5]} B = B{[2..6]} C = C{[2..5]} Delayed goals: minimo(a{[3..5]}, B{[2..6]}, C{[2..5]}) 7 Miglioramenti? Non faccio propagazione da C verso A e B A :: 3..5, B :: 2..6, C ::..2, minimo(a, B, C). A = A{[3..5]},B = B{[2..6]},C = 2 Delayed goals: minimo(a{[3..5]}, B{[2..6]}, 2) Risveglio il vincolo troppo spesso Se MinA<MinB MinB non c è bisogno di svegliarsi su B->fd fd:min Se MaxA<MinB MinB,, so già che A=C: potrei evitare di sospendere il vincolo minore(a,b,c) ed imporre il vincolo A#=C. 8

Per saperne di piu Manuale on line con Esempi Reference Manual User Manual Tutorial 9