View/Open - POLITesi

annuncio pubblicitario
POLITECNICO DI MILANO
Scuola di Ingegneria Industriale e dell’Informazione
Dipartimento di Elettronica, Informazione e Bioingegneria
STUDIO, PROGETTO E REALIZZAZIONE DI UN
SISTEMA MULTIAGENTE PER LA GESTIONE DEL
COMFORT TERMOIGROMETRICO
Relatore: Prof. Francesco AMIGONI
Tesi di Laurea Magistrale di:
Antonio CAPUTO matr. 755449
Anno Accademico 2013-2014
2013
1
2
SOMMARIO
Il concetto di intelligenza ambientale descrive lo scenario in cui l’uomo ha a disposizione intorno a sé
dispositivi tecnologici con capacità computazionali e di connessione in rete, che lo supportano nella vita
quotidiana svolgendo numerose attività in modo non invadente.
Uno dei paradigmi che ha svolto e continua a svolgere un ruolo importante nell’ambito
dell’automatizzazione degli edifici riguarda l’utilizzo di sistemi distribuiti contrapposto all’approccio
centralizzato: ovvero la ripartizione dell’elaborazione e delle azioni tra più dispositivi, piuttosto che
all’interno di un unico dispositivo. In particolare, i sistemi denominati multiagente (MAS)
rappresentano un importante categoria di sistemi distribuiti che sono impiegati in questo contesto.
Lo scopo di questa tesi è progettare e implementare un sistema multiagente che gestisca all’interno di
un edificio tutti gli aspetti di un particolare settore del comfort ambientale: il comfort termoigrometrico.
Il sistema deve tenere conto di ogni tipo di parametro che riguardi le condizioni di temperatura e
umidità nelle varie stanze dell’edificio, e gestire i dispositivi che le controllano in modo da ottimizzare le
prestazioni.
Per descrivere il problema di calcolare il comportamento ottimo del sistema in un dato istante di tempo
è stata adottata la formulazione DCOP (Distributed Constraint Optimization Problem). Per quanto
riguarda il problema complessivo costituito da una successione di singoli problemi DCOP che
determinano il comportamento del sistema lungo un dato intervallo temporale, sono state poi definite
diverse formulazioni, tra cui quella come successione di DCOP singoli e come DDCOP (Dynamic
DCOP, in cui la soluzione di un DCOP tiene conto di quella del DCOP che lo precede nella sequenza).
Per risolvere i DCOP singoli sono stati utilizzati algoritmi standard, mentre per i DDCOP è stato
esteso l’algoritmo ADOPT implementato in Java.
Infine sono state effettuate varie serie di test che hanno valutato il comportamento del sistema
prendendo in considerazione i singoli DCOP e la serie di DCOP nelle sue varie formulazioni. Sono
stati ottenuti risultati relativi a simulazioni del funzionamento del sistema su istanze realistiche sotto le
ipotesi di mondo deterministico o stocastico, a un confronto tra i tempi di risoluzione dei diversi
algoritmi di FRODO e all’efficacia della modifica implementata all’algoritmo ADOPT.
3
4
INDICE
Sommario ..................................................................................................................................... 3
Indice ........................................................................................................................................... 5
1 Introduzione ............................................................................................................................. 7
2 Stato dell’arte dei sistemi di controllo del comfort termoigrometrico ................................... 10
2.1 Caratteristiche generali ......................................................................................................................... 10
2.2 Settore commerciale ............................................................................................................................. 11
2.3 Settore scientifico ................................................................................................................................. 15
2.3.1 Controllo ottimo, predittivo e adattativo ........................................................................ 15
2.3.2 Intelligenza computazionale ............................................................................................... 15
2.3.3 Sistemi di controllo multiagente ....................................................................................... 16
2.3.3.1 Categorie di sistemi multiagente ....................................................................... 17
2.3.4 Ambient Intelligence .......................................................................................................... 18
2.3.5 Esempi di sistemi di controllo ........................................................................................... 20
2.3.5.1 Hierarchical Fuzzy-Genetic Multi-Agent Architecture for Intelligent Buildings ..... 20
2.3.5.2 Termostato progettato e implementato seguendo un approccio multiagente ......... 22
2.3.5.3 Un sistema multiagente per controllare agenti domestici ...................................... 23
2.3.5.4 Un sistema multiagente per controllare edifici intelligenti .................................... 24
2.3.5.5 MAVHome ...................................................................................................... 24
2.3.5.6 Neural Network House .............................................................................................. 25
3 Impostazione e formulazione del problema ......................................................................... 27
3.1 Parametri significativi ........................................................................................................................ 28
3.1.1. Informazioni sul passato .................................................................................................. 28
3.1.2. Previsioni del futuro ......................................................................................................... 29
3.2 Misure di valutazione del comfort ................................................................................................... 32
3.3 DCOP: Distributed Constraint Optimization Problem ............................................................... 33
3.4 Impostazione del problema .............................................................................................................. 34
3.5 Formulazione del problema come DCOP ..................................................................................... 37
3.6 Formulazione del problema come successione di DCOP o DDCOP ...................................... 41
3.6.1 DCOP unico con variabili vettoriali................................................................................. 41
3.6.2 Successione di DCOP ........................................................................................................ 41
3.6.3 DDCOP ............................................................................................................................... 44
4 Estensione del framework FRODO ..................................................................................... 46
4.1 FRODO .............................................................................................................................................. 46
4.1.1 Architettura di FRODO ..................................................................................................... 51
4.2 ADOPT .............................................................................................................................................. 52
4.2.1 Funzionamento di ADOPT .................................... .......................................................... 53
4.3 Estensione di ADOPT per problemi DDCOP............................................................................. 53
4.3.1 Reuse-Bounds .................................... ................................................................................. 54
4.3.2 Implementazione delle modifiche...................................................................................... 54
4.4 Altri algoritmi di risoluzione ............................................................................................................ 55
5
4.4.1 DPOP .................................... .............................................................................................. 55
4.4.2 MGM ...................................... ............................................................................................. 56
4.4.3 MGM-2 .................................. ............................................................................................. 56
4.4.4 SynchBB ............................................................................................................................... 57
5 Realizzazioni sperimentali e valutazioni ................................................................................ 58
5.1 Struttura degli edifici ......................................................................................................................... 59
5.2 Generatore di problemi .................................................................................................................... 62
5.2.1 Mondo deterministico ......................................................................................................... 65
5.2.2 Mondo stocastico ................................................................................................................. 65
5.3 Test sulla consistenza ........................................................................................................................ 66
5.3.1 Test sui DCOP ..................................................................................................................... 66
5.3.2 Test sulle serie di DCOP .................................................................................................... 74
5.4 Test realistici su mondo deterministico........................................................................................... 81
5.4.1 Edificio A............................................................................................................................... 81
5.4.2 Edificio B............................................................................................................................... 85
5.5 Test realistici su mondo stocastico................................................................................................... 89
5.5.1 Edificio A............................................................................................................................... 89
5.5.2 Edificio B............................................................................................................................... 92
5.6 Test sul funzionamento interno........................................................................................................ 96
5.6.1 Confronto tra gli algoritmi di risoluzione......................................................................... 96
5.6.2 Confronto tra serie di DCOP e DDCOP......................................................................... 98
6 Conclusioni e sviluppi futuri ................................................................................................ 100
Bibliografia .............................................................................................................................. 102
A Esempi di istanze DCOP .................................................................................................... 105
A.1 Problema completo – Edificio A ................................................................................................. 105
A.2 Problema completo – Edificio B ................................................................................................. 109
A.3 Problema ridotto – Edificio A ..................................................................................................... 113
6
CAPITOLO 1
INTRODUZIONE
Il concetto di intelligenza ambientale descrive lo scenario in cui l’uomo ha a disposizione intorno a sé
dispositivi tecnologici con capacità computazionali e di connessione in rete, che lo supportano nella vita
quotidiana svolgendo numerose attività in modo non invadente. Nel corso degli ultimi anni la ricerca
nel campo dell’intelligenza ambientale ha avuto una crescita straordinaria, grazie agli enormi progressi
ottenuti soprattutto nei campi delle reti di sensori, del calcolo distribuito e dell’intelligenza artificiale [1].
Anche se le idee alla base dell’intelligenza ambientale non sono state sviluppate recentemente, per
poterle implementare nella realtà è stato necessario attendere che il progresso tecnologico rendesse
disponibili i sistemi e le tecnologie dotati degli alti requisiti che queste idee richiedevano. Il livello
tecnologico odierno permette una vasta scelta di soluzioni e dispositivi caratterizzati da alta sensibilità,
trasparenza, intelligenza, responsività e interconnessione, rendendo lo sviluppo di soluzioni di
intelligenza ambientale un settore florido sia nel campo della ricerca scientifica che in quello
commerciale [3].
La corsa verso la progettazione di edifici sempre più automatizzati e confortevoli appare inoltre un
processo difficilmente destinato ad avere fine: edifici dotati, ad esempio di termostati automatici o
controllo dell’illuminazione basati su sensori di movimento, oggi diffusi ovunque a prezzi modesti,
sarebbero stati considerati “edifici intelligenti” non più di alcuni decenni fa [1], e l’asticella del livello
tecnologico e della varietà di soluzioni disponibili si alza sempre di più.
Uno dei paradigmi che ha svolto e continua a svolgere un ruolo importante nell’ambito
dell’automatizzazione degli edifici riguarda l’utilizzo di sistemi distribuiti contrapposto all’approccio
centralizzato: ovvero la ripartizione dell’elaborazione e delle azioni tra più dispositivi, piuttosto che
all’interno di un unico dispositivo. In particolare, i sistemi denominati multiagente (MAS)
rappresentano un importante categoria di sistemi distribuiti; un MAS è composto da un insieme di
agenti che agiscono sull’ambiente in maniera autonoma, e possono interagire tra loro, per esempio per
raggiungere un obiettivo comune. Questo approccio si rende particolarmente interessante per
controllare i dispositivi situati all’interno di un unico edificio [7], che possono essere notevolmente
diversificati tra loro, ma che devono generalmente coordinarsi per ottenere degli obiettivi ben precisi e
spesso convergenti.
Lo scopo di questa tesi è progettare e implementare un sistema multiagente che gestisca all’interno di
un edificio tutti gli aspetti di un particolare settore del comfort ambientale: il comfort termoigrometrico.
Il sistema deve tenere conto di ogni tipo di parametro che riguardi le condizioni di temperatura e
umidità nelle varie stanze dell’edificio, e gestire i dispositivi che le controllano, tra cui impianti di
riscaldamento, ventilazione e umidificazione. Il sistema deve agire lungo un arco temporale
significativo, ad esempio quello di 24 ore, agendo sui dispositivi dell’edificio ad istanti di tempo
prefissati e modificando dinamicamente i suoi obiettivi e il suo comportamento a seconda delle
variazioni che le condizioni ambientali possono subire tra un intervento e l’altro del sistema e dei
desideri, comunicati esplicitamente o meno, degli utenti.
7
Per determinare il comportamento del sistema in un dato istante di tempo è stata adottata la
formulazione DCOP (Distributed Constraint Optimization Problem) [2], nella quale i dispositivi
dell’edificio svolgono il ruolo di agenti del sistema, e la soluzione ottima corrisponde alla combinazione
degli stati assunti dai dispositivi che garantisce la minor potenza da essi consumata unitamente alle
migliori condizioni di comfort raggiunte all’interno dell’edificio.
Il problema complessivo, relativo alla gestione del comfort termoigrometrico lungo un arco di tempo
(per esempio 24 ore), è costituito da una successione di singoli problemi DCOP, di cui sono fornite
diverse formulazioni. Tra di esse, è stata maggiormente utilizzata la formulazione del problema
complessivo come una successione di DCOP risolti singolarmente, e per implementarla è stato
sviluppato un software per simulare le condizioni dell’edificio nel corso del tempo a cui sono applicati i
risultati dei DCOP nei relativi istanti di tempo. Inoltre è stata definita la formulazione del problema
come Dynamic DCOP (DDCOP) [38], nella quale i singoli DCOP non sono più risolti separatamente,
ma sono processati come un unico problema, evitando ad esempio di risolvere due volte lo stesso
sotto-problema, se questo non muta nel corso del tempo.
I DCOP sono stati implementati per essere risolti dal framework FRODO [36], che simula un ambiente
multiagente distribuito in una macchina virtuale Java. E’ stato sviluppato un generatore software con lo
scopo di generare singoli DCOP o serie di DCOP a partire dal modello di un edificio e dagli obiettivi
specificati dall’utente. Per risolvere i DDCOP è stato esteso l’algoritmo ADOPT [37] implementato in
Java all’interno di FRODO perché potesse gestire questo tipo di problemi attraverso la procedura
Reuse-Bounds [38].
Sono stati effettuati svariati test sui modelli e sui sistemi software implementati in questo lavoro, in
particolare per valutare la loro consistenza, complessità ed efficacia. Sono state risolte alcune istanze
realistiche del problema basate su edifici verosimili, per valutare il comportamento del sistema. Sono
stati inoltre effettuati alcuni test per valutare il comportamento delle componenti interne dei software
implementati.
La tesi è strutturata nel modo seguente.
Nel Capitolo 2 si mostra una panoramica sullo stato dell’arte dei metodi di controllo termoigrometrico
degli edifici, sia tra i dispositivi in commercio, sia per quanto riguarda la ricerca scientifica, e si
descrivono le origini e l’evoluzione dei sistemi che implementano tali caratteristiche.
Nel Capitolo 3 si descrive l’impostazione del problema riguardante la progettazione del sistema di
gestione del comfort termoigrometrico di un edificio, in particolare si presentano la formulazione del
problema singolo come DCOP, e le varie formulazioni del problema complessivo: la formulazione
basata sulle variabili strutturate come una successioni di valori nel tempo, quella basata sulla successione
di DCOP e quella basata sul DDCOP.
Nel Capitolo 4 si illustra la struttura del framework FRODO, il funzionamento degli algoritmi di
risoluzione utilizzati in questo lavoro e il funzionamento della modifica di ADOPT implementata nella
tesi per risolvere problemi DDCOP.
Nel Capitolo 5 si descrive il funzionamento generale del software che genera i DCOP e di quello che
simula l’edificio e si mostrano i risultati delle varie categorie di test effettuate, insieme a considerazioni
8
sul comportamento, sull’efficacia e sulla complessità del sistema sotto ipotesi di mondo sia
deterministico che stocastico.
Nel Capitolo 6 sono riassunti gli obiettivi di questa tesi, le valutazioni del lavoro svolto e le prospettive
future.
In Appendice A sono mostrati degli esempi di istanze DCOP formulate secondo i modelli presentati.
9
CAPITOLO 2
STATO DELL’ARTE DEI SISTEMI DI CONTROLLO DEL
COMFORT TERMOIGROMETRICO
Lo scopo di questo capitolo è fornire una rassegna dei sistemi più diffusi sul mercato e in ambito
accademico che si occupano di gestire in modo automatizzato o semiautomatizzato il comfort termico
degli edifici e una sintesi della storia e dello sviluppo di questi sistemi, a livello scientifico, nel corso del
tempo. Nella prima parte del documento si dà una definizione del concetto di comfort
termoigrometrico; nella seconda si descrivono i sistemi commerciali; nella terza si approfondiscono la
storia e lo stato dell’arte del controllo termoigrometrico, insieme con vari esempi delle più interessanti e
recenti ricerche svolte in proposito, soprattutto nel campo dei sistemi multiagente.
2.1. CARATTERISTICHE GENERALI
Il comfort termoigrometrico rientra nella definizione di comfort ambientale, che indica la condizione di
benessere di un essere umano in relazione a temperatura, umidità dell’aria, livelli di rumorosità e
luminosità rilevati all’interno dell’ambiente in cui si trova.
In particolare la valutazione del livello di comfort termoigrometrico (o thermal comfort) è influenzata dai
valori di:


Temperatura dell’aria (°C).
Umidità relativa dell’aria interna (%): il rapporto tra la quantità di vapore contenuto in una
massa d'aria e la quantità massima che ne può contenere quella massa d'aria nelle stesse
condizioni di temperatura e pressione.
La norma UNI EN ISO 7730 individua due indici che stabiliscono degli standard per valutare il
benessere termoigrometrico, che tengono conto delle variabili sopra citate e del funzionamento del
corpo umano:


PMV (predicted mean vote): è un indice di valutazione dello stato di benessere di un individuo e
tiene conto di variabili soggettive e ambientali; si tratta di una funzione matematica che dà come
risultato un valore numerico su una scala con range -3 (indice di sensazione di troppo freddo) a
+3 (indice di sensazione di troppo caldo), dove lo zero rappresenta lo stato di benessere
termico.
PPV (predicted percentage of dissatisfied): rappresenta la percentuale prevista di individui insoddisfatti
di una particolare situazione ambientale.
Il modello alla base della creazione di questi due indici è stato sviluppato dal fisico danese P.O. Fanger
che ha utilizzato equazioni di bilancio termico e studi empirici sulla temperatura percepita dai recettori
termici degli individui. La “zona di comfort” che rappresenta le condizioni ambientali di benessere
10
percepite mediamente dagli abitanti di un ambiente al variare di temperatura e umidità, può essere
rappresentata come in Fig. 2.1.
Fig. 2.1 – Due rappresentazioni del comfort termico secondo il metodo PMV/PPV
2.2. SETTORE COMMERCIALE
Attualmente i sistemi commerciali di controllo termoigrometrico all’avanguardia sono principalmente
influenzati dalle tecniche di controllo passivo degli edifici, quindi dall’architettura e dalla scelta dei
materiali degli edifici, e inseguono come obiettivo primario la riduzione dei consumi energetici (per
esempio nel campo delle architetture bioclimatiche, che agiscono su posizionamento e conformazione
degli edifici per sfruttare riscaldamento, raffreddamento e correnti naturali). Dati i costi generalmente
alti di costruzione e altri svantaggi, essi sono comunque abbinati a sistemi di controllo attivo, orientati il
più possibile alla semplicità di utilizzo: cronotermostati on-off, sistemi di controllo ottimo o predittivo
che agiscono tramite controllori PID. Questi sistemi gestiscono separatamente diversi aspetti del
comfort come livello di temperatura e di umidità, e le diverse variabili interagiscono tra loro spesso con
l’unico obiettivo del risparmio energetico. I sistemi più complessi ed elaborati sono rivolti al settore
industriale, mentre edifici commerciali o del settore alberghiero utilizzano sistemi mediamente più
complessi e automatizzati rispetto a quelli residenziali.
Di seguito sono sinteticamente descritte alcune delle soluzioni commerciali più diffuse che riguardano il
controllo domestico del comfort termoigrometrico, tra quelle che offrono maggiore automatizzazione
ed adattabilità di comportamento.
11
Termostato Nest (Fig. 2.2)
[https://nest.com]







Progettato da Tony Fadell, a capo del gruppo che ha progettato il primo iPod.
Termostato programmabile, pone semplici domande agli utenti durante l’installazione per
stabilire uno schedule settimanale.
Trova la configurazione e stabilisce i setpoint ottimali durante i primi giorni di funzionamento,
in cui gli utenti comunicano le condizioni desiderate tramite semplici modifiche su/giù dei
regolatori.
E’ in grado di rilevare e valutare le attività degli abitanti tramite sensori di movimento e
modificare la propria attività (modalità away quando non rivela attività per un paio d’ore).
Sistema di learning per apprendere autonomamente eventuali modifiche nella programmazione
delle attività degli abitanti.
Eventuali modifiche singole per eventi isolati non comportano modifiche a lungo termine del
comportamento e della programmazione.
Suggerisce agli utenti quando piccole modifiche trascurabili per il comfort potrebbero portare a
un risparmio energetico.
Fig. 2.2 – Termostato Nest
Termostato CoastalGreenAir
[http://coastalgreenair.com/energy-savings-systems/programmable-motion-detected-thermostat/]




Utilizza sensori di movimento per rilevare presenza e assenza degli abitanti e risparmiare
energia.
Può essere collegato a un rilevatore di apertura porte per modificare di conseguenza gli obiettivi
di comfort.
Se non rileva movimenti nell’abitazione per un intervallo di 12 ore entra automaticamente in
unoccupied mode puntando al massimo risparmio energetico e mantenendo l’edificio entro
temperature limite.
Presenta interfacce e modalità di utilizzo distinte tra proprietari e inquilini dell’edificio.
12
Smart Temp
[http://www.thermostat.com.au/]




Smart Temp è una compagnia specializzata nella produzione di sistemi di riscaldamento e aria
condizionata all'avanguardia.
I termostati Smart Temp sono dotati di un’interfaccia touch per regolare il comfort e stabilire
degli schedule, ad esempio giornalieri o settimanali, delle condizioni ambientali desiderate.
Il controllo termico può essere gestito in modo avanzato: cioè l’edificio viene diviso in zone che
possono corrispondere a singole stanze o a singole pareti (quando un controllore è posto su
ognuna delle pareti), ogni zona può essere controllata indipendentemente e il sistema si occupa
di coordinare le temperature desiderate nelle varie zone.
Occupancy module: dispositivo per hotel e simili, utilizza sensori che rilevano la presenza degli
abitanti e attivano di conseguenza i dispositivi che controllano il comfort, come termostati, luci
ed elettrodomestici.
Loxone (Fig. 2.3)
[http://www.loxone.com/enuk/smart-home/heating.html]





Controlla e gestisce il riscaldamento/raffreddamento delle varie stanze indipendentemente.
Self-learning heating control: l'utente decide la configurazione termica per le varie stanze e nel
giro di 2-3 settimane il sistema impara e perfeziona la gestione dei tempi di attivazione per far sì
che gli abitanti abbiano le condizioni desiderate senza tempi di attesa.
Minimizza autonomamente gli sprechi energetici.
Sistema controllato tramite applicazioni da dispositivi portatili.
Miniserver domestico, che oltre alla temperatura può controllare apertura di tende e persiane,
allarmi, sveglia e altro.
Fig. 2.3 – Interfaccia del sistema di controllo termico Loxone
13
KNX [22]





Produce sistemi per l’automazione di edifici residenziali e commerciali.
Utilizza l’ABB i-bus KNX intelligent building control system basato su bus, per puntare all’obiettivo
del massimo risparmio energetico.
Controlla illuminazione, ventilazione, ombreggiatura, temperatura, aria condizionata: i diversi
sistemi comunicano tra loro tramite un’architettura a bus.
Il sistema riceve come input: dati meteorologici da weather station, informazioni sull’ambiente
circostante da rilevatori di presenza, sensori di movimento, sensori di illuminazione,
informazioni sulla temperatura desiderata dagli abitanti da termostato e rilevatore di qualità
dell'aria.
Tutti i parametri del sistema possono essere visualizzati, analizzati e modificati tramite una
interfaccia web.
Umidificatori/Deumidificatori
I dispositivi di gestione dell’umidità più diffusi agiscono spesso separatamente da quelli che controllano
la temperatura; oppure interagiscono con questi con lo scopo di ridurre i consumi ottenendo le stesse
condizioni di comfort ma utilizzando, tra le diverse scelte, la risorsa che consuma meno energia.
Controllo deumidificatore Ebac Smart Control
[http://www.ebac.com/dehumidifiers-smart-control.php]




E’ un controllore intelligente per deumidificatori completamente autonomo.
Apprende informazioni dallo stile di vita degli abitanti, dal tempo atmosferico e dal clima
dell’abitazione.
E’ programmato per distinguere le condizioni di umidità richieste durante le varie attività svolte
dagli abitanti dell’edificio e apprende automaticamente gli orari a cui sono abitualmente
eseguite.
E’ presentato come 3 volte più efficiente dei deumidificatori a contollo manuale.
14
2.3. SETTORE SCIENTIFICO
Fin dall’inizio l’obiettivo principale dei sistemi di controllo degli edifici è stata la minimizzazione dei
consumi energetici [16]. I primi termostati usavano un tipo di controllo chiamato bang-bang o on-off,
che sfrutta il meccanismo dell’isteresi per mantenere la temperatura ambientale entro determinati limiti;
ma frequenti problemi nella calibrazione della temperatura desiderata e una gestione non ottimale dei
consumi portarono molto presto all’utilizzo di controllori PID. Questi controllori migliorarono la
situazione, ma piccole variazioni nei guadagni dei controllori potevano rendere i sistemi instabili, perciò,
per ottenere maggiore stabilità nel controllo, si è passati a tecniche di controllo ottimo, predittivo o
adattativo.
2.3.1. CONTROLLO OTTIMO, PREDITTIVO E ADATTATIVO
Nel secolo scorso sono state svolte importanti ricerche nel campo del controllo ottimo [17, 18] e
predittivo [19] nel corso degli anni ’80 e ‘90 dello scorso secolo [8], a cui non seguirono però
applicazioni in campo industriale. Queste tipologie di controllori hanno bisogno di creare un modello
dell’edificio a cui sono applicate, e nel controllo predittivo questo modello include le previsioni degli
stati, delle attività e dei disturbi futuri del sistema. I modelli di comportamento termico di un edificio
hanno caratteristiche non lineari e possono variare considerevolmente a seconda dei casi specifici, e nel
corso del tempo. Un esempio di controllo predittivo è dato dal lavoro in [10], in cui si utilizzano
informazioni fornite da sensori di temperatura e umidità esterne, per gestire al meglio gli attuatori che
regolano il comfort termoigrometrico dell’abitazione.
I controllori adattativi hanno l’abilità di autoregolarsi e adattarsi alle variazioni climatiche dei diversi
edifici: le tecniche da essi più utilizzate sono il controllo adattativo fuzzy e i metodi di stima dei
parametri come la recursive least-square estimation, che hanno nella non-linearità la loro maggiore
limitazione.
In generale questi sistemi di controllo presentano alcuni inconvenienti, come il fatto di non essere userfriendly (l’utente non partecipa alla configurazione del controllo climatico), il bisogno di un modello
dell’edificio con parametri stimati in tempo reale che possono dare luogo a instabilità e la mancanza di
supporto a tecniche di apprendimento automatico.
2.3.2. INTELLIGENZA COMPUTAZIONALE
Negli anni ‘90 del secolo scorso inizia l’applicazione di metodi di intelligenza computazionale [8] ai
sistemi di controllo degli edifici, sia con tecniche di intelligenza artificiale che con l’utilizzo di algoritmi
evolutivi. L’integrazione di reti neurali, logica fuzzy e algoritmi evolutivi inizia ad essere applicata in
questo campo.
15
I risultati derivanti dall’utilizzo di tecniche fuzzy applicate ai Building Intelligent Energy Management Systems
(BIEMS), con gli obiettivi di risparmio energetico e di raggiungimento delle condizioni di comfort, e
dall’utilizzo di reti neurali per il controllo dell’Heating Ventilation and Air Conditioning (HVAC) risultano
superiori a quelli ottenuti con le tecniche di controllo classiche. Queste tecniche non hanno bisogno di
un modello matematico dell’ambiente, e il coinvolgimento degli utenti inizia a diventare parte integrante
della definizione delle condizioni di comfort. Tecniche adattative come gli algoritmi genetici [20] sono
utilizzate per ottimizzare i controllori fuzzy.
Tecniche neuro-fuzzy, in cui sistemi di reti neurali vengono utilizzati su tecnologia fuzzy, come il
sistema ANFIS [24] sono stati impiegati per problemi di gestione energetica e di adattabilità degli
edifici.
I controllori fuzzy possono essere combinati ai controllori closed-loop nei controllori fuzzy P [25, 26]: le
misure del processo vengono usate come input del sistema fuzzy e il suo output stabilisce il
comportamento degli attuatori del sistema.
Altri tipi di controllori come i fuzzy PID controller, gli illuminance controller e gli adaptive fuzzy PID controller
[27] sono utilizzati per controllare vari aspetti dell’edificio come l’illuminazione, mentre specificamente
nel controllo termico e nei sistemi che utilizzano il riscaldamento idronico (in cui cioè l’acqua viene
utilizzata come termovettore per ottenere sia caldo che freddo) sono diffusi i neural network controller
(NNC) [28, 29] diretti, che stabiliscono i vari pesi sinaptici della rete neurale con l’obiettivo di
minimizzare una funzione di costo. Gli input e gli output di questi neural network controller possono
variare a seconda dell’applicazione: ad esempio, in [28] gli input sono costituiti dai valori della
temperatura e dalle quantità delle masse d’acqua presenti in alcune zone dell’edificio, e gli output dai
valori assunti da alcuni dispositivi che controllano il riscaldamento idronico.
2.3.3. SISTEMI DI CONTROLLO MULTIAGENTE
I sistemi in cui il controllo non è gestito da un unico controllore, ma da un insieme di controllori che
devono coordinarsi e agire simultaneamente per il raggiungimento degli obiettivi del sistema, sono
chiamati Multi-Agent Control Systems (MACS) [7, 8, 9, 13, 15].
I sistemi multiagente (Fig. 2.4) sono caratterizzati da una divisione dei compiti e degli obiettivi:
generalmente ogni agente ha un sotto-obiettivo o deve risolvere un sotto-problema, interagisce con una
parte dell’ambiente, deve essere in grado di comunicare con gli altri agenti, e spesso, ma non sempre,
con un coordinatore che regola le attività dei vari agenti e stabilisce i sotto-obiettivi per arrivare a
raggiungere l’obiettivo finale.
Nel campo del controllo degli edifici l’approccio multiagente è stato utilizzato principalmente per
ovviare al problema della scarsa partecipazione dell’utente nei sistemi che minimizzano una funzione di
controllo come nel caso delle reti neurali, e che quindi offrono inevitabilmente qualche difetto nel
grado di comfort percepito. I sistemi di controllo basati sul comportamento (behavior-based systems) [21]
16
combinati con tecniche di intelligenza computazionale, sostituiscono i modelli teorici con modelli reali:
il behavioral system è un controllore fuzzy in cui un algoritmo genetico regola la knowledge basis e la
membership function. In [14] gli autori hanno sviluppato un sistema multiagente basato su controllori e
regole fuzzy e algoritmi genetici, approfondito nella Sezione 2.3.5.1.
2.3.3.1. CATEGORIE DI SISTEMI MULTIAGENTE
I sistemi multiagente possono essere suddivisi in varie categorie ortogonali tra loro, anche se molto
spesso queste vanno a sovrapporsi all’interno di una applicazione specifica. Le principali tipologie di
sistemi multiagente che vengono generalmente definite sono le seguenti:

Complessità del controllo: I sistemi multiagente che non dispongono di una rappresentazione
dell’ambiente tale per cui possano elaborare dei ragionamenti, ma agiscono unicamente
reagendo a particolari stimoli dell’ambiente, sono detti reattivi. Al contrario, i sistemi che
dispongono di un modello e che formulano ragionamenti sono detti cognitivi. Questo modello
può essere predefinito, o stabilito e modificato dall’utente, oppure può essere costruito dal
sistema stesso, tipicamente attraverso tecniche di apprendimento automatico.
Fig. 2.4: Schema generale di un sistema multiagente per il controllo di parametri ambientali
17

Architettura del controllore: I sistemi multiagente in cui le decisioni sulle azioni dei singoli
agenti vengono prese all’interno di una singola unità sono detti centralizzati. Invece i sistemi in
cui non esiste tale unità, e le decisioni vengono prese di volta in volta dagli agenti interessati,
dopo opportune attività di coordinamento e negoziazione, sono detti distribuiti.
In [30] sono effettuate altre interessanti distinzioni tra categorie di sistemi multiagente:


Natura del comportamento: Un’ulteriore distinzione può essere definita per quanto riguarda il
comportamento e la natura delle azioni effettuate dal sistema: nel caso il sistema abbia degli
scopi predefiniti e cerchi attivamente di realizzarli, si parla di comportamento teleonomico, mentre se
le azioni sono legate esclusivamente agli stimoli provenienti dall’ambiente, i sistemi sono detti a
comportamento riflesso.
Interazioni tra gli agenti: In [30] possiamo trovare una suddivisione tra tre categorie di sistemi
multiagente (non necessariamente in ambito informatico) in base al tipo di interazioni che
hanno luogo tra gli agenti del sistema. Nei sistemi NI (No direct Interactions), ogni agente osserva
il comportamento degli altri agenti ed eventualmente modifica di conseguenza il proprio, ma
non interagisce direttamente con essi; i sistemi SI (Simple Interactive) prevedono che il
comportamento degli agenti abbia un’influenza limitata su quello dei loro vicini, mentre nei
sistemi CI (Complex Interactive) le azioni svolte dagli agenti influiscono drasticamente sul
comportamento degli altri.
Il sistema progettato e implementato in questa tesi si colloca nell’ambito dei sistemi multiagente. In
particolare il sistema di gestione del comfort termo igrometrico descritto può essere considerato un
sistema multiagente cognitivo ad architettura distribuita.
2.3.4. AMBIENT INTELLIGENCE
Nell’ambito dell’ambient intelligence, e in particolare delle smart home [1, 2, 3], le ricerche in corso
mirano a progettare e realizzare delle abitazioni sempre più al servizio degli abitanti, in grado di
prevedere le loro attività, anticipare i loro bisogni e ragionare automaticamente attraverso diversi tipi di
tecnologia interconnessa. L’attenzione per quanto riguarda il comfort termoigrometrico è rivolta
soprattutto alla rilevazione e alla previsione della presenza e delle attività degli abitanti, che permettono
ai sistemi di decision making di adattare e modificare le loro attività in modo autonomo, come succede
ad esempio nei progetti MavHome [5, 11, 12] e Neural Network House [6], che utilizzano algoritmi
predittivi, programmazione dinamica e reti neurali.
Nella Tabella 2.1 sono confrontate la varie tecniche di controllo di diversi aspetti degli edifici e sono
indicati i problemi e gli obiettivi a cui le tecniche sono di solito rivolte, in campo sperimentale e
commerciale.
18
Tab. 2.1 : Tabella comparativa dei sistemi di controllo del comfort domestico [8]
19
2.3.5. ESEMPI DI SISTEMI DI CONTROLLO
2.3.5.1.
HIERARCHICAL
FUZZY-GENETIC
ARCHITECTURE FOR INTELLIGENT BUILDINGS
MULTI-AGENT
Nel progetto illustrato in [14] viene utilizzato un approccio innovativo nel campo degli intelligent building,
basato su un architettura multiagente basata su un sistema double hierarchical fuzzy-genetic, composta da
due livelli di controllo: il primo agisce in modo reattivo e restituisce delle semplici regole di
comportamento del sistema, che vengono poi coordinate da un sistema fuzzy che agisce secondo gli
obiettivi di alto livello.
Le condizioni ambientali di un edificio sono soggette a variazioni continue e le preferenze degli utenti
possono differenziarsi sostanzialmente a seconda dello specifico utente, e nel corso del tempo: per
risolvere questi problemi si può ricorrere a tecniche di learning adattative e interattive. La logica fuzzy
offre un modo valido di rappresentare informazioni incerte o imprecise, e aumenta la robustezza del
sistema in cui viene adottata, nei confronti di disturbi e instabilità. Per stabilire le regole fuzzy di un
sistema, si possono utilizzare tecniche di apprendimento tramite algoritmi genetici, che però possono
non essere adatti ad ambienti dinamici e real-time, in cui lo spazio del problema non è completamente
definito dall’inizio.
Il sistema affronta il problema di individuare un metodo di apprendimento automatico adatto al
problema degli intelligent building, seguendo un approccio intelligent embedded-agent basato su sistema
double hierarchical fuzzy-genetic. Il sistema appartiene alla categoria delle behavior-based control
architectures: per evolversi nel tempo e apprendere regole di comportamento, non ha bisogno di una
simulazione a priori dell’ambiente, né dell’intervento diretto di utenti umani nel sistema di specifica
delle regole. L’edificio è diviso in zone: in ogni zona è posizionato un embedded-agent, a cui si
connettono tramite una rete LonWorks i sensori e gli attuatori collegati a quella zona; gli agenti
comunicano tra loro tramite una rete IP.
L’Hierarchical Fuzzy-Logic Controller (Fig. 2.5) si occupa del coordinamento tra i vari “agent-behaviour”:
fornisce un output che garantisce flessibilità: le diverse parti che lo compongono e i sotto-obiettivi
possono essere modificati e riconfigurati separatamente.
Obiettivi come il risparmio energetico sono perlopiù statici nel tempo (possono essere visti come
“vincoli” di alto livello che influenzano il comportamento degli agenti a prescindere dalle particolari
regole adottate), mentre il behaviour che definisce le regole che gestiscono il comfort è stabilito dai dati
ricavati da tecniche di learning basate sulle modifiche di comportamento degli abitanti; il controllore
assegna valori alla reinforcement function a seconda di quanto le azioni intraprese hanno soddisfatto gli
utenti (in base al fatto che questi modifichino o meno le configurazioni dell’ambiente).
Valori come temperatura e illuminazione della stanza vengono fuzzyficati da semplici membership
function delle variabili input, e lo stesso vale per i valori di output dei controllori, che poi vengono
defuzzyficati e ricevuti dagli attuatori. I valori fuzzy sono usati come input nelle context rules stabilite dal
planner di alto livello sulla base dell'obiettivo corrente dell'agente, e sono queste regole che vengono poi
20
Fig. 2.5 : Il sistema di controllo hierarchical-fuzzy [14]
modificate, aggiunte o rimosse a seconda dello stato dell’ambiente e dell’obiettivo del sistema, e che
definiscono quindi i vari comportamenti del sistema.
Per l’apprendimento e l’adattamento della rule base dinamica agli effettivi bisogni e alle richieste degli
abitanti dell’edificio, il sistema utilizza un approccio basato su algoritmi genetici. Viene definito online
learning l’apprendimento basato sull’interazione con l’ambiente e gli utenti, in contrasto all’offline
learning, che avviene internamente al sistema sulla base di dati già disponibili.
Ogni fuzzy logic controller riceve input dai sensori dell’abitazione, ha una propria rule base e delle
membership function, e invia il risultato della combinazione degli input al coordinator, il controllore centrale
che poi controlla gli attuatori. Quando nel sistema viene rilevato un cambiamento o ci si trova in una
situazione che non corrisponde a uno degli antecedenti di una regola tra quelle memorizzate nella rule
base, il sistema entra in modalità interattiva e aggiunge, toglie o modifica regole a seconda delle
necessità. Le regole sono valutate nell'Experience Value, e quelle in cui il valore di fitness (assegnato dal
sistema a ogni regola, e tanto maggiore quanto più una certa regola è utile a soddisfare l’obiettivo) è
minore, vengono eliminate per fare posto alle migliori.
L’Adaptive Genetic Mechanism è un algoritmo che entra in gioco quando nessuna tra le soluzioni
corrispondenti alle esperienze passate soddisfa le richieste dell’utente. L’AGM produce nuove soluzioni,
evitando quelle insoddisfacenti a priori, finché non ne trova una soddisfacente. La valutazione delle
soluzioni ottenute avviene attraverso un fitness evaluator.
21
2.3.5.2. TERMOSTATO PROGETTATO E IMPLEMENTATO SEGUENDO
UN APPROCCIO MULTIAGENTE
Il sistema presentato in [21] è stato progettato con l’obiettivo di applicare l’approccio dei sistemi
multiagente per realizzare un termostato “intelligente” che gestisca il comfort termico di una singola
stanza.
Il problema complessivo è stato quindi scomposto in sotto-obiettivi che, opportunamente coordinati,
contribuiscono a realizzare l’obiettivo finale del sistema. Ogni sotto-obiettivo è gestito da un agente, qui
chiamato controller-agent: i controller-agent sono i blocchi di base che costituiscono il sistema, e possono
essere rimossi o modificati singolarmente.
Gli obiettivi che il sistema si prefigge riguardano il mantenimento dell’ambiente nella zona comfort
stabilita dai setpoint; la possibilità di programmare gli istanti di tempo in cui deve essere raggiunta una
certa temperatura; la minimizzazione degli sbalzi improvvisi (on/off) del riscaldamento; la capacità di
gestire qualsiasi aspetto del controllo termico senza la necessità di regolazione manuale da parte
dell’utente; il raggiungimento delle temperature desiderate nel più breve tempo possibile e senza
overshooting.
L’approccio multiagente viene preferito ai controllori PID (principalmente perché quest’ultimo è
particolarmente soggetto a sbalzi improvvisi) e al controllo predittivo (per la forte dipendenza dei
parametri di quest’ultimo dalla specifica abitazione).
Ogni sottoproblema definisce un task; questi devono essere coordinati da un coordination system che può
essere centralizzato (il coordinatore decide univocamente quando un task deve essere attivo o inattivo)
o decentralizzato (i singoli agenti che gestiscono i task decidono quando è il momento di attivarsi, ma la
decisione finale spetta comunque al coordinatore).
I meccanismi di coordinamento possono variare: tra le possibilità possono essere utilizzati sistemi di
coordinamento a priorità fissa (ogni task ha un grado di priorità fissato, che stabilisce quando deve agire),
priorità dinamica (la priorità dei task può cambiare a seconda della situazione), “first stays active” (i task
vengono attivati seguendo l’ordine in cui hanno richiesto l’attivazione). Ogni agente riceve input
dall’esterno e dagli altri agenti, trasmette output agli altri agenti, elabora gli output attraverso calculation
functions, e stabilisce se diventare attivo o inattivo tramite activation functions.
Molto importante è il concetto di controller-agency, che viene usato quando si devono eseguire sottoobiettivi complessi, e che rappresenta un insieme di agenti che agiscono per lo stesso obiettivo, così
come sono visti da un agente esterno a essi: un controller-agency è trattato, cioè, come un singolo
agente dai meccanismi di coordinamento, come se avesse singole funzioni di input e output.
I due sottoproblemi principali in cui si suddivide il problema sono rappresentati dal setpoint generation
(che stabilisce i setpoint temporali e le rispettive temperature) e dal tracking controller (che si occupa di
fare sì che il sistema giunga alla temperatura desiderata rispettando i setpoint); quest’ultimo si
scompone nel transient control (che si occupa di grandi cambiamenti nei setpoint) e nel regulator (che
entra in gioco quando i setpoint sono costanti, e sono necessarie piccole regolazioni).
22
2.3.5.3. UN SISTEMA MULTIAGENTE PER CONTROLLARE AMBIENTI
DOMESTICI
Nel progetto [13] è stato implementato un sistema di distribuzione delle risorse termiche in un edificio
utilizzando un sistema multiagente market-based, in cui gli agenti partecipano a un'asta in cui vendono e
comprano aria riscaldata o raffreddata.
La divisione dell’ambiente in zone fa sì che ogni agente risponda alle esigenze di una particolare zona
(che nel caso più comune corrisponde a una singola stanza), in cui esso opera. Ogni agente deve essere
in grado di comunicare facilmente e in breve tempo con gli altri agenti per poter partecipare alle
“compravendite” e deve essere sensibile alle variazioni dell'ambiente per formulare la giusta offerta che
corrisponda alla situazione ambientale della sua zona.
Questo sistema è ritenuto molto vantaggioso rispetto ai classici controllori PID: infatti la temperatura
ottenuta nell’edificio si distribuisce in genere più uniformemente rispetto al caso dell’utilizzo di un
controllore classico.
Gli agenti utilizzano una forma di valuta che viene loro assegnata da un coordinatore centrale, e con cui
formulano offerte per vendere o comprare quantità di aria riscaldata o raffreddata da agenti che
controllano altre zone, a seconda dalla temperatura e delle condizioni ambientali della propria zona. Gli
agenti non conoscono le offerte formulate dagli altri agenti, a meno che non siano rivolte a loro stessi;
un coordinatore centrale gestisce gli scambi, e quando un’offerta va a buon fine, vengono modificate le
aperture delle valvole che regolano il passaggio tra le varie zone.
I problemi principali che le aste sono tenute a risolvere derivano dal fatto che gli utenti umani che
regolano i termostati negli uffici non sono a conoscenza delle risorse limitate degli agenti, della loro
possibile “scarsità di valuta” e della distribuzione della temperatura nell’edificio (cioè, gli utenti
cercheranno di ottenere sempre il massimo per loro stessi, mentre il compito degli agenti è quello di
gestire le risorse per coordinare le varie richieste).
23
2.3.5.4. UN SISTEMA MULTIAGENTE PER CONTROLLARE EDIFICI
INTELLIGENTI
Il sistema multiagente di [23] è stato progettato per controllare la temperatura, l’illuminazione e la
ventilazione in un ufficio, e si basa su un sistema di riconoscimento degli utenti tramite badge, da cui
rileva informazioni sulla presenza delle persone e sulla base di esse compie azioni che modificano
l’ambiente autonomamente. Il sistema è specificamente pensato per ambienti lavorativi, in quanto
l’adozione di un sistema di riconoscimento tramite badge in ambito domestico è una soluzione troppo
invadente.
Gli agenti del sistema sono suddivisi in quattro categorie: Personal Comfort agents: ognuno di essi
corrisponde a una singola persona, memorizza le sue abitudini e gestisce le su preferenze; Room agents:
ognuno di essi gestisce una singola stanza e cerca di soddisfare le richieste degli utenti presenti e nel
contempo di risparmiare il più possibile sui costi; Environmental Parameter agents: ognuno di essi controlla
un singolo aspetto del comfort di una stanza (per esempio, l’illuminazione o la ventilazione), hanno
accesso diretto a sensori e attuatori; e un Badge System agent che tiene traccia della posizione degli utenti e
mantiene un database su di essi.
Questo particolare sistema è in grado di prendere decisioni completamente differenti sulla base
dell’identità degli occupanti dell’edificio: per esempio, se in ufficio entra l’effettivo occupante il sistema
provvederà immediatamente a portare le condizioni ambientali al livello desiderato dall’occupante,
mentre si sarebbe comportato in modo diverso se fosse entrato un estraneo.
2.3.5.5. MAVHOME
L’obiettivo del progetto MavHome [5, 11, 12] è la realizzazione di un’abitazione che agisca come un
agente intelligente. L’architettura generale del sistema presenta quattro livelli di controllo: il decision layer
seleziona le azioni che gli agenti dovranno compiere sulla base delle informazioni in possesso
dell’information layer, che si occupa di immagazzinare e generare conoscenza e informazioni utili; il
communication layer permette la comunicazione di informazioni tra i vari componenti del sistema, mentre
il physical layer gestisce direttamente i dispositivi hardware che eseguono fisicamente le azioni stabilite
nell’edificio.
E’ di particolare interesse la funzione del sistema che permette di prevedere la prossima azione di un
abitante, per poter stabilire dei pattern di azioni da compiere in sequenza che coincidano con i bisogni e
le preferenze degli utenti: queste previsioni sono basate sulle interazioni degli utenti con i dispositivi
dell’abitazione, precedenti all’istante in cui si elabora la previsione: per essere efficaci devono essere
generalmente effettuate in tempo reale. Per generare un modello che indichi la prossime azioni attese
degli abitanti possono essere utilizzati vari metodi, come il sequence matching, il compression-based
predicition, il task-based Markov model, che elaborano la sequenza delle azioni che si verificano in
24
determinati momenti e situazioni, per predire quali eventi si verificheranno in futuro e con quali
probabilità; l’episode discovery che fa uso di tecniche di data mining per ricercare regolarità o eventi
particolari nel database degli avvenimenti passati.
L’algoritmo predittivo Active-LeZi utilizza principi di teoria dell’informazione per processare sequenze
di eventi consecutivi: rappresenta le interazioni abitante-ambiente con catene di Markov di eventi; è
intrinsecamente online per via della compressione dei dati usata. La ripetitività degli eventi dell’edificio
(dispositivi usati dagli abitanti) nel corso del tempo può essere modellizzata con un processo stocastico
stazionario. Per effettuare una predizione, l’algoritmo calcola la probabilità che le attività (rappresentate
da terne di simboli, in cui ogni terna indica il dispositivo che è stato usato, il tipo di interazione che si è
svolta con quel dispositivo, e l’istante di tempo in cui si è svolta) compaiano in una sequenza, e
restituisce come output l’attività che la più alta probabilità di verificarsi in quel momento.
La componente decision-making del sistema permette all’abitazione di automatizzare le funzioni basilari,
sulla base dei dati ottenuti dalle predizioni, per ottimizzare l’utilità e il comfort degli abitanti. Le
decisioni che vengono prese dal sistema si basano il meno possibile sulla semplice ripetizione delle
sequenze di azioni svolte in passato dagli abitanti, ma piuttosto sui risultati che gli utenti vogliono
ottenere eseguendo quelle azioni: dà cioè importanza a quelle variabili che rappresentano l’obiettivo
delle azioni, non alle azioni effettuate per ottenerle (che vengono usate come guida per ottimizzare delle
misure predefinite). Per esempio il fatto che un abitante accenda ogni mattina la luce alla stessa ora, non
impedisce al sistema di anticipare il bisogno di luce dell’utente aprendo le persiane invece che
accendendo la luce, se questa si rivela la scelta più conveniente a parità di risultato ottenuto.
Tecniche di reinforcement learning vengono usate per ottenere una policy che ottimizzi il comfort degli
abitanti: il sistema prende eventuali nuove decisioni ogni volta che cambia lo stato di uno dei dispositivi
della casa. La reward function utilizzata tiene conto in particolare della quantità di interazioni di cui gli
utenti hanno bisogno per ottenere le condizioni desiderate (con l’obiettivo di minimizzare queste
interazioni): cioè, il sistema si comporta bene se gli utenti interagiscono con i dispositivi domestici il
meno possibile, e del consumo energetico. La tecnica utilizzata per stimare i reward delle eventuali
azioni effettuate in futuro è il Q-learning.
2.3.5.6. NEURAL NETWORK HOUSE
L’obiettivo alla base del progetto Neural Network House [6] è di progettare e realizzare un’abitazione in
cui strumenti e dispositivi siano in grado di programmarsi da soli, cioè che apprendano con il tempo le
abitudini e le preferenze degli abitanti, e riescano infine ad anticiparli, in modo da ridurre il numero di
occasioni in cui siano necessari interventi umani nel controllo dell’abitazione, nello specifico per quanto
riguarda riscaldamento dell’aria e dell’acqua, illuminazione e ventilazione. Per ottenere ciò è di primaria
importanza che il sistema sia in grado di prevedere le azioni degli utenti: il sistema, chiamato ACHE
(adaptive control of home environments) (Fig. 2.6) ha l’ulteriore obiettivo del raggiungimento del maggiore
risparmio energetico possibile.
Ogni agente che si occupra della predizione di una specifica variabile, viene chiamato predictor. I
predictor sono implementati per mezzo di una feed-forward neural network con backpropagation, in cui il
25
controllo è suddiviso in due livelli: il setpoint generator si occupa di generare le predizioni vere e proprie,
mentre il device regulator si occupa di tradurre le informazioni a livello dei dispositivi fisici.
Fig. 2.6: Architettura del sistema ACHE [6]
Questa rete neurale apprende da input provenienti dall’ambiente (esempio: un utente modifica la
temperatura dal termostato) e costruisce modelli predittivi che comprendono la predizione di scenari a
lungo termine, in cui il verificarsi di un singolo evento anomalo isolato non pregiudica l’esito delle
predizioni in generale. In caso ci sia una scelta tra più di un’azione da compiere per soddisfare le stesso
obiettivo (per esempio, aumentare la ventilazione o raffreddare l’aria in circolo), il sistema sceglie
l’opzione che minimizza il consumo energetico.
26
CAPITOLO 3
IMPOSTAZIONE E FORMULAZIONE DEL PROBLEMA
Il problema della gestione automatica del comfort termoigrometrico in un edificio deve tenere conto di
molteplici parametri e variabili, che possono dipendere dal tipo di edificio in questione, dallo scopo a
cui è predisposto, dalle abitudini degli abitanti, dalle condizioni ambientali, e soprattutto dalla tipologia
dei dispositivi di gestione del comfort presenti nell’edificio e dal loro grado di automatizzazione.
In questa tesi si è cercato di impostare un problema nel modo più generale possibile, adattabile a
qualsiasi tipo di edificio e di situazione. Si fa l’ipotesi che gli abitanti possano o meno comunicare al
sistema preferenze sulle condizioni di comfort desiderate; si sono suddivisi i dispositivi dell’edificio in
quattro categorie principali che rispecchiano la maggioranza degli impianti di gestione della temperatura
e dell’umidità generalmente presenti in abitazioni o edifici lavorativi; il sistema è inoltre facilmente
adattabile a ricevere dati in input sulle preferenze degli utenti da eventuali sistemi basati su data mining
o apprendimento automatico.
Nel lavoro è stato scelto di formulare il progetto come un problema di ottimizzazione vincolata
distribuito. La distribuzione delle funzionalità del sistema è sembrata la scelta più adatta data la natura
stessa del problema: un edificio è diviso in varie zone che necessitano di condizioni climatiche
generalmente diverse tra loro, e in momenti diversi della giornata; inoltre la variazioni delle condizioni
di una zona possono facilmente influenzare quelle delle zone vicine, perciò un sistema che agisca
tramite vari agenti posizionati nella varie zone dell’edifico, che interagiscono e cooperano tra loro rende
naturale la scelta di un approccio distribuito.
I principali vantaggi di un approccio distribuito, rispetto ad uno centralizzato possono essere così
riassunti:





Gli agenti del sistema possono facilmente interfacciarsi con dispositivi eterogenei e molto
diversi tra loro.
Maggiore affidabilità generale del sistema: il fallimento di una parte o di un agente del sistema
non comporta grandi conseguenze per il resto del sistema.
Alleggerimento del carico di lavoro delle singole componenti del sistema: rispetto ad un sistema
centralizzato, i singoli processi che compongono il sistema devono occuparsi solo di una parte
del lavoro.
Vantaggi economici dovuti alla possibilità di scegliere per ogni componente quanto di meglio
(in termini economici e/o qualitativi) offre il mercato.
Maggiori scalabilità e modularità delle componenti hardware e software.
L’approccio distribuito comporta anche alcuni svantaggi:



Maggiore complessità dell’architettura del sistema dovuta alla decentralizzazione del contollo.
Maggiore complessità del software di gestione del sistema.
Possibile nascita di problemi di comunicazione tra le componenti del sistema, o comunque loro
intensificazione rispetto a un approccio centralizzato.
27
Lo
o scopo della tesi è valutare dal punto di vista teorico (riguardo
(riguardo al numero, alla scelta e alle
caratteristiche di agenti, variabili e vincoli del problema)
problema e sperimentale (riguardo
riguardo al tempo di
esecuzione, alla scelta degli algoritmi disponibili e alla calibrazione dei parametri del sistema
sistema) come
diverse formulazioni del problema di ottimizzazione vincolata
vincolata distribuito si comportano nel risolvere
problemi di ottimizzazione del comfort termoigrometrico.
Nella sezione seguente è presentata in modo sintetico la totalità dei parametri di cui si può tenere conto
nella progettazione di un sistema di gestione
gestion del comfort, inoltre sono elencate le possibili misure di
valutazione dei risultati finali ottenuti dal sistema.
sistema Nella sezione successiva viene data una definizione di
distributed constraint optimization problem (DCOP), sono poi presentate l’impostazione generale del
problema trattato dalla tesi e laa sua formulazione, relativamente
rela
all’approccio DCOP. Infine sono
descritte le caratteristiche della varie formulazioni scelta per rappresentare il problema come una
successione di DCOP o come Dynamic DCOP, o DDCOP.
D
3.1. PARAMETRI SIGNIFICATIVI
Nella progettazione di un innovativo manager del comfort termoigrometrico, si può tenere conto de
dei
seguenti parametri, di seguito suddivisi in due categorie: parametri che tengono conto di stati e azioni
passati dell’ambiente e degli abitanti, e parametri basati su previsioni, modellizzazioni o eventi futuri.
3.1.1. INFORMAZIONI SUL PASSATO
Struttura edificio
I sistemi che tengono conto di questo parametro basano le loro scelte sulle caratteristiche specifiche
dell’ambiente, espresse da un modello dell’edificio e da leggi che descrivono l’andamento di
temperatura e umidità nel tempo. Possono essere basati su modelli
modelli che descrivono andamento di
temperatura e umidità negli edifici. Sono implementati da software
s
chee simulano consumi energetici in
un edificio (ad esempio EnergyPlus).
EnergyPlus) Permettono diverse tipologie di controllo, come centrale
(edificio), regionale (ad esempio: piano), locale (stanza)
(stanza).
Preferenze abitanti
I sistemi che tengono conto di questo parametro
parametro devono seguire delle indicazioni e dei vincoli derivanti
dalle specifiche dirette degli abitanti.. Possono essere in grado di pianificare attività in base a orari e
attività specificate dagli utenti. Possono essere integrati a software per la creazione agende
ende e programmi
(esempio: Google Calendar).Nelle
Nelle abitazioni, possono rivolgere semplici questionari
ionari agli abitanti per
stabilire ad esempio uno schedule settimanale.
settimanale
28
Rilevazione attività abitanti
I sistemi che tengono conto di questo parametro modificano la configurazione dell’ambiente in base a
rilevazione di presenza o tipologia di attività svolta dagli abitanti.
abitanti Sono spesso dotati di ssensori di
rilevazione presenza (ad esempio: sensori di movimento); di sensori di rilevazione
ilevazione dell’accensione
luci/elettrodomestici/dispositivi. Sono adatti ad altri
altri tipi di interazioni (esempio: accensione
riscaldamento con il giusto anticipo rispetto all’ora a cui è settata la sveglia).
sveglia) Alcuni sono in grado di
stimare l’affollamento delle stanze e di calcolare di conseguenza
consegue
la temperatura desiderata
desiderata.
Rilevazione caratteristiche ambiente
I sistemi che tengono conto di questo parametro modificano la configurazione dell’ambiente in base a
rilevazione di caratteristiche variabili della stanza o dell’edificio, come l’apertura
l’apertura o la chiusura di una
porta o di una finestra. Comandi elettronici come la chiusura di tende o serrande o l’apertura delle
finestre possono anche essere usate come attuatori, nei sistemi avanzati in ambito smart home, per
modificare le caratteristiche termoigrometriche dell’ambiente.
dell’ambiente
3.1.2. PREVISIONI DEL FUTURO
Previsioni meteorologiche
I sistemi che tengono conto di questo parametro stimano le condizioni ambientali presenti e future
basandosi su valori come temperatura o tempo atmosferico previsti,
previsti, raccolti da servizi esterni, sulla
base dei quali prevedere le condizioni ambientali dell’edificio.
dell’edificio Possono essere integrati con un sservizio
esterno da cui estrapolare dati meteorologici (esempio: WeatherUnderground). I dati
ati maggiormente
utilizzati sono la temperatura dell’aria, umidità relativa, irraggiamento solare globale
globale. Svolgono una
successiva interpolazione dei dati. Eventualmente
Eventual
possono affidarsi a più servizi per compensare le
imprecisioni. Possono inoltre ripianifica
ipianificare gli obiettivi nel caso di previsioni disattese.
Posizione del sole
I sistemi che tengono conto di questo parametro stimano le condizioni ambientali presenti e future
basandosi su particolari valori che derivano dalla posizione solare:
solare radianza,
adianza, irradianza, illuminanza.
Tipicamente questi valori non sono forniti da servizi meteorologici. Possono incidere su temperatura e
umidità nella simulazione dell’edificio.
dell’edificio
29
Predizione attività abitanti
I sistemi che tengono conto di questo parametro raccolgono dati da algoritmi di predizione di presenza
e/o tipologia di attività svolte in futuro dagli abitanti, in base ai quali stabilire una programmazione
ottimale per soddisfare automaticamente gli obiettivi richiesti. Si pongono come obiettivi di prevedere
nel modo più accurato possibile le attività degli abitanti, reagire il più immediatamente a singoli eventi
anomali, soddisfare le richieste di uno o più utenti contemporaneamente minimizzando il consumo
energetico. Di solito tengono conto della maggior parte dei parametri precedenti per effettuare raccolta
dati e eventuali attività di data mining. I sistemi che introducono l’identificazione degli utenti sono di
solito ritenuti troppo invasivi per essere utilizzati nelle abitazioni, ma più adatti ad ambienti lavorativi.
Per implementare questi sistemi sono di solito necessari metodi di controllo predittivo e/o machine
learning: tra i più adatti si citano catene di Markov, controllo ottimo, regole fuzzy.
30
La Tabella 3.1 indica i parametri maggiormente tenuti in considerazione dai vari metodi di controllo del
comfort e dai sistemi multiagente e di ambient intelligence analizzati.
Struttura Posizione Preferenze Rilev
Rilev
Previsioni Predizione
edificio
sole
abitanti
attività ambiente
meteo
attività
Controllo
predittivo [17]
Intelligenza
computazionale
[8]
Behavior based
systems [21]
Controllo multi
agente [7]
Hierarchical
Fuzzy-Genetic
[14]
Termostato
multiagente
[21]
MAS marketbased [13]
MAS basato su
badge [23]
MavHome [5]
Neural
Network
House [6]
Tab. 3.1: Tabella riassuntiva dei metodi di controllo del comfort
La Tabella 3.2 indica i parametri maggiormente tenuti in considerazione dai sistemi commerciali di
controllo del comfort analizzati.
Struttura
edificio
Preferenze
abitanti
Rilev
attività
Previsioni
meteo
Predizione
attività
Termostato
Nest
Termostato
CGA
Smart Temp
Loxone
KNX
Ebac Smart
Control
Tab. 3.2: Tabella riassuntiva dei sistemi commerciali di controllo del comfort [Sez. 2.2]
31
3.2. MISURE DI VALUTAZIONE DEL COMFORT
La progettazione e la realizzazione di un software che controlli il comfort termoigrometrico di un
edificio dovrà raggiungere specifici obiettivi se confrontato con soluzioni esistenti scientifiche o
commerciali, in particolare i risultati potranno essere valutati concretamente misurando una o più delle
seguenti variabili.






Il rapporto tra il tempo in cui le condizioni ambientali dell’edificio sono comprese nella
zona di comfort secondo l’indice PMV, e il tempo in cui si richiede che lo siano, a seconda
della presenza e delle preferenze degli abitanti.
La minimizzazione dell’ indice PPV, che indica la percentuale degli individui insoddisfatti di
una data condizione ambientale.
La differenza tra la temperatura istantanea media ottenuta utilizzando il sistema con quella
ottimale richiesta dagli abitanti in vari momenti e periodi.
La differenza tra l’umidità relativa istantanea media ottenuta utilizzando il sistema con quella
ottimale richiesta dagli abitanti in vari momenti e periodi.
L’intervallo di tempo tra l’istante in cui sono richieste delle particolari condizioni di comfort
e quello in cui il sistema raggiunge tali condizioni.
Il consumo energetico dei sistemi di riscaldamento, condizionamento aria, ventilazione e
simili, per mezzo di opportune simulazioni software.
32
3.3. DCOP: Distributed Constraint Optimization Problem
L’approccio DCOP [2] è utilizzato per modellare una grande varietà di problemi riguardanti il
coordinamento e la cooperazione nei sistemi multiagente, tra cui pianificazione distribuita, allocazione
di risorse distribuita, robotica, reti di sensori e molti altri. Il modello DCOP costituisce un’utile struttura
di base per ricercare soluzioni che permettano agli agenti di coordinare al meglio le loro decisioni in
questi domini.
Un problema DCOP è modellizzato da una tupla <A, V, D, F, α, η>. A = {ai}, 0 ≤ i ≤ n è l’insieme
finito degli agenti. V = {vi}, 0 ≤ i ≤ m è l’insieme finito delle variabili. D = {Di}, 0 ≤ i ≤ m è l’insieme dei
domini finiti, dove Di è l’insieme dei possibili valori per la variabile vi. F = {fi}, 0 ≤ i ≤ p è l’insieme dei
vincoli, in cui ogni vincolo: fi : Di1 x Di2 x … x Dik → ℝ ∪ ±∞, 2 ≤ k ≤ m specifica un costo come
funzione dei valori delle variabili che condividono il vincolo. α è una funzione che associa ogni variabile
all’agente che la controlla: α(vi) → aj. η è un operatore che aggrega, tipicamente sommandoli, tutti i costi
dei singoli vincoli per ogni possibile assegnamento.
Una soluzione del DCOP è costituita da un assegnamento a tutte le variabili del problema. Il costo della
soluzione è dato dall’operatore η, applicato ai costi di tutti i vincoli condivisi dalle variabili della
soluzione. Trovare la soluzione ottima di un DCOP significa trovare la soluzione che minimizza (o
massimizza, a seconda dei casi) il costo complessivo, come espresso dalla funzione obiettivo.
I vincoli del problema esprimono le condizioni che gli assegnamenti alle variabili devono rispettare, per
costituire delle soluzioni accettabili all’interno del dominio rappresentato dall’ambiente del problema.
Nell’ambito di questa tesi possono essere suddivisi in due tipologie.


I vincoli strutturali, che esprimono le limitazioni e le condizioni che devono essere rispettate in
modo che il modello del problema rappresenti in maniera sufficientemente corretta l’ambiente
che vuole rappresentare: sono, cioè, imposti dalla struttura dell’ambiente e del mondo esterno.
I vincoli relativi alle decisioni dell’utente, che sono stabiliti dalle preferenze e dagli obiettivi che gli
utenti comunicano al sistema; non sono imposti dall’ambiente, ma dalla tipologia e dagli
obiettivi del problema che il sistema deve risolvere.
La funzione obiettivo indica la condizione finale che una soluzione del problema deve rispettare per
essere considerata una soluzione ottima, perciò può essere considerata come un vincolo dipendente
dall’utente, in quanto rappresenta il più importante obiettivo che si deve raggiungere per risolvere il
problema nel suo complesso.
33
3.4. IMPOSTAZIONE DEL PROBLEMA
In questa sezione è descritta l’impostazione di un problema generale per la gestione del comfort
termoigrometrico, corrispondente a una successione di DCOP, che possono, in casi limite, ridursi a un
DCOP singolo. Più avanti, in questo capitolo, si tratteranno più nel dettaglio le possibili formulazioni
del problema riguardanti l’insieme dei DCOP che lo costituiscono, tra cui una semplice serie di DCOP
in successione o un Dynamic DCOP.
L’obiettivo del problema è gestire il controllo delle condizioni ambientali di un edificio, nel più grande
numero di situazioni possibile e tenendo conto di tutti i fattori più significativi. L’approccio DCOP è
stato applicato a un sistema che rileva le variazioni di temperatura e umidità nelle varie zone
dell’edificio, e gestisce dispositivi di riscaldamento, di condizionamento dell’aria, di ventilazione e di
(de)umidificazione oltre che l’apertura o la chiusura automatica di tutte le porte e le finestre dell’edificio.
L’edificio è diviso in zone; ogni zona corrisponde a una stanza, un corridoio o una simile area
dell’edificio. Ogni agente del sistema corrisponde esattamente ad un dispositivo che controlla un
attuatore. Per semplicità, nel problema si suppone che ogni zona sia sempre confinante con esattamente
altre due zone, e che abbia sempre due porte e una finestra. Ovviamente questa è solo una
semplificazione utile a presentare il problema in termini generali, in quanto il numero di zone
confinanti, di porte e di finestre varia da zona a zona e da edificio a edificio, e queste caratteristiche
devono essere naturalmente rappresentate nel modello dell’edificio in questione, e di conseguenza
nell’impostazione del problema.
L’utente può interagire con il sistema indicandogli le condizioni ambientali desiderate e le zone e gli
istanti di tempo in cui desidera che queste condizioni siano raggiunte, in due modi.


Prima che abbia inizio un ciclo di problemi DCOP, corrispondente a un problema complessivo,
l’utente può stabilire dei setpoint e comunicarli al sistema attraverso un’apposita interfaccia: per
ogni setpoint, l’utente dovrà indicare la temperatura desiderata (che verrà interpretata dal
sistema come temperatura percepita dagli abitanti, per quanto riguarda il calcolo della
temperatura effettiva dell’ambiente) e l’eventuale umidità desiderata; gli orari di inizio e fine
dell’intervallo di tempo in cui temperatura e umidità dovranno mantenersi su tali valori; e la
zona o le zone dell’edificio che dovranno trovarsi a quella temperatura e umidità. Tipicamente
l’orizzonte temporale del problema corrisponderà a 24 ore, sarà perciò possibile comunicare le
preferenze degli utenti al sistema nella giornata precedente a quella in cui si desidera che siano
ottenute. E’ possibile specificare un giorno preciso, o stabilire degli schedule regolari, validi ad
esempio per uno specifico giorno della settimana o per tutti i giorni della settimana.
L’utente può comunicare al sistema una determinata variazione di temperatura o umidità in
qualunque momento, durante il suo funzionamento: in ogni zona, può configurare un
termostato e i relativi indicatori di temperatura e umidità, o in alternativa può agire su
un’interfaccia di controllo che gestisce contemporaneamente le condizioni di tutte le zone
dell’edificio; il sistema cercherà da quel momento in poi di raggiungere tali condizioni nel più
breve tempo possibile, ma il tempo effettivo che impiegherà dipenderà, oltre che dalle
condizioni attuali dell’edificio, anche dalla durata della validità delle soluzioni dei singoli
34
problemi DCOP: se questa è stata estesa per ridurre la complessità del problema, il sistema
potrebbe reagire in ritardo alle indicazioni dell’utente, mentre maggiore sarà la frequenza dei
singoli DCOP, più velocemente il sistema si adatterà alle modifiche impreviste dei desideri
dell’utente.
Oltre alle informazioni e alle preferenze specificate dagli utenti, il sistema può ricavare le informazioni
di cui ha bisogno per impostare i DCOP, basandosi su altri fattori che non dipendono direttamente
dalle decisioni degli utenti.


Utilizzando indicatori come l’indice PMV descritto nella Sezione 2.1, il sistema può conoscere
le condizioni ambientali ideali per gli abitanti dell’edificio, e quindi cercare di mantenere queste
condizioni nell’ambiente senza che vi sia alcuna richiesta da parte dell’utente; associando questa
caratteristica a funzioni come la rilevazione di presenza o il riconoscimento delle attività svolte
dagli abitanti, si può fare in modo che le condizioni ambientali ideali siano raggiunte solo
quando effettivamente ce ne sia bisogno, ottimizzando così i consumi e le prestazioni del
sistema, inoltre si può permettere al sistema di reagire a eventuali eventi imprevisti come il
rientro a casa inaspettato di un abitante.
Utilizzando tecniche di learning o data mining, il sistema può raccogliere dati da algoritmi di
predizione riguardo gli orari di presenza e/o le attività svolte dagli abitanti, in modo da stabilire
una programmazione ottimale per soddisfare automaticamente il maggior numero di desideri
degli abitanti, senza che questi comunichino i loro obiettivi direttamente al sistema; in questo
modo il sistema agirà sui dispositivi dell’abitazione in base alle attività che si prevede che gli
abitanti svolgeranno con maggiore probabilità. Questo approccio può sostituire del tutto la
programmazione manuale del sistema da parte degli utenti, o può integrarsi con essa.
L’orizzonte temporale è una variabile che indica la lunghezza dell’intervallo di tempo che corrisponde a un
problema complessivo, cioè a una serie di iterazioni di singoli problemi(DCOP) di ottimizzazione: il
sistema può pianificare eventi e previsioni a lungo termine che avverranno lungo questo intervallo, e gli
utenti possono impostare preferenze e schedule predefiniti; l’intervallo di ripianificazione indica invece la
lunghezza dell’intervallo di tempo tra un problema di ripianificazione e il successivo; ad esempio, con
un orizzonte temporale di 24 ore e un intervallo di ripianificazione di 10 minuti, durante un ciclo di
iterazioni lungo 24 ore il sistema dovrà risolvere 144 singoli problemi DCOP di ottimizzazione, uno
ogni 10 minuti per 24 ore. La lunghezza dell’intervallo di ripianificazione influenza la reattività del
sistema: come detto, con un intervallo molto breve, un cambiamento dell’ambiente o il verificarsi di un
evento imprevisto provocheranno un’immediata reazione del sistema, che genererà un nuovo problema
DCOP che tiene conto dei nuovi cambiamenti non appena avrà inizio il prossimo intervallo di
ripianificazione. Un intervallo molto lungo comporterà tempi di reazione più estesi, ma corrisponderà
anche alla generazione di meno problemi DCOP nell’arco dell’orizzonte temporale, diminuendo quindi
la complessità del problema complessivo. E’ così possibile cercare un compromesso adatto tra
efficienza e complessità, modificando questi due parametri temporali. Se si fanno coincidere i due
parametri, cioè se la durata complessiva dell’orizzonte temporale coincide con l’intervallo di
ripianificazione, il problema complessivo si ridurrà a un singolo problema DCOP: cioè il sistema non
terrà conto di alcun cambiamento che avverrà nell’ambiente lungo la durata dell’orizzonte temporale.
35
Il sistema cercherà di ottenere le migliori condizioni possibili, secondo le preferenze degli utenti, o in
base all’eventuale calcolo automatico di condizioni di comfort ideali, minimizzando la potenza totale
richiesta per ottenere tali condizioni, cioè la somma dei costi dei dispositivi attivati in tutte le zone
dell’edificio, per ogni intervallo di ripianificazione dell’orizzonte temporale. Inoltre la somma dei costi
in un dato intervallo non dovrà mai superare il limite massimo di potenza disponibile all’interno della
rete dell’edificio. I dati rilevati in input da ogni agente (supponendo che il dispositivo corrispondente
all’agente sia in grado di riceverli), in ogni istante di tempo, sono:





La temperatura e l’umidità relativa esterne dell’edificio.
La temperatura e l’umidità relativa attuali della sua zona.
La temperatura e l’umidità relativa attuali delle zone confinanti.
La temperatura e umidità relativa desiderate nella sua zona, per tutti gli istanti di tempo futuri
per cui sono specificate, cioè temperatura e umidità ideali che si dovranno raggiungere in quella
zona in specifici istanti di tempo nel corso dell’orizzonte temporale: sono stabilite tenendo
conto di tutti i parametri che le influenzano.
Dalle variabili precedenti ogni agente calcola le velocità di variazione della temperatura e
dell’umidità relativa per il prossimo time step, che indica quanto velocemente dovranno variare
temperatura e umidità nel corso del prossimo intervallo di tempo, per raggiungere gli obiettivi
desiderati, che possono essere immediati o relativamente a lungo termine.
In ogni zona è presente un agente per ognuno dei seguenti attuatori:






Impianto di riscaldamento: Accensione/spegnimento e regolazione.
Impianto di condizionamento: Accensione/spegnimento e regolazione.
Impianto di ventilazione: Accensione/spegnimento e regolazione.
Impianto di umidificazione/deumidificazione: Accensione/spegnimento e regolazione.
Apertura automatica porte.
Apertura automatica finestra.
Nelle Appendici A.1 e A.2 sono mostrati degli esempi di problemi DCOP come descritti in questa
sezione.
36
3.5. FORMULAZIONE DEL PROBLEMA COME DCOP
Possiamo esprimere il problema come segue:






n: numero delle zone dell’edificio.
(aheat1, acond1, avent1, ahumd1, adoor11, adoor21, awind1, aheat2, …, awindn): insieme degli agenti del sistema: ogni
agente controlla esattamente un dispositivo di una singola zona.
P: valore costante che rappresenta la potenza massima disponibile all’interno della rete.
γ: coefficiente compreso tra 0 e 1 che ha la funzione di pesare la componente riguardante il
consumo energetico nella funzione obiettivo; un valore piccolo o prossimo allo 0 significa che il
sistema si occuperà con maggiore priorità di ottenere le condizioni desiderate dagli abitanti
dell’edificio, al contrario un valore alto di γ significa che il consumo energetico avrà maggiore
importanza nella ricerca della soluzione ottima, a discapito delle migliori condizioni di comfort
ottenute. Il valore di default è stato impostato a 0,33 e sarà variato in una delle prove
sperimentali nella Sezione 6.3.1.
(heat1, cond1, vent1, humd1, door11, door21, wind1, heat2, …, windn): insieme delle variabili che
controllano i dispositivi che gestiscono il comfort nell’edificio. Ogni variabile assume un valore
specifico ad ogni intervallo di ripianificazione (che corrisponde a un singolo problema DCOP);
il valore della variabile si riferisce al funzionamento del rispettivo dispositivo per il successivo
intervallo di tempo, fino alla generazione di un nuovo DCOP. Per ogni zona, la variabile heat
gestisce l’intensità del riscaldamento di quella zona, la variabile cond l’intensità del riscaldamento
o raffreddamento dell’aria tramite condizionamento, la variabile vent l’intensità della
ventilazione, la variabile humd l’intensità dell’umidificazione o deumidificazione dell’aria. Le
variabili binarie door1, door2 e wind indicano se le porte e la finestra della zona dovranno essere
chiuse o aperte.
(Dheat1, Dcond1, Dvent1, Dhumd1, Ddoor11, Ddoor21, Dwind1, Dheat2, …, Dwindn): insieme dei domini delle variabili
che controllano i dispositivi; i valori corrispondono a comandi che saranno comunicati ai
dispositivi controllati, indicati da valori discreti che possono essere adattati a qualunque
dispositivo o insieme di dispositivi, per esempio il valore VERY_LOW per la variabile vent1
potrebbe corrispondere a un’intensità pari a “1 su 5” per un particolare dispositivo di
ventilazione, ma potrebbe corrispondere all’intensità “1 su 3” per un altro dispositivo;
ovviamente è possibile modificare cardinalità e tipologia di questi domini, a condizione di
modificare di conseguenza le funzioni di valutazione che elaborano le informazioni ottenute
dalle variabili che gestiscono i dispositivi.
o i domini Dheat possono assumere il valore OFF, che indica che il riscaldamento non è
attivo, o valori discreti che indicano l’intensità del riscaldamento.
Dheat = {OFF, VERY_LOW, LOW, NORMAL, HIGH, VERY_HIGH}
o i domini Dcond possono assumere il valore OFF, che indica che il condizionamento non è
attivo, o valori discreti che indicano se l’aria condizionata sta riscaldando o raffreddando
l’ambiente, e con quale intensità.
Dcond = {OFF, VERY_COLD, COLD, HOT, VERY_HOT}
37






o i domini Dvent possono assumere il valore OFF, che indica che la ventilazione non è
attiva, o valori discreti che indicano l’intensità della ventilazione.
Dvent = {OFF, VERY_LOW, LOW, NORMAL, HIGH, VERY_HIGH}
o i domini Dhumd possono assumere il valore OFF, che indica che l’umidificazione o
deumidificazione non sono attive, o valori discreti che indicano se l’impianto sta
umidificando o deumidificando l’ambiente, e con quale intensità.
Dhumd = {OFF, DEHUM_HIGH, DEHUM_LOW, HUM_LOW, HUM_HIGH}
o i domini Ddoor1, Ddoor2 e Dwind possono assumere i valori {OPEN, CLOSED}.
TH: valore costante, espresso in secondi, che indica la durata dell’orizzonte temporale, cioè del
problema complessivo che comprende l’insieme dei singoli problemi DCOP.
RI: valore costante, espresso in secondi, che indica la durata di un singolo intervallo di
ripianificazione, cioè dell’intervallo in cui, assegnati valori alle variabili del rispettivo problema
DCOP, i dispositivi del sistema cercheranno di mantenere i valori indicati da quelle variabili.
TS: insieme, dipendente dai valori dei parametri TH e RI, che rappresenta i time step (a partire da
1) in cui è suddiviso l’orizzonte temporale: al raggiungimento di ogni time step, il sistema
risolverà un singolo DCOP; l’insieme di tutti i problemi DCOP risolti, uno per ogni elemento
di TS, costituisce il problema complessivo; la cardinalità di TS è uguale alla divisione intera tra
TH e RI, e se l’orizzonte temporale corrisponde all’intervallo di ripianificazione, TS è costituito
da un unico elemento, e il problema si riduce a un unico problema DCOP
Per esempio, se TH = 86400 s (24 ore) e RI = 600 s (10 minuti), TS = {1, 2, …, 144}.
(vt1, vh1, vt2, …, vhn): insieme delle variabili, espresse in °C/h(vt) e %/h(vh), che ad ogni intervallo
di ripianificazione, indicano la velocità con cui, in ogni zona, dovranno variare temperatura e
umidità relativa, per rispettare gli obiettivi prestabiliti di raggiungimento delle condizioni di
comfort desiderate. Questi valori sono calcolati dal sistema tenendo conto di tutti i parametri
significativi (per esempio considerando il fatto che una variazione dell’umidità comporta
direttamente una variazione della temperatura percepita dagli esseri umani), e forniti come input
per il DCOP, al raggiungimento di ogni intervallo di ripianificazione.
(valt1, valh1, valt2, …, valhn): insieme delle funzioni di valutazione associate alle zone dell’edificio:
per ogni assegnamento alle variabili dei dispositivi di una data zona, le funzioni valt e valh di
quella zona restituiscono la velocità con cui, in quella zona, si prevede che varieranno
temperatura e umidità relativa nel prossimo intervallo di tempo; queste funzioni tengono conto
di tutti i parametri significativi che influiscono sulle condizioni ambientali, e possono
differenziarsi tra le varie zone a causa di caratteristiche come la posizione e la dimensione delle
zone. Queste funzioni verranno usate nei vincoli per confrontare gli effetti delle varie
configurazioni dei dispositivi con le velocità desiderate (variabili vt, vh).
(cheat1, ccond1, cvent1, chumd1, cheat2, …, chumdn): insieme delle funzioni di costo associate ai
dispositivi presenti nelle zone dell’edificio: ogni funzione di costo fornisce il valore della
potenza consumata dal rispettivo dispositivo attivo nella relativa zona, che assume il valore
indicato dalla rispettiva variabile del DCOP; si suppone che l’apertura e la chiusura elettroniche
di porte e finestre non consumino potenza, perciò non sono presenti funzioni di costo per
queste variabili, che non sono considerate nel calcolo della potenza totale assorbita dal sistema.
38
Variabili del problema DCOP


(heat1, cond1, vent1, humd1, door1, wind11, wind21, heat2, …, wind2n): insieme delle variabili, ognuna
controllata da un singolo agente, associate ai dispositivi che gestiscono il comfort nell’edificio.
(Dheat1, Dcond1, Dvent1, Dhumd1, Ddoor1, Dwind11, Dwind21, Dheat2, …, Dwind2n): insieme dei domini delle variabili
associate ai dispositivi.
Vincoli del problema DCOP



Funzioni di costo: le funzioni di costo restituiscono, per ogni zona e per ogni intervallo di
ripianificazione, la potenza totale che i dispositivi di quella zona assorbirebbero se fossero attivi
durante il prossimo intervallo, assumendo i valori ottenuti da una data assegnazione alle relative
variabili; è presente una funzione di costo per ogni zona:
cj = cheatj + ccondj + cventj + chumdj, 1 ≤ j ≤ n.
Vincolo di potenza massima: vincolo globale che stabilisce che la somma della potenza
assorbita dagli agenti di tutte le zone, in ogni intervallo di pianificazione, non deve superare il
valore della potenza massima; a quegli assegnamenti che comportano una potenza assorbita
totale superiore al limiti, viene assegnato un costo infinito:
P - ∑ =1 cj < 0 → costo: ∞.
Vincoli di coerenza con gli obiettivi di comfort: questi vincoli associano a ogni assegnamento
alle variabili di ogni zona di un dato intervallo di ripianificazione, la velocità con cui, in quella
zona, si prevede che varieranno temperatura e umidità relativa in quell’intervallo di
ripianificazione; le funzioni valt e valh si occupano di valutare le condizioni ambientali e di
restituire le velocità, sulla base dei valori di un dato assegnamento alle variabili della rispettiva
zona. I valori restituiti da questi vincoli (le variabili vart e varh) verranno utilizzati nella funzione
obiettivo, che sceglierà la soluzione che minimizza loro somma. Le funzioni valt e valh terranno
conto anche delle possibili correlazioni tra le variazioni di temperatura e umidità: ad esempio,
una stessa temperatura percepita può essere raggiunta agendo sulla temperatura effettiva oppure
sull’umidità della zona; in entrambi i casi, il vincolo accetterà gli assegnamenti, poi
successivamente la funzione obiettivo stabilirà quale sia quello che consuma meno energia e che
sarà quindi selezionato come soluzione, per quanto riguarda quella zona dell’edificio.
vartj = valtj(heatj, condj, ventj, humdj, doorj, wind1j, wind2j),
varhj = valhj(heatj, condj, ventj, humdj, doorj, wind1j, wind2j), 1 ≤ j ≤ n
39
Funzione obiettivo
La funzione obiettivo da minimizzare è costituita dalla somma di due componenti X1 e X2:


X1 è la somma dei valori assoluti delle differenze tra le velocità desiderate di temperatura e
umidità, e le velocità ottenute grazie agli assegnamenti delle variabili di tutte le zone dell’edificio.
La sua minimizzazione corrisponde intuitivamente all’avvicinamento agli obiettivi del problema,
essa è infatti tanto minore quanto più le condizioni dell’edificio convergono verso gli obiettivi di
comfort definiti dal problema.
X1 = ∑ =1 [abs(vtj - vartj) + abs(vhj - varhj)]
X2 è la somma delle funzioni di costo di tutte le zone dell’edificio calcolate secondo gli
assegnamenti delle variabili corrispondenti, pesata secondo un parametro γ, con 0 ≤ γ ≤ 1.
X2 = γ ∑ =1 cj
Perciò la funzione complessiva da minimizzare sarà: X* = argmin(X1 + X2).
40
3.6. FORMULAZIONI DEL PROBLEMA COME SUCCESSIONE DI DCOP
O DDCOP
Il problema complessivo, inteso come una successione di singoli problemi DCOP che devono essere
risolti a intervalli regolari nel corso della durata dell’orizzonte temporale, è stato formulato in questa tesi
secondo vari approcci, illustrati in questa sezione.
3.6.1. DCOP UNICO CON VARIABILI VETTORIALI
Inizialmente è stato pensato di rappresentare la successione di DCOP come un unico DCOP, in cui
siano presenti variabili strutturate come una sequenza di valori nel tempo. Le variabili relative ai DCOP
sarebbero così costituite da vettori, di lunghezza pari al numero di time step in cui è suddiviso il
problema complessivo, e conterrebbero i valori della rispettiva variabile in ogni intervallo di
ripianificazione. Questo approccio non si è però rivelato ottimale per rappresentare questo tipo di
problema: innanzitutto esso ha portato a un’esplosione della complessità del problema, che prevede un
grande numero di possibili valori per le variabili e di interazioni tra di esse riguardo a un singolo
DCOP; raggruppare in unico DCOP le variabili e i vincoli di tutta la successione dei DCOP avrebbe
reso ingestibile il problema per gli algoritmi a disposizione di FRODO, il framework utilizzato in
questo lavoro e descritto nella Sezione 4.1. Inoltre, la natura stessa del problema rende inappropriata
questa rappresentazione: gestire le condizioni di comfort di un edificio è un’attività che richiede un
controllo dinamico e reattivo, e in cui i cambiamenti delle condizioni dell’ambiente nel tempo
influenzano direttamente gli obiettivi e possono notevolmente modificare il comportamento desiderato
del sistema. Perciò un approccio in cui tutte le informazioni sull’ambiente e sugli obiettivi sono presenti
fin dall’inizio e non possono subire modifiche nel corso del problema (ambiente statico), avrebbe reso il
sistema poco adatto al suo utilizzo per fini pratici.
3.6.2. SUCCESSIONE DI DCOP
L’approccio che si è scelto di utilizzare per la maggior parte degli scopi previsti in questa tesi è stato
considerare il problema come una successione di DCOP singoli come presentati nella sezione
precedente, che il sistema risolve nel corso della durata dell’orizzonte temporale, ad intervalli prefissati e
uguali tra loro, la cui durata corrisponde a quella dell’intervallo di ripianificazione, e che stabilisce il
numero stesso di DCOP che compongono il problema. I DCOP sono risolti singolarmente uno dopo
l’altro, ma le condizioni dell’ambiente, e conseguentemente gli obiettivi del problema, possono variare
tra un DCOP e il successivo (ambiente dinamico), e i risultati prodotti dalla risoluzione di un DCOP
influenzano direttamente le caratteristiche del successivo, come descritto dettagliatamente nella Sezione
5.2.1. Questa formulazione del problema non influisce sulla modalità di risoluzione dei DCOP, che
vengono comunque risolti da FRODO come una sequenza di DCOP slegati tra loro, ma agisce
41
solamente al momento della loro generazione e della specifica delle loro caratteristiche (come variabili o
vincoli).
Questa formulazione si presta inoltre ad una maggiore adattabilità del problema: modificando i
parametri temporali che definiscono il numero e le caratteristiche dei DCOP della sequenza, si possono
di volta in volta impostare dei problemi strutturati secondo le esigenze particolari di una singola istanza,
e si può cercare il giusto compromesso tra efficienza e complessità nella risoluzione del problema.
In Fig. 3.1 è illustrato il modo schematico il funzionamento del sistema che implementa questa
formulazione. Gli utenti inviano gli obiettivi desiderati come input al sistema, che riceve inoltre i dati
delle condizioni ambientali dai sensori nell’edificio. Il sistema elabora quindi i dati e formula un DCOP
che viene risolte le soluzioni sono inviate agli attuatori dell’edificio sotto forma di comandi che indicano
la configurazione dei dispositivi che gestiscono il comfort. Le azioni compiute dal sistema modificano
le condizioni ambientali dell’edificio, che vengono di nuovo rilevate dal sistema e danno origine ad un
nuovo DCOP, che viene risolto senza tenere conto dei dati ricavati dai problemi precedenti nella
sequenza.
42
Fig. 3.1: Schema che illustra il funzionamento del sistema formulato come successione di
DCOP
43
3.6.3. DDCOP: DYNAMIC DISTRIBUTED CONSTRAINT OPTIMIZATION
PROBLEM
Questa formulazione alternativa prevede di considerare il problema complessivo come un Dynamic
Distributed Constraint Optimization Problem (DDCOP) [38]. Un problema DDCOP è definito da una
sequenza di problemi DCOP statici, in cui ogni problema può essere diverso dal precedente e dal
successivo. Risolvere un problema DDCOP significa trovare le soluzioni che minimizzano(o
massimizzano) i costi per tutti i DCOP nella sequenza. La complessità di un problema DDCOP non è
maggiore di quella dei singoli DCOP che lo compongono.
Il vantaggio nell’utilizzo di un approccio DDCOP, piuttosto che nella risoluzione di singoli DCOP
indipendenti, viene dal fatto che, risolvendo un DCOP nella sequenza, probabilmente la maggior parte
del problema non avrà subito variazioni rispetto al DCOP precedente, perciò si possono riutilizzare le
soluzioni trovate precedentemente senza ricalcolarle. Per ottenere ciò, alcuni algoritmi di risoluzione dei
DCOP possono essere modificati tenendo conto di questi fattori. Per esempio, agli algoritmi ADOPT
(Sezione 4.1) e BnB-ADOPT può essere applicato l’utilizzo della procedura Reuse-Bounds: con questa
procedura, quando si risolve un DCOP della sequenza, vengono identificati gli affected agents, cioè i nodi
dello pseudo-albero del problema che sono influenzati da un cambiamento del problema avvenuto tra il
precedente e il corrente DCOP; e sono memorizzati gli upper bound e i lower bound degli agenti non
influenzati, che potranno essere riutilizzati nel prossimo problema, mentre per tutti i nodi degli agenti
influenzati verranno riutilizzati gli algoritmi ADOPT o BnB-ADOPT per ricercare nuove soluzioni
ottime.
La rappresentazione del problema come DDCOP influenza principalmente la modalità in cui gli
algoritmi di risoluzione processano i singoli DCOP. L’impostazione e le caratteristiche generali del
problema rimangono pressoché invariate rispetto alla formulazione come successione semplice di
DCOP. L’utilizzo di una procedura come Reuse-Bounds ha lo scopo di migliorare le prestazioni
dell’algoritmo che la utilizza, e stabilisce una correlazione diretta tra i DCOP che costituiscono il
problema complessivo, che può essere così considerato un unico problema dinamico (DDCOP) e non
più una semplice successione di DCOP slegati tra loro. Una descrizione più dettagliata della procedura
Reuse-Bounds e di come questa è stata implementata in questo lavoro è data nel capitolo successivo.
In Fig. 3.2 è illustrato il funzionamento del sistema che implementa la formulazione del problema
come DDCOP. Per elaborare e risolvere un DCOP, il sistema, oltre a ricevere in input gli obiettivi degli
utenti e le condizioni ambientali dell’edificio, elabora i dati memorizzati dei DCOP risolti
precedentemente nella sequenza e genera un DCOP la cui complessità può essere ridotta rispetto a
quella della formulazione precedente, a seconda dell’utilità che si ottiene da queste informazioni.
44
Fig. 3.2: Schema che illustra il funzionamento del sistema formulato come un DDCOP
45
CAPITOLO 4
ESTENSIONE DEL FRAMEWORK FRODO
Nel precedente capitolo è stato impostato il problema applicativo affrontato, e sono state descritte varie
tipologie di formulazioni DCOP per la sua risoluzione. Per implementare e risolvere i DCOP veri e
propri, è stata utilizzata una modellazione che fosse coerente con lo standard di FRODO, il framework
utilizzato in questo lavoro per risolvere i problemi.
4.1. FRODO
FRODO (FRamework for Open/Distributed constraint Optimization) [36] è un framework Java opensource per la soluzione di problemi di ottimizzazione vincolata distribuita (DCOP), sviluppato
inizialmente all’Artificial Intelligence Laboratory (LIA) dell’Ecole Polytechnique Fédérale de Lausanne
(EPFL), in Svizzera. La versione utilizzata in questa tesi è FRODO 2.11, una versione riprogettata da
zero rispetto a quella originale.
Utilizzando FRODO si può simulare in una singola macchina virtuale Java un ambiente multiagente, in
cui ogni agente è eseguito in maniera asincrona in un thread dedicato, e comunica con gli altri
attraverso scambi di messaggi. A partire dall’ultima versione di FRODO è anche possibile creare un
ambiente realmente distribuito, in cui ogni agente può essere ospitato su una diversa macchina e può
comunicare con gli altri attraverso la rete tramite protocollo TCP. L’interfaccia di FRODO è adattabile
a varie tipologie di problemi, e permette un’elevata personalizzazione; le librerie interne dispongono
inoltre di un gran numero di algoritmi di ottimizzazione distribuita.
FRODO richiede in input due tipi di file: i file che definiscono il problema di ottimizzazione da
risolvere e i file di configurazione che definiscono l’algoritmo da utilizzare. Il formato del file utilizzato
per descrivere i DCOP è basato su XCSP 2.1 [31], rappresenta reti di vincoli tramite XML e comprende
alcune estensioni necessarie a renderlo adatto ai problemi di ottimizzazione distribuita, poiché XCSP è
stato progettato per rappresentare problemi di soddisfacimento di vincoli centralizzati. Il formato
XCSP risultante è un soprainsieme dello standard XDisCSP 1.0 utilizzato dalla piattaforma
DisCHOCO 2 [32]; questo rende possibile utilizzare tale piattaforma come generatore di problemi
benchmark per FRODO. A seconda del parser utilizzato per la lettura del problema in input, FRODO
supporta rispettivamente o un sottoinsieme, o un sottoinsieme ristretto di XCSP 2.1.
La Fig. 4.1 mostra un esempio di file XCSP per FRODO, utilizzando il sottoinsieme ristretto
supportato dal parser XCSPparser. Il file consta di cinque sezioni principali.



La sezione <agents> definisce gli agenti del DCOP.
La sezione <domains> definisce i domini dei valori delle variabili del DCOP.
La sezione <variables> definisce le variabili del DCOP, con i corrispondenti domini e agenti cui
appartengono. Ogni agente può possedere più di una variabile.
46


La sezione <relations> definisce generiche relazioni sulle variabili. Una relazione ha una
corrispondenza logica con i vincoli analoga alla corrispondenza che intercorre tra i domini e le
variabili: essa descrive una nozione generica su un certo numero di variabili, senza specificarne il
nome; questa nozione può essere poi implementata come un vincolo, specificando le variabili
coinvolte. Il parser XCSPparser supporta solo relazioni di tipo soft (espresso nell’attributo
semantics), che elencano tutti i possibili valori di utilità (o costo, a seconda che l’attributo
maximize del tag presentation sia true o false), e per ogni utilità, gli assegnamenti delle variabili
che la producono. Tuttavia l’utilizzo del valore speciale infinity rende possibile esprimere in
questo modo anche vincoli di tipo hard. Nell’esempio in Fig. 4.1, la relazione NEQ attribuisce
un costo infinito agli assegnamenti nei quali le variabili assumono lo stesso valore, e un costo
nullo a tutti gli altri assegnamenti.
La sezione <constraints> elenca i vincoli veri e propri del DCOP, riferendosi alle relazioni
precedentemente definite, e applicandole a variabili specifiche elencate nell’attributo scope.
<instance>
<presentation name="sampleProblem" maxConstraintArity="2"
maximize="false" format="XCSP 2.1_FRODO" />
<agents nbAgents="3">
<agent name="agentX" />
<agent name="agentY" />
<agent name="agentZ" />
</agents>
<domains nbDomains="1">
<domain name="three_colors" nbValues="3">1..3</domain>
</domains>
<variables nbVariables="3">
<variable name="X" domain="three_colors" agent="agentX" />
<variable name="Y" domain="three_colors" agent="agentY" />
<variable name="Z" domain="three_colors" agent="agentZ" />
</variables>
<relations nbRelations="1">
<relation name="NEQ" arity="2" nbTuples="3" semantics="soft" defaultCost="0">
infinity: 1 1|2 2|3 3
</relation>
</relations>
<constraints nbConstraints="3">
<constraint name="X_and_Y_have_different_colors" arity="2" scope="X Y" reference="NEQ" />
<constraint name="X_and_Z_have_different_colors" arity="2" scope="X Z" reference="NEQ" />
<constraint name="Y_and_Z_have_different_colors" arity="2" scope="Y Z" reference="NEQ" />
</constraints>
</instance>
Fig. 4.1: Un esempio di file di configurazione XCSP (sottoinsieme ristretto di XCSP) [36]
47
Il parser JaCoPxcspParser rende possibile esprimere i vincoli con una sintassi più ricca, includendo
vincoli intensionali basati su predicati, funzioni, oltre che vincoli globali. In Fig. 4.2 è mostrato lo stesso
esempio illustrato in Fig. 4.1, ma con l’utilizzo del sottoinsieme esteso di XCSP. Ci sono due differenze
rispetto alla precedente rappresentazione.

La sezione <predicates> è l’equivalente hard intensionale delle relazioni soft estensionali. Ogni
predicato dichiara una lista di parametri, preceduti dal loro tipo (per il momento è supportato
unicamente il tipo intero). L’espressione funzionale è un’espressione logica dei parametri che
definisce il vincolo. Sono supportate le seguenti operazioni, combinabili ricorsivamente per
comporre espressioni complesse: valore assoluto, valore opposto, somma, sottrazione,
moltiplicazione, divisione intera, modulo, potenza, valore minimo, valore massimo, uguaglianza,
non uguaglianza, disuguaglianza, disuguaglianza stretta, NOT logico, AND logico, OR logico,
XOR logico, equivalenza logica e costrutto if-then-else.
<instance>
<presentation name="sampleProblem" maxConstraintArity="2"
maximize="false" format="XCSP 2.1_FRODO" />
<agents nbAgents="3">
<agent name="agentX" />
<agent name="agentY" />
<agent name="agentZ" />
</agents>
<domains nbDomains="1">
<domain name="three_colors" nbValues="3">1..3</domain>
</domains>
<variables nbVariables="3">
<variable name="X" domain="three_colors" agent="agentX" />
<variable name="Y" domain="three_colors" agent="agentY" />
<variable name="Z" domain="three_colors" agent="agentZ" />
</variables>
<predicates nbPredicates="1">
<predicate name="NEQ">
<parameters> int X1 int X2 </parameters>
<expression>
<functional> ne(X1, X2) </functional>
</expression>
</predicate>
</predicates>
<constraints nbConstraints="3">
<constraint name="X_and_Y_have_different_colors" arity="2" scope="X Y" reference="NEQ" >
<parameters> X Y </parameters>
</constraint>
<constraint name="X_and_Z_have_different_colors" arity="2" scope="X Z" reference="NEQ" >
<parameters> X Z </parameters>
</constraint>
<constraint name="Y_and_Z_have_different_colors" arity="2" scope="Y Z" reference="NEQ" >
<parameters> Y Z </parameters>
</constraint>
</constraints>
</instance>
Fig. 4.2.: Un esempio di file di configurazione XCSP (sottoinsieme esteso di XCSP) [36]
48

Ogni elemento <constraint> deve dichiarare una lista di parametri, che possono essere variabili o
valori costanti, nell’ordine corrispondente in cui sono dichiarati nel predicato corrispondente.
Da notare infine che il parser JaCoPxcspParser supporta ancora le relazioni soft estensionali, così come
supporta le funzioni, che sono l’equivalente soft intensionale delle relazioni soft estensionali.
FRODO necessita in input anche di un file di configurazione degli agenti che definisce l’algoritmo da
utilizzare, oltre che diversi altri parametri (quando applicabili). In Fig. 4.3 è mostrato un esempio di file
di configurazione, che corrisponde all’implementazione classica dell’algoritmo DPOP.
Le prestazioni possono essere valutate misurando seguenti metriche.




Numero e dimensione dei messaggi inviati: il numero totale dei messaggi inviati ordinati per tipo, così
come lo spazio di memoria richiesto dal messaggio più grande, e la somma totale dello spazio
richiesto dalla tutti i messaggi inviati. L’utilizzo di questa metrica è però computazionalmente
molto oneroso, poiché misurare la dimensione dei messaggi richiede serializzazione.
Non-Cuncurrent Constraint Checks (NCCCs) [33]: ogni agente possiede un contatore dei controlli
effettuati localmente sui vincoli. Ogni messaggio inviato agli altri agenti contiene questo valore.
Quando un agente riceve un messaggio, aggiorna il proprio contatore utilizzando il valore
maggiore fra quello indicato dal proprio contatore e quello indicato nel messaggio ricevuto. Il
valore più grande ottenuto alla terminazione dell’algoritmo è utilizzato per ottenere una misura
del lavoro di ricerca concorrente. Tale misura può essere poi utilizzata per contare il numero di
NCCC (questo avviene diversamente per ogni algoritmo, in quanto dipende dalle particolari
operazioni che svolgono gli agenti), e incorpora lo sforzo computazionale locale di ogni agente.
Questa metrica non è supportata dal parser JaCoPxcspParser, ma solo dal parser XCSPparser.
Tempo simulato [34]: quando un agente invia un messaggio, aggiunge a esso un timestamp che
indica il momento in cui il messaggio è stato inviato secondo il proprio orario, rilevato dal
proprio orologio interno. Quando riceve un messaggio, se il timestamp associato riporta un
orario maggiore rispetto all’ora indicata dal proprio orologio interno, l’agente aggiorna il proprio
orario in modo che corrisponda al timestamp del messaggio appena ricevuto. Quando
l’algoritmo termina, il tempo di esecuzione è determinato dall’orario maggiore scelto fra quelli
indicati dagli orologi interni di tutti gli agenti.
Altre statistiche: diversi moduli di algoritmi possono riportare altre informazioni sul problema. Ad
esempio, nel caso di DPOP, il modulo di generazione DFS può riportare in formato DOT [35]
l’albero DFS costruito e utilizzato dall’algoritmo, mentre il modulo di propagazione dei
messaggi VALUE può riportare l’assegnamento ottimo delle variabili del DCOP e la
corrispondente utilità (o costo) totale.
49
<agentDescription className = "frodo2.algorithms.SingleQueueAgent"
measureTime = "true" measureMsgs = "false" >
<parser parserClass = "frodo2.algorithms.XCSPparser"
displayGraph = "false"
utilClass = "frodo2.solutionSpaces.AddableInteger"
countNCCCs = "false" />
<modules>
<module className = "frodo2.algorithms.varOrdering.dfs.DFSgenerationParallel"
reportStats = "true" >
<rootElectionHeuristic
className = "frodo2.algorithms.heuristics.ScoringHeuristicWithTiebreaker" >
<heuristic1
className = "frodo2.algorithms.heuristics.MostConnectedHeuristic" />
<heuristic2
className = "frodo2.algorithms.heuristics.ScoringHeuristicWithTiebreaker" >
<heuristic1
className = "frodo2.algorithms.heuristics.SmallestDomainHeuristic" />
<heuristic2
className = "frodo2.algorithms.heuristics.VarNameHeuristic" />
</heuristic2>
</rootElectionHeuristic>
<dfsGeneration className = "frodo2.algorithms.varOrdering.dfs.DFSgeneration" >
<dfsHeuristic className =
"frodo2.algorithms.varOrdering.dfs.DFSgeneration$ScoreBroadcastingHeuristic">
<scoringHeuristic
className = "frodo2.algorithms.heuristics.ScoringHeuristicWithTiebreaker" >
<heuristic1
className = "frodo2.algorithms.heuristics.MostConnectedHeuristic" />
<heuristic2
className = "frodo2.algorithms.heuristics.SmallestDomainHeuristic" />
</scoringHeuristic>
</dfsHeuristic>
</dfsGeneration>
</module>
<module className = "frodo2.algorithms.dpop.UTILpropagation"
reportStats = "true" />
<module className = "frodo2.algorithms.dpop.VALUEpropagation"
reportStats = "true" />
</modules>
</agentDescription>
Fig. 4.3: Un esempio di file di configurazione di FRODO corrispondente all’algoritmo DPOP
[36]
50
4.1.1.
.1. ARCHITETTURA DI FRODO
La struttura di FRODO è basata su un’architettura multistrato modulare (Fig.
Fig. 4.4
4.4). In particolare,
questa architettura si compone di tre strati: lo strato di comunicazione, lo strato degli spazi delle
soluzioni e lo strato degli algoritmi.
Lo strato di comunicazione,, responsabile dello scambio di informazioni fra gli agenti, è implementato
come una coda di messaggi Java. Tipicamente ogni agente possiede una coda, che utilizza per ricevere e
inviare messaggi. Ogni coda possiede il proprio processo di esecuzione, perciò particolare attenzione è
stata posta nell’evitare che i processi potessero bloccarsi per lungo tempo in attesa di messaggi, in mod
modo
da limitare le implicazioni sulla performance
performanc dovute all’avere un solo thread per agente, nel caso di
problemi dove un grande numero di agenti risiede sulla stessa JVM.
Lo strato degli spazi delle soluzioni fornisce le classi per modellare i problemi di ottimizzazione
combinatoria. Dato uno spazio di possibili assegnamenti ad alcune variabili, uno spazio delle soluzioni è
una rappresentazione di assegnamenti tali che questi corrispondano a delle soluzioni del dato problema.
Nel contesto di problemi di ottimizzazione, gli spazi delle soluzioni sono associati
ssociati alle utilità (o costi), in
modo da poter valutare la qualità di ogni soluzione. Tra le diverse implementazioni degli spazi delle
soluzioni in FRODO, la più semplice è quella ad
a ipercubo,, ossia una rappresentazione estensionale di
uno spazio in cui a ogni combinazione di assegnamenti delle variabili è associata un’utilità (o costo). Gli
assegnamenti non ammissibili possono essere rappresentati tramite uno speciale costo infinito. Gli
spazi delle soluzioni possono essere espressi anche in maniera intensionale,
intensionale, basandosi sui vincoli JaCoP.
Lo strato degli algoritmi,, infine, si occupa dell’implementazione vera e propria degli algoritmi distribuiti
utilizzati per risolvere i DCOP. Ogni algoritmo è implementato come uno o più moduli, i quali sono a
tutti gli effetti delle politiche algoritmiche che descrivono come gli agenti devono comportarsi alla
ricezione dei vari messaggi, e quali messaggi devono inviare agli altri agenti o agli altri
Fig.4.4 : Architettura generale di FRODO [36]
51
moduli. Questa struttura modulare rende possibile un alto grado di personalizzazione degli algoritmi,
oltre che il riutilizzo e la manutenzione del codice. Fra gli algoritmi supportati da FRODO, in questo
lavoro sono stati utilizzati: ADOPT, DPOP, SynchBB, MGM e MGM-2. Inoltre, nella Sezione 4.3 si
descrive la modifica all’algoritmo ADOPT che ha reso possibile la risoluzione della formulazione
DDCOP del problema di gestione del comfort termoigrometrico in FRODO.
4.2. ADOPT
ADOPT (Asynchronous Distributed OPTimization) [37] è un algoritmo che termina sempre producendo un
risultato, e in grado di trovare una soluzione ottimale a un problema DCOP, o almeno una soluzione a
una distanza massima dall’ottimo definita dall’utente, utilizzando comunicazioni locali asincrone e con
complessità spaziale polinomiale per ogni agente. Invece di agire sul grafo dei conflitti (un grafo
costruito facendo corrispondere uno specifico nodo a ogni variabile, e tracciando un arco tra due nodi
se esiste almeno un conflitto fra gli assegnamenti delle variabili corrispondenti), ADOPT costruisce un
albero di ricerca in profondità (Depth First Search) che definisce un ordinamento tra gli agenti attraverso i
rapporti di parentela tra i nodi dell’albero (che rappresentano appunto gli agenti). La comunicazione è
locale giacché un agente non scambia messaggi con tutti gli altri, ma solo con il nodo padre e i nodi
figlio nell’albero DFS.
L’idea principale dietro ADOPT è di agire in modo asincrono permettendo a ogni agente di cambiare il
valore assegnato alla propria variabile quando scorge la possibilità di trovare una soluzione migliore
rispetto a quella attuale. Questa strategia di ricerca permette asincronismo perché un agente non
necessita una conoscenza globale del problema per prendere una decisione riguardo al suo problema
locale. Dato che questa strategia permette di abbandonare soluzioni prima che sia provata la loro
ottimalità locale, è possibile che alcune di esse siano riutilizzate. La seconda idea chiave in ADOPT è
quindi quella di ricostruire in maniera efficiente soluzioni considerate precedentemente (con
complessità spaziale polinomiale) attraverso l’uso di una soglia di backtrack, cioè una tolleranza sul costo
della soluzione che previene l’utilizzo di backtracking indiscriminato. La terza caratteristica principale di
ADOPT consiste nel fornire un meccanismo di individuazione della terminazione all’interno
dell’algoritmo stesso: gli agenti terminano infatti quando trovano una soluzione completa il cui costo è
al di sotto della loro soglia di backtrack.
Lo svantaggio principale di ADOPT è la sua complessità in termini di messaggi scambiati, che cresce
esponenzialmente rispetto al numero degli agenti (mentre lo spazio utilizzato dai messaggi e la memoria
richiesta per ogni agente cresce linearmente). Per questa ragione l’algoritmo degrada significativamente
in prestazioni al crescere del numero degli agenti.
52
4.2.1. FUNZIONAMENTO DI ADOPT
I messaggi scambiati fra gli agenti sono:



messaggi VALUE: inviati da un nodo verso i propri figli, percorrendo quindi l’albero DFS
dall’alto verso il basso. Contengono il valore assegnato dall’agente alla propria variabile
messaggi COST: inviati da un nodo verso il proprio padre, percorrendo quindi l’albero DFS dal
basso verso l’alto. Contengono il valore che rappresenta il costo della scelta effettuata dal nodo
genitore sommato ai costi delle scelte effettuate da tutti i nodi figli. Servono inoltre per calcolare
i limiti inferiori e superiori utilizzati dagli agenti per guidare il backtracking
messaggi THRESHOLD: inviati da un nodo verso i propri figli, percorrendo quindi l’albero DFS
dall’alto verso il basso. Servono per ridurre ridondanze nella ricerca notificando la soglia di
backtrack.
Ogni agente mantiene traccia degli assegnamenti dei vicini con priorità maggiore attraverso un
contesto, ovvero una soluzione parziale contenente gli assegnamenti noti. Tale contesto viene
aggiornato dall’agente ogni qualvolta viene ricevuto un messaggio VALUE dal nodo padre oppure
quando l’agente decide di cambiare il valore della propria variabile in seguito alla ricezione di un
messaggio COST da un nodo figlio. L’algoritmo giunge al termine quando i limiti inferiore e
superiore dell’agente al nodo radice sono uguali, il che significa che è stata trovata la soluzione
ottima.
4.3. ESTENSIONE DI ADOPT PER PROBLEMI DDCOP
In [38] è descritta in forma teorica una possibile modifica all’algoritmo ADOPT, che ha lo scopo di
implementare le caratteristiche di un DDCOP partendo dalla base di una sequenza di DCOP singoli.
Uno degli scopi di questo lavoro è stato analizzare e implementare in un software scritto in Java tale
procedura, in modo da avere a disposizione uno strumento pratico per la risoluzione di DDCOP,
sebbene compatibile con il solo algoritmo ADOPT. L’implementazione di questa procedura, o di una
simile, si rende necessaria per la soluzione di un DDCOP all’interno di FRODO, perché altrimenti non
si avrebbe a disposizione uno strumento o un processo che tenga conto delle informazioni condivise tra
un DCOP e il successivo nella sequenza. In altre parole, per poter risolvere una sequenza di DCOP
come un unico problema considerato un “DCOP dinamico” non sono sufficienti i normali algoritmi di
risoluzione dei DCOP presenti in FRODO, ma abbiamo bisogno di un software aggiuntivo che gestisca
le informazioni condivise tra i problemi della sequenza, e ottimizzi lo svolgimento del problema
utilizzando al meglio queste informazioni. Nel seguito è descritta in dettaglio la procedura ReuseBounds, oltre al funzionamento del relativo software progettato e implementato in questo lavoro.
53
4.3.1. REUSE-BOUNDS
La procedura Reuse-Bounds interagisce con l’esecuzione dell’algoritmo ADOPT, e riduce la
complessità della risoluzione di un DCOP ricavando alcune informazioni dall’iterazione precedente
dell’algoritmo e utilizzandole nel problema successivo.
In particolare, al momento della costruzione dello pseudo-albero di un DCOP, utilizzando ReuseBounds si identificano i nodi dell’albero corrispondenti agli agenti che non sono stati influenzati dal
cambiamento di contesto del DCOP (affected agents), e si fissano i lower bound e gli upper bound
relativi alle variabili di quegli agenti, in modo che vengano mantenute dall’iterazione precedente e non
siano modificate in quella successiva. Dopodiché sono inizializzati tutti bound relativi agli agenti non
influenzati, e il DCOP risultante viene risolto secondo il normale funzionamento di ADOPT, tenendo
conto delle modifiche precedentemente esposte. La scelta degli agenti influenzati avviene secondo i
seguenti criteri:



Un agente condivide un vincolo, un nuovo vincolo o un vincolo cancellato con un altro agente,
e il costo di questo vincolo è cambiato.
L’insieme dei figli dell’agente è cambiato rispetto allo pseudo-albero precedente.
Un discendente dell’agente è un agente influenzato.
Gli agenti influenzati non possono riutilizzare i loro lower bound e upper bound, poiché il loro costo
ottimo può essere diverso dal DCOP precedente, perciò i bound sul costo ottimo possono non essere
più validi.
4.3.2. IMPLEMENTAZIONE DELLE MODIFICHE
Di seguito viene brevemente descritto il funzionamento del software, sviluppato in Java, che
implementa la procedura Reuse-Bounds all’interno dell’algoritmo ADOPT. Queste modifiche sono
state apportate al codice sorgente del framework FRODO, relativamente ai file riguardanti l’algoritmo
ADOPT e ad alcuni file generali di configurazione. Questa versione modificata di FRODO interagisce
con il generatore di DCOP descritto nella Sezione 5.2.
1. Il generatore di DCOP crea una successione di DCOP, in numero maggiore di 1, e li invia
all’interfaccia di FRODO comunicando la scelta della versione modificata di ADOPT come
algoritmo di risoluzione.
2. Il primo DCOP della serie viene processato e risolto normalmente da ADOPT.
3. Il sistema memorizza la struttura dello pseudo-albero e i valori memorizzati di lower bound e
upper bound di tutti gli agenti della prima iterazione dell’algoritmo.
4. E’ avviata l’iterazione di ADOPT che deve risolvere il problema successivo della sequenza.
5. Nella costruzione dello pseudo-albero, ADOPT lo analizza e lo confronta con lo pseudo-albero
precedentemente memorizzato; quindi stabilisce quali sono gli agenti influenzati secondo i
criteri della procedura Reuse-Bound, e li segnala a FRODO con appositi flag.
54
6. Al momento dell’inizializzazione dei lower bound e upper bound degli agenti, quelli segnalati
come non influenzati sono inizializzati con i valori precedentemente memorizzati.
7. Per gli agenti non influenzati vengono ignorate le parti dell’algoritmo che hanno la funzione di
stabilire i bound del costo ottimo.
8. L’iterazione di ADOPT termina, e se è presente un altro DCOP nella sequenza si riparte dal
punto 4.
4.4. ALTRI ALGORITMI DI RISOLUZIONE
In questa sezione si descrivono brevemente gli altri algoritmi di risoluzione di DCOP utilizzati in questa
tesi, che si dividono tra algoritmi ottimi, che trovano la soluzione ottima se ne esiste una, e incompleti,
che non garantiscono di trovare la soluzione ottima ma richiedono generalmente meno complessità di
calcolo.
4.4.1. DPOP
DPOP (Dynamic Programming Optimization Protocol) [39] è un algoritmo ottimo basato sulla
programmazione dinamica. Si avvale di un metodo a propagazione di utilità, ispirato dagli algoritmi
Sum-Product [40] e DTREE [41], i quali però sono corretti solo per reti di vincoli a forma d’albero,
mentre DPOP ne estende l’utilizzo a topologie arbitrarie adoperando un arrangiamento a pseudoalbero possibile a partire da un qualsiasi grafo dei vincoli del problema.
L’algoritmo si divide in tre fasi: la costruzione dello pseudo-albero, la propagazione delle utilità e la
propagazione dei valori. Durante la fase di propagazione delle utilità, gli agenti inviano, partendo dalle
foglie dello pseudo-albero, messaggi UTIL ai propri genitori. Tali messaggi rappresentano un vettore
delle utilità che possono essere ottenute dai sottoalberi con radice nei corrispondenti agenti,
compatibilmente con ogni valore assegnabile dal nodo genitore. Le utilità vengono propagate risalendo
l’albero, fino a quando il nodo radice riceve tutti i messaggi UTIL in arrivo dai propri figli. A questo
punto, in accordo con le informazioni ricevute, il nodo radice assegna alla propria variabile il valore che
massimizza l’utilità del proprio sotto-albero. La sua scelta è poi notificata attraverso l’invio di un
messaggio VALUE ai propri figli, i quali a loro volta, ricevuto il messaggio VALUE dai propri genitori,
scelgono il valore ottimo per la propria variabile e propagano ai figli la propria scelta, fino a raggiungere
le foglie dell’albero. Il punto di forza di DPOP riguarda la complessità in termini di numero di messaggi
scambiati, che cresce linearmente rispetto all’altezza dello pseudo-albero, generando quindi un basso
overhead di comunicazione. Tuttavia le performance possono essere influenzate dalla dimensione dei
messaggi UTIL, che cresce esponenzialmente rispetto alla larghezza dello pseudo-albero.
55
4.4.2. MGM
MGM (Maximum Gain Messages) [42] è un algoritmo che non garantisce di trovare la soluzione ottima, se
esiste. Nasce da una modifica di un altro algoritmo, Distributed Breakout Algorithm (DBA) [43], il quale
però non può essere applicato a sistemi realmente distribuiti, poiché richiede una conoscenza globale
della qualità della soluzione.
MGM prende spunto dalla teoria dei giochi, in quanto i DCOP vengono modellati come giochi in cui i
giocatori sono le variabili controllate dagli agenti, le azioni sono gli assegnamenti di valori, e le
informazioni note sono i valori noti degli agenti vicini. In questo modo, una soluzione corrisponde a un
equilibrio di Nash del problema rappresentato.
L’esecuzione dell’algoritmo è suddivisa in round: a ogni round gli agenti calcolano la propria utilità
locale, cioè il massimo valore di utilità ottenibile cambiando l’assegnamento attuale del proprio contesto
(l’insieme delle variabili appartenenti agli agenti vicini di cui un agente conosce l’assegnamento). Poi, gli
agenti inviano un messaggio a tutti i vicini, indicando se l’assegnamento sortirà un guadagno o no. Un
assegnamento è eseguito solo dall’agente che ne trarrà il maggior guadagno. L’algoritmo termina se non
esiste nessun ulteriore assegnamento che può generare un guadagno. Un aspetto molto importante di
MGM riguarda la monotonicità dell’utilità globale rispetto al numero di round: in qualunque momento
l’algoritmo sia interrotto, la soluzione trovata sino a quel momento sicuramente non è peggiore di una
soluzione trovata in un round precedente.
4.4.3. MGM-2
Come MGM, anche MGM-2 [42] è un algoritmo non ottimo basato sulla teoria dei giochi. Mentre in
MGM gli agenti puntano a massimizzare soltanto la propria utilità, unilateralmente, in MGM-2 ogni
agente è coordinato con un altro. A ogni round, gli agenti vengono divisi casualmente tra offerenti e
riceventi; ogni offerente poi, sceglie casualmente un vicino a cui mandare un’offerta, la quale contiene i
valori consigliati per l’offerente e il ricevente che porterebbero ad un aumento dell’utilità dell’offerente.
Se il messaggio è inviato a un agente ricevente, questo calcola il guadagno in utilità globale per ogni
coppia di valori nell’offerta (se invece l’offerta è ricevuta da un altro offerente, sarà semplicemente
scartata). Se il guadagno globale massimo è positivo, il ricevente accetta l’offerta inviando un messaggio
ACCEPT, ed entrambi assegnano alle proprie variabili i nuovi valori; in caso contrario il ricevente
rifiuta con un messaggio REJECT. Anche MGM-2 rispetta l’importante caratteristica di monotonicità
dell’utilità globale. Rispetto a MGM, il costo in messaggi scambiati con quest’algoritmo è molto
maggiore, ma in generale MGM-2 trova soluzioni qualitativamente migliori.
56
4.4.4. SynchBB
SynchBB (Synchronous Branch and Bound) [44] è un algoritmo ottimo pensato inizialmente per
risolvere problemi di soddisfacimento di vincoli distribuiti (DCSP) caratterizzati da un elevato numero
di vincoli, adottando un approccio per problemi di soddisfacimento parziale di vincoli distribuiti
(DPCSP). Un DPCSP è formulato partendo da un DCSP per il quale non esistono soluzioni
ammissibili. Introducendo una relazione di priorità fra i vincoli, nel caso non sia possibile trovare una
soluzione ammissibile per il problema di partenza, si possono rilassare i vincoli di priorità minore, fino
a trovare una soluzione che soddisfi i vincoli di priorità maggiore.
SynchBB simula il noto approccio Branch and Bound in ambiente distribuito. Gli agenti, che comunicano
attraverso uno schema che riflette il grafo dei conflitti, costruiscono in maniera incrementale un
percorso, cioè un assegnamento di valori per le variabili del problema. A ogni iterazione il percorso (che
contiene anche il numero di vincoli violati) viene valutato ed eventualmente esteso o modificato
attraverso ulteriori assegnamenti. Un percorso di lunghezza n (con n uguale al numero degli agenti)
corrisponde alla soluzione del problema. Dato che SynchBB simula l’approccio Branch and Bound in
ambiente distribuito, appare evidente che si tratti di un algoritmo corretto. Inoltre il controllo
sequenziale degli agenti e l’ordinamento delle variabili permettono di esplorare l’intero spazio delle
soluzioni, garantendo così che l’algoritmo sia completo e ottimo.
Il maggior limite di SynchBB risiede nello schema di comunicazione: è necessario, infatti, che i messaggi
siano ricevuti nello stesso ordine nel quale sono stati inviati, così come anche le fasi computazionali
devono essere eseguite sequenzialmente, perciò l’algoritmo non può trarre vantaggio da alcun tipo di
parallelismo. In [45] questo approccio è stato esteso rendendo SynchBB adatto a risolvere i DCOP.
57
CAPITOLO 5
REALIZZAZIONI SPERIMENTALI E VALUTAZIONI
In questo capitolo sono mostrati i risultati di varie tipologie di test sperimentali che hanno lo scopo di
mostrare il corretto funzionamento del sistema implementato, e di valutare alcune caratteristiche e
prestazioni ottenute risolvendo varie categorie di problemi sotto diverse condizioni di funzionamento.
Nella Sezione 5.1 sono mostrate le caratteristiche dei due edifici su cui sono stati implementati i modelli
dell’ambiente su cui agisce il sistema. Nella Sezione 5.2 viene descritto il funzionamento del software
che genera i DCOP veri e propri a partire dalle istruzioni dell’utente, in modo che siano poi elaborati da
FRODO e dagli algoritmi di risoluzione.
La prima categoria di test, descritto nella Sezione 5.3, valuta il funzionamento del sistema: i test di
questa sezione controllano la correttezza del comportamento del sistema, sottoponendogli problemi
con obiettivi, anche non corrispondenti a situazioni realistiche, diversi di volta in volta, oltre a valutare
alcune caratteristiche generali del sistema, come il peso delle componenti della funzione di costo del
DCOP, o il diverso comportamento del sistema in termini di efficienza e complessità al variare dei
parametri temporali.
La categoria successiva, descritta nelle Sezioni 5.4 e 5.5, sottopone il sistema a due test realistici, ognuno
relativo a uno dei due edifici presi in esame, in cui tutti i parametri ambientali del sistema sono generati
casualmente, e i problemi devono raggiungere degli obiettivi verosimili pensati sulla base di condizioni
ambientali desiderabili nel corso di una giornata.
L’ultima categoria di test, descritta nella Sezione 5.6, si occupa di valutare alcune caratteristiche tecniche
riguardanti il funzionamento interno del sistema, come l’incremento della velocità del sistema quando si
utilizza la versione dell’algoritmo ADOPT in cui è implementata la procedura Reuse-Bounds, descritta
in questa tesi.
58
5.1. STRUTTURA DEGLI EDIFICI
Edificio A
Il primo edificio utilizzato per i test è un piccolo appartamento di un solo piano (Fig. 5.1), composto da
5 stanze, ognuna di esse corrispondente a una zona del modello utilizzato dal sistema: il soggiorno
(zona 1), il bagno (zona 2), due camere da letto (zone 3 e 5) e la cucina (zona 4). Ogni stanza è dotata di
una singola finestra, e il soggiorno è collegato da una porta a tutte le altre stanze, in nessuna delle quali
sono presenti altre porte. Lo schema dei collegamenti tra le stanze si può cioè definire “a stella” in cui il
soggiorno rappresenta il centro e tutte le altre stanze sono collegate esclusivamente ad esso. Il
soggiorno presenta anche un’ulteriore porta, l’ingresso dell’appartamento, che non è stata considerata ai
fini del problema. In Appendice A.1 è mostrato un esempio di DCOP relativo al modello dell’edificio
A.
Fig. 5.1: Piantina dell’edificio A
59
Edificio B
Il secondo edificio ha una struttura più insolita dell’appartamento sopra descritto: si tratta di una
sezione di un museo (Fig. 5.2), composto da 5 stanze, ognuna delle quali corrispondente a una zona del
problema, collegate tra loro “in serie”. Ogni galleria, tranne ovviamente la prima e l’ultima, è collegata
da porte unicamente alla galleria precedente e a quella successiva. Inoltre in ogni galleria è presente
esattamente una finestra. Anche qui la porta di ingresso alla prima zona, presente per motivi di
realismo, non viene considerata ai fini del problema. In Appendice A.2 è mostrato un esempio di
DCOP relativo al modello dell’edificio B.
Fig. 5.2: Piantina dell’edificio B
60
Queste due tipologie di edifici sono state scelte, oltre che per la loro relativa semplicità che le ha rese
adatte ad una valutazione generale del sistema, perché le architetture di molti edifici reali possono essere
viste come una combinazione dei due. Infatti la disposizione delle stanze “a stella” del primo edificio e
quella “in serie” del secondo sono tra quelle più comuni per quanto riguarda la maggior parte degli
edifici, e una valutazione del comportamento del sistema su tali architetture fornisce le basi per poterla
estendere a una grande parte di casi reali.
61
5.2. GENERATORE DI PROBLEMI
Il generatore di problemi DCOP è un software scritto in Java, che si occupa di generare i file XML che
descrivono i DCOP da risolvere, a partire da una serie di dati in parte inseriti dall’utente e in parte
generati casualmente. Inoltre invia i file direttamente a FRODO, riceve le soluzioni e i risultati ottenuti
dopo che i DCOP sono stati processati e risolti, e mostra in output all’utente le soluzioni trovate,
insieme con alcuni dati come i costi delle soluzioni e il tempo impiegato per risolvere i problemi.
Il generatore comprende al suo interno un simulatore ambientale che gestisce i dati che definiscono le
condizioni ambientali dell’edificio. Come illustrato in Fig. 5.3, il generatore riceve informazioni sia dai
dati inseriti dagli utenti che dal simulatore ambientale, e sulla base di questi dati crea uno o più file XML
e li invia a FRODO. Quando FRODO termina l’esecuzione di un DCOP, oltre a presentare l’output
del problema, invia i dati sul problema appena risolto al generatore DCOP, e i dati sulle condizioni
ambientali dell’intervallo di tempo successivo al simulatore ambientale.
I parametri determinabili dall’utente di cui tiene conto il generatore di DCOP (attraverso un semplice
file di testo di configurazione) sono i seguenti:







TIME_HORIZON: Indica la durata complessiva, in secondi, dell’orizzonte temporale su cui si
intende agire: nel caso il problema sia composto da un singolo DCOP è la sua durata, mentre se
si tratta di una serie di DCOP è la somma delle loro durate.
REP_INTERVAL: L’intervallo di ripianificazione, cioè la durata (in secondi) dell’intervallo tra
la risoluzione del DCOP e il successivo; da questo e dalla variabile precedente il generatore
ricava il numero dei DCOP di cui è composto il problema complessivo.
BUILDING: Variabile “flag” che indica se impostare il problema sul modello dell’edifico A o
dell’edificio B.
POWER_FACTOR: Parametro compreso tra 0 e 1 che indica il peso che la componente
riguardante la potenza riveste all’interno della funzione di costo del problema; più è alto, più il
sistema cercherà di minimizzare la potenza utilizzata, a scapito delle condizioni di comfort;
corrisponde al parametro γ descritto nella Sezione 3.5.
THERMO_FACTOR, HUM_FACTOR: Parametri compresi tra 0 e 1 che indicano il peso che
la componenti riguardanti rispettivamente il raggiungimento degli obiettivi termici e igrometrici,
rivestono all’interno della funzione di costo del problema; più sono alti, più il sistema cercherà
di raggiungere quelle condizioni di comfort a scapito della potenza utilizzata.
POWER_LIMIT: Il limite, misurato in Watt, della potenza totale utilizzabile dall’edificio. Nei
test che seguono è sempre impostato a 8000.
TARGET_T: Matrice di interi, in cui ogni riga corrisponde a una zona dell’edificio (quindi
sempre in numero di 5, nei test che seguono) e ogni colonna a uno degli intervalli di
ripianificazione in cui è suddiviso il problema. L’elemento i,j della matrice specifica la
temperatura assoluta che l’utente desidera sia raggiunta nella zona i, all’istante finale
dell’intervallo j. Ad esempio, se la riga 1 della matrice è { 15, 15, 15, 15, null, null } il sistema
dovrà cercare di raggiungere la temperatura di 15 °C alla fine del primo intervallo e di
mantenerla fino alla fine del quarto, dopodiché, durante gli ultimi due, sa che non deve
raggiungere alcun obiettivo specifico.
62

TARGET_H: Matrice di interi, in cui ogni riga corrisponde a una zona dell’edificio (quindi
sempre in numero di 5, nei test che seguono) e ogni colonna a uno degli intervalli di
ripianificazione in cui è suddiviso il problema. L’elemento i,j della matrice specifica l’umidità
relativa che l’utente desidera sia raggiunta nella zona i, all’istante finale dell’intervallo j. Ad
esempio, se la riga 1 della matrice è { 100, 100, 100, 100, null, null } il sistema dovrà cercare di
raggiungere un’umidità del 100% alla fine del primo intervallo e di mantenerla fino alla fine del
quarto, dopodiché, durante gli ultimi due, sa che non deve raggiungere alcun obiettivo specifico.
Fig. 5.3: Schema delle interazioni tra FRODO, il generatore di DCOP e il simulatore
ambientale
63
Il simulatore ambientale in considerazione molti altri parametri, che riguardano principalmente la
struttura e le caratteristiche degli edifici e dei dispositivi di gestione del comfort; questi parametri sono
stati stabiliti sulla base di esperimenti semplificati per valutare in modo empirico il comportamento di
temperatura e umidità all’interno di un edificio, e sono pensati per essere rimpiazzati dai loro
corrispettivi reali che dovranno essere impostati nel caso di una futura applicazione del progetto ad
un’istanza reale. I parametri, implementati da valori costanti all’interno del simulatore, sono
sinteticamente riassunti di seguito:








Coefficienti di potenza: Coefficienti numerici utilizzati dai vincoli e dalla funzione di costo per
calcolare la potenza utilizzata dai dispositivi dell’edificio a seconda della configurazione delle
rispettive variabili.
Coefficienti di variazione termica: Coefficienti numerici utilizzati dai vincoli e dalla funzione di costo
per calcolare la variazione di temperatura e il gradiente termico delle zone dell’edifico a seconda
della configurazione dei dispositivi di controllo termico.
Coefficienti di variazione igrometrica: Coefficienti numerici utilizzati dai vincoli e dalla funzione di
costo per calcolare la variazione di umidità relativa e il gradiente igrometrico delle zone
dell’edifico a seconda della configurazione dei dispositivi di controllo igrometrico.
Coefficienti delle zone confinanti: Coefficienti numerici utilizzati dai vincoli e dalla funzione di costo
per calcolare quanto temperatura e umidità sono influenzate dall’apertura delle porte delle zone
dell’edificio.
Coefficienti dell’ambiente esterno: Coefficienti numerici utilizzati dai vincoli e dalla funzione di costo
per calcolare quanto temperatura e umidità esterne influenzano l’ambiente interno dell’edifico,
quando vengono aperte le finestre delle zone.
Coefficienti di temperatura percepita: Coefficienti numerici utilizzati dai vincoli e della funzione di
costo per calcolare quanto, nelle varie zone dell’edificio, l’umidità dell’ambiente influenza la
temperatura percepita dall’uomo, e quindi modifica le condizioni termiche che il sistema deve
porsi come obiettivo.
Temperature e umidità iniziali: Le condizioni iniziali dell’edificio e dell’ambiente esterno, che
possono essere generate casualmente.
Gradienti di temperatura e umidità iniziali: Le condizioni iniziali dell’edificio e dell’ambiente esterno,
che possono essere generate casualmente.
Le variabili che il sistema restituisce in output sono le seguenti:





DCOP: Un singolo file XML o una serie di file XML, nel formato adatto ad essere processati
dal framework FRODO.
Costi dei DCOP risolti: Una serie di valori numerici che indicano i valori delle funzioni di costo
dei DCOP risolti da FRODO.
Tempi dei DCOP risolti: Una serie di valori numerici che indicano i tempi, in millisecondi,
impiegati da FRODO per risolvere i DCOP, e la somma totale di tali tempi.
Assegnamenti del DCOP: I valori assegnati alle variabili di ogni DCOP, una volta risolti.
Condizioni ambientali dell’edificio: Dati che descrivono le condizioni ambientali dell’edificio alla
fine di ogni intervallo di tempo corrispondente a un DCOP: quelli principali sono i valori di
temperatura assoluta, umidità relativa e gradienti di temperatura e umidità, ognuno di essi in
ogni zona dell’edificio.
64
5.2.1. MONDO DETERMINISITICO
Assumendo l’ipotesi di mondo deterministico per quando riguarda il modello dell’ambiente su cui il
sistema agisce, le modifiche apportate all’ambiente dopo la risoluzione di uno dei DCOP che
compongono il problema, non sono modificate o disturbate da fenomeni casuali; le condizioni
dell’ambiente a un dato intervallo di tempo sono cioè determinate in modo univoco dalle condizioni
ambientali durante l’intervallo precedente e dalle azioni svolte dagli agenti del sistema. Il funzionamento
del generatore di problemi, sotto l’ipotesi di mondo deterministico, è sintetizzato di seguito.
1. Sono stabiliti il numero e la durata dei DCOP che compongono il problema.
2. Sono modificati i parametri dipendenti dall’edificio scelto.
3. Sono generati (casualmente o meno) i valori di temperatura e umidità esterne, interne, e dei
gradienti di temperatura e umidità iniziali.
4. Ha inizio la generazione del DCOP.
5. Sono generati gli obiettivi da raggiungere, sotto forma di gradienti di temperatura e umidità per
ogni singola zona, dipendenti dalle matrici che indicano gli obiettivi desiderati dall’utente.
6. Sono creati agenti, domini, variabili, vincoli e funzioni del DCOP.
7. Il file XML viene creato e inviato all’interfaccia di FRODO.
8. Sono ricevute e memorizzate le variabili di output dall’interfaccia di FRODO.
9. Sono modificati i valori di temperatura e umidità esterne, interne, e dei gradienti di temperatura
e umidità tenendo conto unicamente dell’assegnamento delle variabili del DCOP risolto.
10. Se a questo punto è presente un altro DCOP nella serie, si torna al punto 4.
5.2.2. MONDO STOCASTICO
Assumendo l’ipotesi di mondo stocastico, si aggiunge una dose di imprevedibilità alle condizioni
ambientali e ai risultati prodotti dalle azioni del sistema, per valutare il comportamento del sistema sotto
condizioni che rispecchiano più verosimilmente il mondo reale. Il funzionamento del generatore è
identico a quello descritto sopra, tranne per il punto 9, a cui va aggiunta un’ulteriore procedura: dopo
aver stabilito i valori modificati di temperatura assoluta e umidità relativa delle varie zone a seguito degli
assegnamenti nella soluzione del DCOP presente, a questi si aggiunge una certa quantità di “rumore”
che rappresenta l’imprevedibilità del mondo reale. Questa modifica è stata impostata a un valore
massimo di 2 (o -2) °C per la temperatura, e di 10% (o – 10%) per l’umidità. Gli intervalli [-2, +2] e [10, +10] sono quindi campionati con probabilità uniforme.
65
5.3. TEST SULLA CONSISTENZA
Di seguito sono mostrati i risultati di una serie di esempi riguardanti sia singole istanze di DCOP che
serie di DCOP collegati tra loro. I test appartenenti a questo gruppo sono tutti svolti su istanze
dell’edificio A, con condizioni ambientali variabili secondo gli scopi dei test, specificate di volta in volta
nelle singole descrizioni. L’algoritmo di risoluzione utilizzato per risolvere i DCOP è MGM, in quanto è
quello che utilizza meno risorse computazionali e garantisce la rapida risoluzione di qualsiasi istanza
della versione completa del DCOP. MGM non è un algoritmo completo, ma assicura l’ottenimento di
una soluzione in tempi brevi, se questa esiste.
5.3.1. TEST SUI DCOP
Questa serie di test ha lo scopo di dimostrare che il sistema raggiunge gli obiettivi di comfort e di
minimizzazione della potenza voluti dagli utenti, o si avvicina ad essi, e di mostrare i valori che assegna
alle variabili per raggiungere questi obiettivi. E’ inoltre illustrato il diverso comportamento del sistema a
seconda del valore del parametro che pesa l’importanza delle diverse componenti della funzione di
costo: la minimizzazione della potenza, il raggiungimento delle condizioni termiche desiderate, e delle
condizioni igrometriche desiderate. Le condizioni dell’ambiente rilevate per esaminare i risultati dei test
sono misurate dopo un intervallo di un’ora dall’avvio del DCOP. I parametri ambientali che non
svolgono un ruolo fondamentale ai fini dei test sono generati casualmente dal simulatore Java. Le
considerazioni sui test riguardanti riscaldamento, raffreddamento, umidificazione e deumidificazione
dell’ambiente sono esposte al termine della descrizione dei risultati. I valori Gradiente T e Gradiente Hum,
quando presenti, corrispondono alla velocità con cui stanno variando temperatura e umidità
nell’ambiente, nell’istante di tempo a cui si fa riferimento.
Riscaldamento ambiente
Scopo del test: Dato al sistema un obiettivo che prevede il riscaldamento a varie temperature delle
stanze dell’edificio, a partire da condizioni termiche uniformi e in generale da temperature più basse di
quelle desiderate, dimostrare che il sistema si avvicina effettivamente agli obiettivi, e mostrare i valori
che assegna alle variabili del DCOP. Nella Tab. 5.1 mostrati i risultati ottenuti nell’ambiente
dell’edificio, e confrontati con gli obiettivi del problema; nella Tab. 5.2 gli assegnamenti alle variabili per
mezzo dei quali si sono raggiunti questi obiettivi.
Condizioni iniziali: Temperatura iniziale di tutte le zone: 15 °C.
Obiettivo: Temperature: Zona 1: 21 °C; Zona 2: 22 °C; Zona 3: 23 °C; Zona 4: 24 °C; Zona 5: 25 °C
66
Tab. 5.1
Temperature
Temperatura
obiettivo [°C]
Temperatura
iniziale [°C]
Temperatura
finale [°C]
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
21
22
23
24
25
15
15
15
15
15
21
21
23
23
25
Gradiente
T iniziale
[°C/h]
+2
+2
+2
+2
+2
Gradiente
T finale
[°C/h]
+6
+6
+8
+8
+10
Tab. 5.2
Variabili
DCOP
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
Riscaldamento
Condiz.
Ventilazione
Umidificazione
Porte
Finestre
VERY_LOW
VERY_HIGH
OFF
VERY_LOW
NORMAL
OFF
OFF
HOT
HOT
HOT
LOW
NORMAL
VERY_LOW
OFF
OFF
OFF
OFF
OFF
OFF
OFF
O/O/S/O
OPEN
OPEN
SHUT
OPEN
SHUT
OPEN
SHUT
OPEN
OPEN
Raffreddamento ambiente
Obiettivo del test: Dato al sistema un obiettivo che prevede il raffreddamento a varie temperature
delle stanze dell’edificio, a partire da condizioni termiche uniformi e in generale da temperature più alte
di quelle desiderate, dimostrare che il sistema si avvicina effettivamente agli obiettivi, e mostrare i valori
che assegna alle variabili del DCOP (Tab. 5.3 e 5.4).
Condizioni iniziali: Temperatura iniziale di tutte le zone: 20 °C.
Obiettivo: Temperature: Zona 1: 11 °C; Zona 2: 12 °C; Zona 3: 13 °C; Zona 4: 14 °C; Zona 5: 15 °C
Tab. 5.3
Temperature
Temperatura
obiettivo [°C]
Temperatura
iniziale [°C]
Temperatura
finale [°C]
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
11
12
13
14
15
20
20
20
20
20
12
12
12
14
15
67
Gradiente
T iniziale
[°C/h]
0
0
0
0
0
Gradiente
T finale
[°C/h]
-7
-7
-7
-6
-4
Tab. 5.4
Variabili Riscaldamento
Condiz.
Ventilazione Umidificazione
Porte
Finestre
DCOP
VERY_COLD VERY_HIGH
Zona 1
OFF
HUM_HIGH O/O/O/S OPEN
VERY_COLD VERY_HIGH
Zona 2
OFF
OFF
OPEN
SHUT
VERY_COLD
VERY_HIGH
Zona 3
LOW
HUM_LOW
OPEN
OPEN
Zona 4
VERY_LOW VERY_COLD
OFF
OFF
OPEN
SHUT
VERY_HIGH
Zona 5
OFF
COLD
OFF
SHUT
SHUT
Umidificazione ambiente
Scopo del test: Dato al sistema un obiettivo che prevede il raggiungimento di vari livelli di umidità
delle stanze dell’edificio, a partire da condizioni di umidità uniformi con percentuali di umidità più
basse di quelle desiderate, dimostrare che il sistema si avvicina effettivamente agli obiettivi, e mostrare i
valori che assegna alle variabili del DCOP (Tab. 5.5 e 5.6).
Condizioni iniziali: Umidità iniziale di tutte le zone: 30%.
Obiettivo: Umidità: Zona 1: 35%; Zona 2: 40%; Zona 3: 45%; Zona 4: 50%; Zona 5: 55%
Tab. 5.5
Umidità
Umidità
obiettivo [%]
Umidità
iniziale [%]
Umidità finale
[%]
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
35
40
45
50
55
30
30
30
30
30
35
38
44
44
44
Tab. 5.6
Variabili
DCOP
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
Umidificazione
Porte
Finestre
OFF
HUM_LOW
HUM_HIGH
HUM_HIGH
HUM_HIGH
S/O/O/O
SHUT
OPEN
OPEN
OPEN
SHUT
OPEN
OPEN
OPEN
OPEN
68
Gradiente
Hum
iniziale
[%/h]
+2
+2
+2
+2
+2
Gradiente
Hum finale
[%/h]
+5
+8
+14
+14
+14
Deumidificazione ambiente
Scopo del test: Dato al sistema un obiettivo che prevede il raggiungimento di vari livelli di umidità
delle stanze dell’edificio, a partire da condizioni di umidità uniformi con percentuali di umidità più alte
di quelle desiderate, dimostrare che il sistema si avvicina effettivamente agli obiettivi, e mostrare i valori
che assegna alle variabili del DCOP (Tab. 5.7 e 5.8).
Condizioni iniziali: Umidità iniziale di tutte le zone: 70%.
Obiettivo: Umidità: Zona 1: 65%; Zona 2: 60%; Zona 3: 55%; Zona 4: 50%; Zona 5: 45%
Tab. 5.7
Umidità
Umidità
obiettivo [%]
Umidità
iniziale [%]
Umidità finale
[%]
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
65
60
55
50
45
70
70
70
70
70
62
59
56
49
46
Gradiente
Hum
iniziale
[%/h]
-7
-7
-7
-7
-7
Gradiente
Hum finale
[%/h]
-7
-10
-14
-20
-24
Tab. 5.8
Variabili
DCOP
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
Umidificazione
Porte
HUM_HIGH
O/O/S/O
OFF
OPEN
OFF
OPEN
DEHUM_HIGH
SHUT
DEHUM_HIGH
OPEN
Finestre
SHUT
SHUT
OPEN
OPEN
OPEN
Commento: I risultati ottenuti finora ci mostrano che il sistema si è comportato in maniera coerente,
in ogni caso in linea con gli obiettivi previsti. In molti casi i valori di temperatura e umidità derivanti
dalle soluzioni dei DCOP corrispondono esattamente a quelli specificati negli obiettivi, in altri,
soprattutto nel caso dell’umidità, si discostano moderatamente; le motivazioni per cui ciò avviene
saranno approfondite maggiormente nel corso di questa sezione. Alcune variabili del DCOP, in rari casi
hanno assunto valori in contrasto con l’obiettivo del problema (ad esempio nella Tab. 5.8
l’umidificazione nella Zona 1 assume il valore HUM_HIGH, quando il problema chiedeva di ridurre
l’umidità); ciò è dovuto alla discretizzazione dei valori (nell’esempio, la zona 1 era quella che doveva
diminuire l’umidità di un valore molto piccolo: -5%, perciò era minore la probabilità che esistesse una
soluzione effettiva per avvicinarsi all’obiettivo) e all’utilizzo di un algoritmo non ottimo.
69
Minimizzazione potenza
Scopo del test: Il test è composto da due istanze di un problema DCOP che hanno lo stesso obiettivo:
il riscaldamento di una particolare zona dell’edificio. Nel primo (Tab. 5.9) le condizioni ambientali sono
generate casualmente, mentre nel secondo (Tab. 5.10) la temperatura delle altre zone dell’edificio e
quella dell’ambiente esterno, insieme ai relativi gradienti, sono appositamente fissati in modo che
aprendo le porte e le finestre della zona in questione, questa si avvicinerà alla temperatura obiettivo. Il
sistema, che deve raggiungere l’obiettivo minimizzando la potenza utilizzata, nel secondo caso dovrà
necessariamente raggiungere l’obiettivo aprendo porte e finestre, poiché queste utilizzano meno
potenza di tutti gli altri dispositivi, e la potenza utilizzata sarà verosimilmente molto inferiore a quella
utilizzata nel primo caso. Il gradiente iniziale della temperatura è impostato a 0, dove specificato: in
quelle zone la variazione di temperatura dipenderà cioè esclusivamente dai dispositivi di controllo
termico, e non ci saranno variazioni dovute all’ambiente.
Istanza 1
Condizioni iniziali: Temperatura: Zona 1: 15 °C, gradiente T: 0 °C/h
Obiettivo: Temperatura: Zona 1: 20 °C
Tab. 5.9
Variabili Riscaldamento
DCOP
Zona 1
VERY_LOW
Condiz.
VERY_HOT
Ventilazione Umidificazione
OFF
HUM_HIGH
Porte
Finestre
O/O/S/O
SHUT
Risultati: Temperatura: Zona 1: 20 °C; Potenza utilizzata: 530 W (280 W senza contare
l’umidificazione)
Istanza 2
Condizioni iniziali: Temperatura: Zona 1: 15 °C; tutte le altre zone: 30 °C, gradiente T: tutte le zone:
0 °C/h
Obiettivo: Temperatura: Zona 1: 20 °C
Tab. 5.10
Variabili Riscaldamento
DCOP
Zona 1
OFF
Condiz.
OFF
Ventilazione Umidificazione
OFF
Risultati: Temperatura: Zona 1: 20 °C; Potenza utilizzata: 0 W
70
OFF
Porte
Finestre
O/O/O/S
OPEN
Commento: Il sistema si comporta come previsto, aprendo 3 porte su 4 e la finestra della stanza. A
tutte le altre variabili è assegnato il valore OFF, perciò la potenza utilizzata è nulla, dimostrando che
minimizzando la funzione obiettivo il sistema sceglie la soluzione che minimizza la potenza.
Peso delle componenti della funzione di costo
Scopo del test: A parità di condizioni iniziali e obiettivi del sistema, il test valuta il diverso
comportamento del sistema al variare del peso delle tre componenti della funzione di costo del DCOP.
In particolare, nella prima istanza (Tab. 5.11 e 5.12) i valori dei parametri della funzione di costo sono
quelli standard (corrispondenti al valore di default del parametro γ descritto in 3.5.), nella seconda (Tab.
5.13 e 5.14) è azzerato il coefficiente associato alla minimizzazione della potenza (il sistema cercherà
quindi di raggiungere i suoi obiettivi senza preoccuparsi della potenza utilizzata, inoltre viene eliminato
il limite massimo di potenza utilizzabile) e nella terza (Tab. 5.15 e 5.16) è aumentato il valore del
coefficiente della potenza (il sistema si preoccuperà prima di tutto di utilizzare meno potenza possibile,
a scapito del raggiungimento degli obiettivi del problema).
Istanza 1
Coefficiente minimizzazione potenza: 0.3
Condizioni iniziali: Temperatura iniziale di tutte le zone: 10 °C, umidità iniziale di tutte le zone: 20%.
Obiettivo: Temperatura di tutte le zone: 30 °C, umidità di tutte le zone: 60%.
Tab. 5.11
Comfort
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
Temperatura
inziale [°C]
10
10
10
10
10
Temperatura
finale [°C]
11
13
13
12
13
Umidità
iniziale [%]
20
20
20
20
20
Umidità
finale [%]
30
30
30
30
30
Tab. 5.12
Variabili
DCOP
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
Riscaldamento
Condiz.
Ventilazione
Umidificazione
Porte
Finestre
NORMAL
VERY_LOW
VERY_LOW
VERY_HIGH
VERY_HIGH
OFF
HOT
HOT
OFF
HOT
OFF
OFF
OFF
OFF
OFF
HUM_HIGH
HUM_HIGH
HUM_HIGH
HUM_HIGH
HUM_HIGH
O/S/S/O
OPEN
SHUT
SHUT
OPEN
SHUT
SHUT
SHUT
SHUT
SHUT
Risultati: Potenza utilizzata: 5000 W
71
Istanza 2
Coefficiente minimizzazione potenza: 0
Condizioni iniziali: Temperatura iniziale di tutte le zone: 10 °C, umidità iniziale di tutte le zone: 20%.
Obiettivo: Temperatura di tutte le zone: 30 °C, umidità di tutte le zone: 60%.
Tab. 5.13
Comfort
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
Temperatura
inziale [°C]
10
10
10
10
10
Temperatura
finale [°C]
21
21
21
21
21
Umidità
iniziale [%]
20
20
20
20
20
Umidità
finale [%]
30
30
30
30
30
Tab. 5.14
Variabili
DCOP
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
Riscaldamento
Condiz.
Ventilazione
Umidificazione
Porte
Finestre
VERY_HIGH
VERY_HIGH
VERY_HIGH
VERY_HIGH
VERY_HIGH
VERY_HOT
VERY_HOT
VERY_HOT
VERY_HOT
VERY_HOT
OFF
OFF
OFF
OFF
OFF
HUM_HIGH
HUM_HIGH
HUM_HIGH
HUM_HIGH
HUM_HIGH
S/S/S/S
SHUT
SHUT
SHUT
SHUT
OPEN
OPEN
OPEN
OPEN
OPEN
Risultati: Potenza utilizzata: 8750 W
Commento: Il sistema ha assegnato alle variabili del DCOP i valori che massimizzano il riscaldamento
e l’umidificazione dell’edificio, ottenendo in questo modo il massimo incremento possibile con quelle
condizioni ambientali e in quell’intervallo di tempo. La potenza utilizzata è molto elevata, e avrebbe
superato il limite massimo se il relativo vincolo fosse stato presente.
72
Istanza 3
Coefficiente minimizzazione potenza: 100
Condizioni iniziali: Temperatura iniziale di tutte le zone: 10 °C, umidità iniziale di tutte le zone: 20%.
Obiettivo: Temperatura di tutte le zone: 30 °C, umidità di tutte le zone: 60%.
Tab. 5.15
Comfort
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
Temperatura
inziale [°C]
10
10
10
10
10
Temperatura
finale [°C]
10
10
10
10
10
Umidità
iniziale [%]
20
20
20
20
20
Umidità
finale [%]
20
20
20
20
20
Tab. 5.16
Variabili
DCOP
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
Riscaldamento
Condiz.
OFF
OFF
OFF
OFF
OFF
OFF
OFF
OFF
OFF
OFF
Ventilazione Umidificazione
OFF
OFF
OFF
OFF
OFF
OFF
OFF
OFF
OFF
OFF
Porte
Finestre
O/S/O/S
OPEN
SHUT
OPEN
SHUT
OPEN
OPEN
OPEN
OPEN
OPEN
Risultati: Potenza utilizzata: 0 Wh
Commento: Come previsto il sistema ha agito unicamente sulle variabili corrispondenti alle porte e
finestre dell’edificio, che non utilizzano potenza, senza ottenere alcun risultato per quanto riguarda
l’incremento di temperatura e umidità.
73
5.3.2. TEST SULLE SERIE DI DCOP
In questo gruppo di test si verificherà che il sistema riesce a raggiungere gli stessi obiettivi dei DCOP
singoli, ma utilizzando più DCOP in successione per pianificare un graduale avvicinamento agli
obiettivi tenendo conto delle condizioni dell’ambiente nei vari intervalli di tempo, e del tempo che ha a
disposizione per raggiungere tali obiettivi.
Raggiungimento di un obiettivo tramite DCOP successivi
Scopo del test: In questo esperimento gli obiettivi di comfort da raggiungere saranno gli stessi dei test
sui DCOP singoli che riguardavano il riscaldamento e l’umidificazione dell’edificio, ma questi obiettivi
dovranno essere raggiunti al termine di un orizzonte temporale di 6 ore, con un intervallo di
ripianificazione della durata di 1 ora; cioè dovranno essere risolti 6 DCOP in successione (Tab. 5.17 e
5.18). Il test mostrerà quindi come si comporta il sistema quando deve raggiungere degli obiettivi
risolvendo vari DCOP singoli in successione. Le condizioni ambientali di ogni DCOP, tranne quello
iniziale, sono ricavate esattamente da quelle ottenute tenendo conto del risultato del DCOP precedente,
sotto l’ipotesi di mondo deterministico.
Condizioni iniziali: Temperatura iniziale di tutte le zone: 15 °C, umidità iniziale di tutte le zone: 30%
Obiettivo (al termine di un orizzonte temporale di 6 ore): Temperature: Zona 1: 21 °C; Zona 2: 22
°C; Zona 3: 23 °C; Zona 4: 24 °C; Zona 5: 25 °C; Umidità: Zona 1: 35%; Zona 2: 40%; Zona 3: 45%;
Zona 4: 50%; Zona 5: 55%
Tab. 5.17
Temperatura
Temperatura
iniziale[°C]
Temp T1
[°C]
Temp T2
[°C]
Temp
T3 [°C]
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
15
15
15
15
15
16
16
15
14
17
16
16
17
16
19
17
18
19
18
21
Temp Temp Temperatura
T4
T5
finale [°C]
[°C]
[°C]
19
21
21
20
22
23
21
24
24
21
23
23
23
25
25
Tab. 5.18
Umidità
Umidità
iniziale[%]
Hum T1
[%]
Hum T2
[%]
Hum T3
[%]
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
30
30
30
30
30
31
31
34
34
34
32
32
34
39
39
32
34
35
45
45
74
Hum Hum Umidità
T4
T5
finale
[%]
[%]
[%]
33
35
35
36
38
41
41
45
45
45
50
51
51
55
56
Commento: Il sistema ha raggiunto quasi tutti gli obiettivi del problema, con alcuni valori leggermente
diversi dagli obiettivi. Ciò può dipendere dalle condizioni ambientali e in particolari dai gradienti di
variazione di temperatura e umidità che sono stati generati casualmente in tutti i precedenti casi di test,
oppure dalla discretizzazione dei gradienti di temperatura e umidità dipendenti dalle variabili del
DCOP, come descritto nella Sezione 3.5, che non sono controllabili dal sistema con una granularità che
garantisca abbastanza precisione da raggiungere esattamente i valori voluti.
Efficienza e complessità al variare del numero dei DCOP
Scopo del test: In questo test si considerano tre istanze di un problema con obiettivi identici, tranne
che per il numero di DCOP successivi in cui il sistema deve risolverle, e per le variabili ambientali
(descritte nella Sezione 5.2) che sono generate casualmente, e che possono variare durante la
simulazione. L’obiettivo del sistema è di raggiungere una temperatura di 25 °C in tutte le stanze,
partendo da 15 °C, e un’umidità di 40% in tutte le stanze, partendo da 20%. La durata degli intervalli di
ripianificazione è sempre di un’ora. Nella prima istanza (Tab. 5.19 e 5.20) il sistema ha a disposizione
un solo DCOP; nella seconda (Tab. 5.21 e 5.22) l’orizzonte temporale è scomposto in 5 DCOP, e le
condizioni desiderate devono essere raggiunte entro la fine del terzo intervallo, e mantenute fino alla
fine. Nella terza istanza (Tab. 5.23 e 5.24) l’orizzonte temporale è scomposto in 10 DCOP, e le
condizioni desiderate devono essere raggiunte entro la fine del quinto intervallo, e mantenute fino alla
fine. L’efficienza del sistema è valutata calcolando un indice di efficienza definito come l’inverso della
media della differenza tra le condizioni di comfort desiderate e quelle ottenute (considerando allo stesso
modo temperatura e umidità) al termine di ogni intervallo in cui il sistema abbia un obiettivo da
raggiungere; la complessità è valutata dalla somma dei tempi di risoluzione dei DCOP.
Istanza 1
Numero DCOP: 1
Condizioni iniziali: Temperatura iniziale di tutte le zone: 15 °C, umidità iniziale di tutte le zone: 20%.
Obiettivo: Temperatura di tutte le zone: 25 °C, umidità di tutte le zone: 40%.
Tab. 5.19
Temperatura
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
Temperatura
iniziale[°C]
15
15
15
15
15
Temp T1
[°C]
22
15
21
17
17
75
Tab. 5.20
Umidità
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
Umidità
iniziale[%]
20
20
20
20
20
Hum T1 [%]
29
29
29
29
29
Risultati: Efficienza: 0.11; Tempo di esecuzione: 530 ms
Istanza 2
Numero DCOP: 5
Condizioni iniziali: Temperatura iniziale di tutte le zone: 15 °C, umidità iniziale di tutte le zone: 20%.
Obiettivo: Temperatura di tutte le zone: 25 °C a partire dall’intervallo 4, umidità di tutte le zone: 40% a
partire dall’intervallo 4.
Tab. 5.21
Temperatura
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
Temperatura
iniziale[°C]
15
15
15
15
15
Temp T4
[°C]
25
25
25
25
25
Temp T5
[°C]
24
25
25
25
25
Umidità
iniziale[%]
20
20
20
20
20
Hum T4 [%]
Hum T5 [%]
39
41
40
39
41
40
40
40
39
40
Tab. 5.22
Umidità
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
Risultati: Efficienza: 3.33; Tempo di esecuzione: 2309 ms
76
Istanza 3
Numero DCOP: 10
Condizioni iniziali: Temperatura iniziale di tutte le zone: 15 °C, umidità iniziale di tutte le zone: 20%.
Obiettivo: Temperatura di tutte le zone: 25 °C a partire dall’intervallo 6, umidità di tutte le zone: 40% a
partire dall’intervallo 6.
Tab. 5.23
Temperatura
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
Temperatura
iniziale[°C]
15
15
15
15
15
Temp T6
[°C]
26
25
26
25
25
Temp T7
[°C]
24
25
25
25
25
Temp T8
[°C]
25
25
25
25
25
Temp T9
[°C]
25
25
25
25
25
Temp T10
[°C]
25
25
24
25
24
Hum T9
[%]
40
40
41
40
40
Hum T10
[%]
41
40
40
40
40
Tab. 5.24
Umidità
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
Umidità
iniziale[%]
20
20
20
20
20
Hum T6
[%]
38
41
39
40
39
Hum T7
[%]
40
40
42
42
42
Hum T8
[%]
39
40
42
40
40
Risultati: Efficienza: 2.38; Tempo di esecuzione: 4759 ms
Commento: Basandosi su questi risultati, si può dedurre che per risolvere questo problema il miglior
compromesso tra efficienza e complessità sia costituito dalla seconda istanza, che raggiunge dei risultati
addirittura migliori dell’ultima, utilizzando meno DCOP e quindi ovviamente meno potenza di calcolo.
Effettuando questi test su più vasta scala e su specifici problemi, si possono ricavare conclusioni su
quali siano le caratteristiche più adatte per ogni singolo problema, per quanto riguarda il numero di
DCOP in cui è suddiviso.
77
Efficienza e complessità al variare della durata degli intervalli
Scopo del test: In questo test si considerano tre istanze di un problema con obiettivi identici, tranne
che per la durata dei quattro intervalli di ripianificazione corrispondenti ad altrettanti DCOP in cui il
sistema dovrà risolverle, e per le variabili ambientali che saranno generate casualmente. L’obiettivo del
sistema sarà raggiungere una temperatura di 25 °C in tutte le zone, partendo da 15 °C, e un’umidità di
40% in tutte le stanze, partendo da 20%. Gli intervalli di ripianificazione saranno quattro, in ogni
istanza, e gli obiettivi dovranno essere raggiunti a partire dal terzo intervallo, e mantenuti fino alla fine.
Nella prima istanza (Tab. 5.25 e 5.26) gli intervalli saranno di 1 ora, per un orizzonte totale di 4 ore.
Nelle istanze successive gli intervalli saranno di 2 ore (Tab. 5.27 e 5.28) e 4 ore (Tab. 5.29 e 5.30), per
un totale rispettivamente di 8 ore e 16 ore.
Istanza 1
Durata intervallo: 1 ora
Condizioni iniziali: Temperatura iniziale di tutte le zone: 15 °C, umidità iniziale di tutte le zone: 20%.
Obiettivo: Temperatura di tutte le zone: 25 °C a partire dall’intervallo 3, umidità di tutte le zone: 40% a
partire dall’intervallo 3.
Tab. 5.25
Temperatura
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
Temperatura
iniziale[°C]
15
15
15
15
15
Temp T3
[°C]
24
25
25
25
25
Temp T4
[°C]
27
30
26
27
25
Umidità
iniziale[%]
20
20
20
20
20
Hum T4 [%]
Hum T5 [%]
40
40
40
40
40
40
42
42
40
40
Tab. 5.26
Umidità
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
Risultati: Efficienza: 1.33; Tempo di esecuzione: 1933 ms
78
Istanza 2
Durata intervallo: 2 ore
Condizioni iniziali: Temperatura iniziale di tutte le zone: 15 °C, umidità iniziale di tutte le zone: 20%.
Obiettivo: Temperatura di tutte le zone: 25 °C a partire dall’intervallo 3, umidità di tutte le zone: 40% a
partire dall’intervallo 3.
Tab. 5.27
Temperatura
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
Temperatura
iniziale[°C]
15
15
15
15
15
Temp T3
[°C]
25
25
25
24
25
Temp T4
[°C]
25
25
25
24
25
Umidità
iniziale[%]
20
20
20
20
20
Hum T4 [%]
Hum T5 [%]
35
39
39
40
42
33
39
42
38
46
Tab. 5.28
Umidità
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
Risultati: Efficienza: 0.69; Tempo di esecuzione: 1975 ms
Istanza 3
Durata intervallo: 4 ore
Condizioni iniziali: Temperatura iniziale di tutte le zone: 15 °C, umidità iniziale di tutte le zone: 20%.
Obiettivo: Temperatura di tutte le zone: 25 °C a partire dall’intervallo 3, umidità di tutte le zone: 40% a
partire dall’intervallo 3.
Tab. 5.29
Temperatura
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
Temperatura
iniziale[°C]
15
15
15
15
15
Temp T3
[°C]
25
24
23
23
23
Temp T4
[°C]
25
23
22
23
23
79
Tab. 5.30
Umidità
Zona 1
Zona 2
Zona 3
Zona 4
Zona 5
Umidità
iniziale[%]
20
20
20
20
20
Hum T4 [%]
Hum T5 [%]
40
36
38
34
48
48
34
38
28
56
Risultati: Efficienza: 0.25; Tempo di esecuzione: 2052 ms
Commento: Il test dimostra che a intervalli di ripianificazione più lunghi corrisponde una graduale
perdita di efficienza, mentre la complessità di calcolo non subisce grandi variazioni. Le condizioni
dell’ambiente variano infatti molto più drasticamente tra un intervallo e l’altro, se aumenta la lunghezza
di quest’ultimo, e diminuisce quindi il controllo che il sistema ha su di esso, visto che le variazioni
imposte dal sistema possono agire sull’ambiente con minore frequenza nel tempo.
80
5.4. TEST REALISTICI SU MONDO DETERMINISTICO
Per ognuno dei seguenti test sono presentati prima i risultati di 5 esecuzioni del problema, in termini di
media e deviazione standard della differenza tra i valori di temperatura e umidità ottenuti e quelli
corrispondenti agli obiettivi di ogni intervallo di ripianificazione. A questi risultati, utili per valutare
l’efficienza generale del sistema per ogni test, segue poi la descrizione in dettaglio dei risultati della
prima delle 5 esecuzioni, in modo da poter mostrare più in dettaglio il funzionamento del sistema dal
punto di vista pratico lungo l’arco di una successione di DCOP, e di valutare le condizioni ambientali
ottenute dopo la risoluzione di ogni DCOP della successione.
5.4.1. EDIFICIO A
Il seguente test è costituito da un unico problema, composto di una serie di DCOP, il cui obiettivo è
gestire le condizioni termoigrometriche di tutte le stanze dell’appartamento raffigurato in Fig. 5.1
(edificio A) nell’arco di 24 ore. L’orizzonte temporale è stato perciò impostato a 24 ore, mentre
l’intervallo di ripianificazione ha una durata di 2 ore. Il funzionamento nell’arco di una giornata
corrisponde perciò alla risoluzione di 12 DCOP, uno ogni 2 ore (per esempio, il primo alle 2, il secondo
alle 4 e così via, fino a mezzanotte).
I parametri ambientali iniziali dell’interno e dell’esterno dell’edificio sono generati in modo
completamente casuale. Gli obiettivi, intesi come temperatura assoluta e umidità relativa che devono
essere raggiunti nelle varie stanze dell’edificio, sono invece stabiliti per essere verosimili e per garantire
condizioni ambientali ottimali agli orari e nei luoghi più adeguati alla vita domestica. Ad esempio, nel
soggiorno saranno desiderabili una temperatura di 20-22 °C e un’umidità del 40-60%, nel tardo
pomeriggio e alla sera, supponendo che questi siano gli orari in cui vi siano presenti abitanti, mentre in
cucina, dove per le attività che vi si svolgono solitamente si ha un’umidità dell’80% e temperature anche
elevate, bisognerebbe far scendere queste ultime tra i 18 e i 19 °C, mentre in camera da letto le
condizioni di comfort devono essere mantenute principalmente in orari notturni e mattinieri.
Lo scopo del test è valutare dettagliatamente, in condizioni realistiche, le prestazioni del sistema
nell’arco di una giornata, mostrando i risultati esatti ottenuti ad ogni intervallo. L’esperimento agisce
sotto l’ipotesi di mondo deterministico: cioè, le condizioni dell’ambiente a un dato intervallo di tempo
sono determinate in modo univoco dalle condizioni ambientali durante l’intervallo precedente e dalle
azioni svolte dagli agenti del sistema, senza alcuna variazione casuale se non per le condizioni
ambientali che naturalmente variano lungo l’arco di una giornata. Le condizioni ambientali all’inizio di
un dato intervallo di tempo sono perciò la diretta conseguenza delle decisioni prese dal sistema
nell’intervallo precedente.
La Fig. 5.4 mostra il grafico della media e della deviazione standard della differenza tra condizioni di
comfort ottenute e obiettivi, ottenuti da 5 esecuzioni del problema, per i valori di temperatura e
umidità.
81
6
5
4
Temperatura
3
Umidità
2
1
0
Differenza media
Deviazione standard
Fig. 5.4: Valutazione delle prestazioni del test dell’edificio A su mondo deterministico
I risultati mostrano valori medi e deviazioni standard intuitivamente accettabili: uno scarto medio di
meno di 1 °C rispetto alla temperatura desiderata, e di poco più del 2 % rispetto all’umidità desiderata.
Questi valori sono stati messi a confronto con quelli ottenuti dai successivi test; nelle seg
seguenti sezioni
sono fatte le relative valutazioni e considerazioni.
Le Tab. 5.31 mostrano le condizioni ottenute dal sistema nelle cinque stanze dell’appartamento, a ogni
intervallo di ripianificazione. I valori in grassetto sono quelli corrispondenti agli intervalli per i quali
sono state espressamente specificate dagli utenti le condizioni desiderate.
Tab. 5.31
Zona 1 - Soggiorno: T iniziale: 15 °C, Hum iniziale: 42%
Zona 1
Temperatura
obiettivo [°C]
Temperatura
ottenuta [°C]
Umidità obiettivo
[%]
Umidità ottenuta
[%]
02:00
04:00
06:00
08:00
10:00
12:00
14:00
16:00
18:00
20:00
22:00
24:00
20
20
22
22
-
14
14
14
14
16
16
18
20
20
22
23
23
60
60
40
40
-
47
50
51
52
54
56
60
60
59
39
35
31
82
Zona 2 - Bagno: T iniziale: 22 °C, Hum iniziale: 68%
Zona 2
Temperatura
obiettivo [°C]
Temperatura
ottenuta [°C]
Umidità obiettivo
[%]
Umidità ottenuta
[%]
02:00
04:00
06:00
08:00
10:00
12:00
14:00
16:00
18:00
20:00
22:00
24:00
20
22
22
20
18
18
20
20
20
20
20
19
21
22
19
18
19
19
19
19
19
19
60
80
80
60
20
20
60
60
60
60
68
58
68
79
69
33
17
21
46
62
59
59
Zona 3 – Camera da letto: T iniziale: 19 °C, Hum iniziale: 44%
Zona 3
Temperatura
obiettivo [°C]
Temperatura
ottenuta [°C]
Umidità obiettivo
[%]
Umidità ottenuta
[%]
02:00
04:00
06:00
08:00
10:00
12:00
14:00
16:00
18:00
20:00
22:00
24:00
15
15
15
15
15
18
14
15
15
15
12
11
11
11
14
15
16
17
100
100
100
100
100
80
64
99
100
100
100
100
100
100
100
100
100
81
Zona 4 - Cucina: T iniziale: 20 °C, Hum iniziale: 68%
Zona 4
Temperatura
obiettivo [°C]
Temperatura
ottenuta [°C]
Umidità obiettivo
[%]
Umidità ottenuta
[%]
02:00
04:00
06:00
08:00
10:00
12:00
14:00
16:00
18:00
20:00
22:00
24:00
16
16
16
16
16
16
16
-
20
16
16
16
16
16
16
16
13
11
9
8
40
40
40
40
40
40
40
-
58
48
38
39
39
39
39
39
39
39
39
42
83
Zona 5 – Camera da letto: T iniziale: 18 °C, Hum iniziale: 49%
Zona 5
Temperatura
obiettivo [°C]
Temperatura
ottenuta [°C]
Umidità obiettivo
[%]
Umidità ottenuta
[%]
02:00
04:00
06:00
08:00
10:00
12:00
14:00
16:00
18:00
20:00
22:00
24:00
15
15
15
15
15
18
16
16
16
16
16
16
16
16
16
15
17
17
100
100
100
100
100
80
69
99
100
100
100
100
100
100
100
96
84
72
Commento: I risultati ottenuti mostrano che il sistema, in ogni intervallo precedente a quello in cui è
presente un obiettivo specifico, indipendentemente dal numero di intervalli occorrenti per raggiungerlo,
cerca gradualmente di raggiungere l’obiettivo. La conseguenza di ciò è che il sistema raggiungerà più
facilmente le condizioni desiderate se ha a disposizione molto tempo “libero” in cui non ha obiettivi
immediati; ad esempio, nel soggiorno il sistema ha a disposizione il mattino e il primo pomeriggio per
raggiungere gradualmente le perfette condizioni desiderate all’orario voluto. La mancanza di
perturbazioni casuali nell’ambiente rende i risultati ottenuti molto stabili, ma in alcuni casi i valori non
risultano essere esattamente quelli voluti per via delle condizioni ambientali naturali, che di per sé
possono mutare da un intervallo all’altro poiché rappresentano le condizioni ambientali naturali nel
corso di una giornata, e delle intrinseche discretizzazione e limitazione dei valori con cui il sistema può
agire sull’ambiente, che solo in pochi casi gli permettono il controllo completo su di esso. Nello
specifico, il gradiente con cui la temperatura e l’umidità variano nel tempo è sempre il risultato della
combinazione tra quello ottenuto dai dispositivi di comfort dell’edificio, quello ambientale e quello
esterno (condizioni intrinseche dell’ambiente); gli ultimi due possono variare casualmente in ogni
intervallo di tempo. Poiché il sistema acquisisce le informazioni sul nuovo stato dell’ambiente
solamente nello stesso istante in cui comunica gli assegnamenti delle variabili che gestiscono i
dispositivi dell’edificio, può non avere il giusto preavviso per poter modificare in tempo le sue scelte a
lungo termine, dato che nel frattempo gli obiettivi da raggiungere potrebbero essere mutati per via delle
condizioni ambientali.
84
5.4.2. EDIFICIO B
Il seguente test è costituito da un unico problema, composto di una serie di DCOP, il cui obiettivo è
gestire le condizioni termoigrometriche di tutte le stanze della sezione di museo
museo raffigurata in Fig. 5.2
(edificio B)) nell’arco di 24 ore. L’orizzonte temporale
temporale è stato perciò impostato a 24 ore, mentre
l’intervallo di ripianificazione ha una durata di 2 ore. Il funzionamento nell’arco di una giornata
corrisponde perciò alla risoluzione di 12 DCOP, uno ogni 2 ore (per esempio, il primo alle 2, il secondo
alle 4 e così via, fino a mezzanotte).
I parametri ambientali iniziali dell’interno e dell’esterno dell’edificio sono generati in modo
completamente casuale. Gli obiettivi, intesi come temperatura assoluta e umidità relativa che devono
essere raggiunti nelle varie stanze dell’edificio, sono invece stabiliti per essere verosimili e per garantire
condizioni ambientali ottimali nei tipici orari di apertura di un luogo pubblico come un museo. A
differenza del problema precedente le condizioni desiderate di temperatura
temperatura e umidità delle varie gallerie
sono identiche tra loro, sia per quanto riguarda gli orari che i valori, che corrispondono a condizioni
molto confortevoli (simili a quelli del soggiorno dell’edificio A)) per tutta la loro durata.
Lo scopo del test e le condizioni sotto cui è svolto sono identici a quelli descritti per il test precedente
sull’edificio A. La Fig. 5.5 mostra il grafico della media e della deviazione standard della differenza tra
condizioni di comfort ottenute e obiettivi, ottenuti da 5 esecuzioni
cuzioni del problema, per i valori di
temperatura e umidità.
8
7
6
5
4
Temperatura
3
Umidità
2
1
0
Differenza media
Deviazione standard
Fig. 5.5: Valutazione delle prestazioni del test dell’edificio B su mondo deterministico
85
I valori ottenuti si confermano in linea con quelli dell’esperimento precedente: le deviazioni standard e
il valor medio dello scarto dell’umidità sono leggermente aumentati, a causa dei soliti elementi casuali e
non controllabili come l’utilizzo di un algoritmo non ottimo e le condizioni ambientali variabili.
Le Tab. 5.32 mostrano i risultati ottenuti nella prima esecuzione:
Tab. 5.32
Zona 1 – Galleria 1: T iniziale: 20 °C, Hum iniziale: 44%
Zona 1
Temperatura
obiettivo [°C]
Temperatura
ottenuta [°C]
Umidità obiettivo
[%]
Umidità ottenuta
[%]
02:00
04:00
06:00
08:00
10:00
12:00
14:00
16:00
18:00
20:00
22:00
24:00
20
20
20
22
22
22
20
-
20
20
20
20
20
22
22
21
20
20
20
20
60
60
60
40
40
40
60
-
47
52
58
60
59
47
41
41
41
62
72
83
Zona 2 - Galleria 2: T iniziale: 19 °C, Hum iniziale: 51%
Zona 2
Temperatura
obiettivo [°C]
Temperatura
ottenuta [°C]
Umidità obiettivo
[%]
Umidità ottenuta
[%]
02:00
04:00
06:00
08:00
10:00
12:00
14:00
16:00
18:00
20:00
22:00
24:00
20
20
20
22
22
22
20
-
19
19
20
20
20
22
22
22
21
20
20
20
60
60
60
40
40
40
60
-
54
56
61
61
59
46
38
40
41
64
75
85
86
Zona 3 – Galleria 3: T iniziale: 16 °C, Hum iniziale: 58%
Zona 3
Temperatura
obiettivo [°C]
Temperatura
ottenuta [°C]
Umidità obiettivo
[%]
Umidità ottenuta
[%]
02:00
04:00
06:00
08:00
10:00
12:00
14:00
16:00
18:00
20:00
22:00
24:00
20
20
20
22
22
22
20
-
17
18
20
20
20
21
22
21
20
19
17
16
60
60
60
40
40
40
60
-
57
57
61
60
59
47
40
38
47
55
63
71
Zona 4 - Galleria 4: T iniziale: 16 °C, Hum iniziale: 44%
Zona 4
Temperatura
obiettivo [°C]
Temperatura
ottenuta [°C]
Umidità obiettivo
[%]
Umidità ottenuta
[%]
02:00
04:00
06:00
08:00
10:00
12:00
14:00
16:00
18:00
20:00
22:00
24:00
20
20
20
22
22
22
20
-
17
18
20
20
20
22
22
22
22
19
18
17
60
60
60
40
40
40
60
-
50
56
62
59
61
52
39
35
42
48
52
57
Zona 5 – Galleria 5: T iniziale: 15 °C, Hum iniziale: 44%
Zona 5
Temperatura
obiettivo [°C]
Temperatura
ottenuta [°C]
Umidità obiettivo
[%]
Umidità ottenuta
[%]
02:00
04:00
06:00
08:00
10:00
12:00
14:00
16:00
18:00
20:00
22:00
24:00
20
20
20
22
22
22
20
-
16
18
20
20
20
22
22
22
22
18
16
15
60
60
60
40
40
40
60
-
47
52
57
60
60
49
41
38
45
52
60
68
87
Commento: Restano valide le considerazioni fatte nell’esempio precedente. Rispetto ad esso si può
notare una maggiore difficoltà del sistema nel controllo delle condizioni ambientali delle ultime ore
della giornata: queste è dovuto alla generazione casuale delle condizioni ambientali, che in quegli
intervalli di tempo sono risultate maggiormente avverse agli obiettivi del problema. Lo scarto tra le
condizioni ottenute e quelle desiderate diventa comunque significativo solamente in pochissimi
intervalli di tempo (per esempio nelle zone 4 e 5, alle ore 20).
88
5.5. TEST REALISTICI SU MONDO STOCASTICO
La presentazione dei seguenti test rispetta le stesse modalità descritte nella Sezione 5.4.
5.5.1. EDIFICIO A
Il seguente test è costituito da un unico problema, composto di una serie di DCOP, il cui obiettivo è
gestire le condizioni termoigrometriche di tutte le stanze dell’ap
dell’appartamento
partamento raffigurato in Fig. 5.1
(edificio A) nell’arco di 24 ore, come descritto nella Sezione 5.4.1.
Lo scopo del test e le condizioni sotto cui si svolge sono id
identici
entici a quelli del test descritti nella SSezione
5.4.1,, tranne per il fatto che il sistema agisce sotto l’ipotesi di mondo stocastico. Si aggiunge cioè una
dose di imprevedibilità alle condizioni ambientali, per valutare
valutare il comportamento del sistema sotto
condizioni che rispecchiano più verosimilmente il mon
mondo reale, come descritto nella Sezione
ezione 5.2.2.
La Fig. 5.6 mostra il grafico della media e della deviazione standard della differenza tra condizioni di
comfort ottenute e obiettivi, ottenuti da 5 esecuzioni del problema, per i valori di temperatura e
umidità.
14
12
10
8
Temperatura
6
Umidità
4
2
0
Differenza media
Deviazione standard
Fig. 5.6: Valutazione delle prestazioni del test dell’edificio A su mondo stocastico
La prima serie di test su mondo stocastico mostra valori sensibilmente
sensibilmente più elevati delle deviazioni
standard, ma valori medi solo leggermente più alti rispetto al caso stocastico, mantenendo le soluzioni
trovate in ambito accettabile dal punto di vista pratico, nonostante i significativi disturbi casuali
introdotti in questo esperimento.
Le Tab. 5.33 mostrano i risultati ottenuti nella prima esecuzione:
89
Tab. 5.33
Zona 1 - Soggiorno: T iniziale: 24 °C, Hum iniziale: 39%
Zona 1
Temperatura
obiettivo [°C]
Temperatura
ottenuta [°C]
Umidità obiettivo
[%]
Umidità ottenuta
[%]
02:00
04:00
06:00
08:00
10:00
12:00
14:00
16:00
18:00
20:00
22:00
24:00
20
20
22
22
-
24
26
27
29
27
23
19
20
22
20
22
23
60
60
40
40
-
48
53
47
48
43
54
66
50
45
32
24
24
Zona 2 - Bagno: T iniziale: 15 °C, Hum iniziale: 41%
Zona 2
Temperatura
obiettivo [°C]
Temperatura
ottenuta [°C]
Umidità obiettivo
[%]
Umidità ottenuta
[%]
02:00
04:00
06:00
08:00
10:00
12:00
14:00
16:00
18:00
20:00
22:00
24:00
20
22
22
20
18
18
20
20
20
20
19
21
21
19
19
21
18
22
18
17
21
24
60
80
80
60
20
20
60
60
60
60
53
51
68
81
75
39
12
22
54
59
68
77
90
Zona 3 – Camera da letto: T iniziale: 24 °C, Hum iniziale: 63%
Zona 3
Temperatura
obiettivo [°C]
Temperatura
ottenuta [°C]
Umidità obiettivo
[%]
Umidità ottenuta
[%]
02:00
04:00
06:00
08:00
10:00
12:00
14:00
16:00
18:00
20:00
22:00
24:00
15
15
15
15
15
18
15
12
12
10
10
9
7
11
12
12
18
22
100
100
100
100
100
80
81
100
100
100
100
100
95
100
100
100
70
52
Zona 4 - Cucina: T iniziale: 23 °C, Hum iniziale: 70%
Zona 4
Temperatura
obiettivo [°C]
Temperatura
ottenuta [°C]
Umidità obiettivo
[%]
Umidità ottenuta
[%]
02:00
04:00
06:00
08:00
10:00
12:00
14:00
16:00
18:00
20:00
22:00
24:00
16
16
16
16
16
16
16
-
20
20
17
17
17
18
14
18
17
14
13
9
40
40
40
40
40
40
40
-
62
63
27
21
37
37
37
30
37
39
39
43
Zona 5 – Camera da letto: T iniziale: 20 °C, Hum iniziale: 40%
Zona 5
Temperatura
obiettivo [°C]
Temperatura
ottenuta [°C]
Umidità obiettivo
[%]
Umidità ottenuta
[%]
02:00
04:00
06:00
08:00
10:00
12:00
14:00
16:00
18:00
20:00
22:00
24:00
15
15
15
15
15
18
17
13
16
15
15
19
21
21
18
18
20
17
100
100
100
100
100
80
68
87
100
97
90
87
86
83
95
99
94
83
91
Commento: Rispetto ai test sul mondo deterministico, si possono subito notare maggiori discrepanze
tra gli obiettivi e i risultati ottenuti. Queste sono ovviamente da attribuire al fatto che temperatura e
umidità possono variare da un intervallo all’altro in modo completamente
completamente imprevedibile dal sistema. Ad
esempio, le variazioni di temperatura possono variare da -22 a +2 °C in un singolo intervallo, e ciò si
riscontra immediatamente nei dati a disposizione. Ciononostante il sistema riesce a mantenere sempre
di ordine accettabile gli scarti con la temperatura e l’umidità desiderate, tranne in rarissimi casi.
5.5.2. EDIFICIO B
Il seguente test è costituito da un unico problema, composto di una serie di DCOP, il cui obiettivo è
gestire le condizioni termoigrometriche di
d tutte le stanze dell’appartamento
ll’appartamento raffigurato in Fig. 5.2
(edificio B) nell’arco di 24 ore, come descritto precedentemente.
Lo scopo del test e le condizioni sotto cui si svolge sono identici
identici a quelli del test della Sezione 55.5.1,
tranne per il fatto chee il sistema agisce sotto l’ipotesi di mondo stocastico. Si aggiunge cioè una dose di
imprevedibilità alle condizioni ambientali, per valutare il comportamento del sistema sotto condizioni
che rispecchiano più verosimilmente il mondo reale,
reale come descritto nella Sezione 5.2.2
.2.2.
La Fig. 5.7 mostra il grafico della media e della deviazione standard della differenza tra condizioni di
comfort ottenute e obiettivi, ottenuti da 5 esecuzioni del problema, per i valori di temperatura e
umidità.
14
12
10
8
Temperatura
6
Umidità
4
2
0
Efficienza media
Deviazione standard
Fig. 5.7: Valutazione delle prestazioni del test dell’edificio B su mondo stocastico
92
I valori medi e le deviazioni standard registrati non presentano grandi discrepanze con quelli ottenuti
dal precedente esperimento sull’edificio A. Dai risultati ottenuti finora si può constatare che in generale
il sistema ottiene prestazioni migliori sull’edificio A. Questo può dipendere da dinamiche dipendenti
dalla disposizione delle stanze, che può rendere più o meno difficile ottenere diversi obiettivi nello
stesso intervallo di tempo; oppure può essere legato alla natura degli obiettivi di comfort stessi, molto
diversi tra i due problemi considerati.
Le Tab. 5.34 mostrano i risultati ottenuti nella prima esecuzione:
Tab. 5.34
Zona 1 – Galleria 1: T iniziale: 21 °C, Hum iniziale: 70%
Zona 1
Temperatura
obiettivo [°C]
Temperatura
ottenuta [°C]
Umidità obiettivo
[%]
Umidità ottenuta
[%]
02:00
04:00
06:00
08:00
10:00
12:00
14:00
16:00
18:00
20:00
22:00
24:00
20
20
20
22
22
22
20
-
22
20
20
19
19
20
24
22
22
19
20
22
60
60
60
40
40
40
60
-
76
73
53
43
59
65
57
33
41
57
43
30
Zona 2 - Galleria 2: T iniziale: 19 °C, Hum iniziale: 52%
Zona 2
Temperatura
obiettivo [°C]
Temperatura
ottenuta [°C]
Umidità obiettivo
[%]
Umidità ottenuta
[%]
02:00
04:00
06:00
08:00
10:00
12:00
14:00
16:00
18:00
20:00
22:00
24:00
20
20
20
22
22
22
20
-
20
21
19
20
21
23
23
22
22
19
20
20
60
60
60
40
40
40
60
-
50
58
52
52
60
58
48
46
45
45
38
45
93
Zona 3 - Galleria 3: T iniziale: 17 °C, Hum iniziale: 64%
Zona 3
Temperatura
obiettivo [°C]
Temperatura
ottenuta [°C]
Umidità obiettivo
[%]
Umidità ottenuta
[%]
02:00
04:00
06:00
08:00
10:00
12:00
14:00
16:00
18:00
20:00
22:00
24:00
20
20
20
22
22
22
20
-
19
17
21
19
18
20
22
20
19
19
19
17
60
60
60
40
40
40
60
-
65
63
71
52
61
61
39
25
19
17
12
20
Zona 4 - Galleria 4: T iniziale: 17 °C, Hum iniziale: 68%
Zona 4
Temperatura
obiettivo [°C]
Temperatura
ottenuta [°C]
Umidità obiettivo
[%]
Umidità ottenuta
[%]
02:00
04:00
06:00
08:00
10:00
12:00
14:00
16:00
18:00
20:00
22:00
24:00
20
20
20
22
22
22
20
-
28
20
22
21
20
21
24
21
18
18
20
21
60
60
60
40
40
40
60
-
63
63
51
56
69
70
51
29
30
18
8
0
Zona 5 - Galleria 5: T iniziale: 25 °C, Hum iniziale: 47%
Zona 5
Temperatura
obiettivo [°C]
Temperatura
ottenuta [°C]
Umidità obiettivo
[%]
Umidità ottenuta
[%]
02:00
04:00
06:00
08:00
10:00
12:00
14:00
16:00
18:00
20:00
22:00
24:00
20
20
20
22
22
22
20
-
24
24
22
18
19
21
22
20
18
20
20
22
60
60
60
40
40
40
60
-
46
52
63
57
60
58
49
46
41
43
50
48
94
Commento: Questo esperimento, soprattutto per quanto riguarda i dati relativi all’umidità, è quello che
presenta i risultati peggiori, in quanto spesso si hanno scarti anche molto pesanti con gli obiettivi del
problema. Anche per la temperatura i risultati non sono stati eccellenti, ma decisamente più accettabili.
Probabilmente, in presenza di grandi disturbi alle condizioni ambientali come quelli introdotti in questo
test, il sistema potrebbe aver bisogno di ulteriori rifiniture. Ad esempio, si potrebbero progettare
funzioni specifiche per gestire al meglio il raggiungimento graduale delle condizioni volute durante gli
intervalli “liberi”, mentre nel sistema descritto in questa tesi queste funzioni sono solamente
approssimate; oppure si potrebbe agire aumentando la discretizzazione dei valori assumibili dalle
variabili dei dispositivi degli agenti del sistema, o quella dei valori stessi che descrivono le condizioni
dell’ambiente.
95
5.6. TEST SUL FUNZIONAMENTO INTERNO
5.6.1.
.6.1. CONFRONTO TRA GLI ALGORITMI DI RISOLUZIONE
Nel seguente esperimento è stato effettuato un confronto tra i tempi di esecuzione di cinque algoritmi
di risoluzione disponibili del framework
amework FRODO, descritti nella Sezione
S
4.4.
Sono stati effettuati due test: il primo utilizzando un campione di 10 DCOP risolti singolarmente da
tutti gli algoritmi, e il secondo utilizzando, al posto ddei DCOP singoli, cinque serie di 3 DCOP, ognuna
risolta come un unico problema.
Il formato dei DCOP fornito in input a FRODO per questi esperimenti è la versione ridotta del
problema completo, descritto in Appendice A.3,, poiché è l’unica versione del problema
sufficientemente semplificata da poter essere risolta con successo da tutti gli algoritmi in questione.
In Fig. 5.8 sono mostrati i risultati del confronto tra i tempi medi di esecuzione (espressi in
millisecondi) e in Fig. 5.9 quelli delle
le deviazioni
deviazioni standard ottenute con i vari algoritmi, per i DCOP
singoli e per le serie di DCOP.
3000
2500
2000
ADOPT
DPOP
1500
MGM
MGM2
1000
SynchBB
500
0
μ - DCOP
μ - Serie DCOP
Fig. 5.8: Confronto dei tempi medi
edi di esecuzione per DCOP singoli e serie di DCOP
96
700
600
500
ADOPT
400
DPOP
MGM
300
MGM2
SynchBB
200
100
0
σ - DCOP
σ - Serie DCOP
Fig. 5.9: Confronto delle deviazioni standard dei tempi di esecuzione per DCOP singoli e serie
di DCOP
Il confronto tra i tempi di esecuzione conferma ampiamente le caratteristiche conosciute di questi
algoritmi. ADOPT richiede molte risorse computazionali se confrontato con gli altri algoritmi: i tempi
impiegati sono stati elevati ed estremamente disomogenei tra un’iterazione e l’altra. DPOP è nettamente
più rapido e, anche a causa della relativa semplicità della versione del DCOP qui proposta, ha risolto
tutti i problemi con tempi minimi e molto simili tra loro. Anche MGM e SynchBB hanno avuto buone
prestazioni, sebbene non
n paragonabili a quelle di DPOP.
DPOP. MGM2, un altro algoritmo non completo, è
stato però quello che ha impiegato i tempi di esecuzione più elevati, anche se poco più omogenei di
quelli di ADOPT: ciò è dovuto al costo dei
dei messaggi scambiati durante l’esecuzione dell’algoritmo,
notoriamente molto più alto di algoritmi simili come ad esempio MGM, rispetto al quale ha però un
vantaggio generale in termini di qualità delle soluzioni trovate.
97
5.6.1.
.6.1. CONFRONTO TRA SERIE
SERI DI DCOP E DDCOP
Il seguente esperimento ha lo scopo di valutare
va
l’effettivo miglioramento delle prestazioni che si ottiene
con la modifica all’algoritmo ADOPT descritta nella Sezione
S
4.3.2,, costituita dall’implementazione della
procedura Reuse-Bounds. L’algoritmo così modificato permette la risoluzione di una serie di DCOP
traendo vantaggio dal fatto che alcune parti del grafo dei vincoli di un DCOP potrebbero essere
identiche a quelle del DCOP che lo ha preceduto, e che quindi non necessitino di essere ridefinite,
permettendo un notevole decremento della complessità di esecuzione; è il concetto alla base della
definizione
ne di un Dynamic DCOP (Sezione 3.6.3).
3.6.3
L’esperimento è stato effettuato su una successione
s
di dieci DCOP, in cui tutte le variabili e le
condizioni ambientali sono generate casualmente tranne dove specificato. L’esperimento è svolto sul
modello dell’edificio A, con un orizzonte temporale di 10 ore e un intervallo di ripianificazione di 1 ora
ora;
per ogni serie di test sono state effettuate 5 iterazioni dell’algoritmo sulla serie di DCOP
DCOP. Nella prima
serie di test non è stata applicata la modifica all’algoritmo ADOPT: il problema non è stato quindi
risolto come un DDCOP, ma come una semplice serie di DCOP singoli. Nella seconda tutte le
condizioni
oni di partenza, e quelle desiderate, relative a una singola zona dell’edificio non cambiano mai
per tutti i DCOP della serie: l’algoritmo applica cioè la procedura Reuse-Bounds
Bounds per questa singola
zona, per tutta la durata del problema, poiché le variabili di quella zona non saranno mai influenzate dal
cambio di contesto. Nella terza l’immutabilità delle condizioni viene aumentata a due zone. Nella quarta
tutte le zone vengono rese immutabili, ma solo per la durata di uno dei dieci DCOP, mentre nella
quinta la durata si estendee a 4 DCOP. Infine nell’ultima serie di test viene preso in considerazione il
caso estremo dove tutte le zone sono immutabili per tutta la durata del problema. In Fig. 5.10 sono
confrontati i tempi medi di esecuzione di ogni serie.
serie
7000
6000
5000
No RB
1 z infl
4000
2 z infl
1 DCOP
3000
4 DCOP
9 DCOP
2000
1000
0
Fig. 5.10:: Confronto dei tempi medi di esecuzione con utilizzo della procedura Reuse
Reuse-Bounds
98
Dal grafico si nota innanzitutto che il caso estremo corrispondente all’ultima serie di test ha dato l’esito
sperato: un tempo di esecuzione drasticamente inferiore al tempo di esecuzione dello stesso problema
con ADOPT classico (speedup del 18,59), poiché il sistema deve in sostanza risolvere solamente il
primo DCOP, il cui risultato sarà automaticamente assegnato alle variabili dei DCOP successivi, che
sono in sostanza identici al primo. Quando i DCOP ad essere “non influenzati” sono solo alcuni, il
tempo impiegato a risolvere i rispettivi DDCOP diminuisce visibilmente all’aumentare del numero di
questi ultimi: ad esempio, con 1 DCOP “immutato” si ha uno speedup di 1,19, mentre con 4 DCOP
“immutati” di 1,64. La stessa considerazione può essere fatta quando ad aumentare sono le zone “non
influenzate”, perciò si può concludere che il tempo impiegato da questa versione di ADOPT per
risolvere una serie di DCOP dipende direttamente dal numero di DCOP, e di zone in questi DCOP, le
cui condizioni ambientali non variano rispetto al problema precedente.
99
CAPITOLO 6
CONCLUSIONI E SVILUPPI FUTURI
In questo lavoro di tesi sono stati analizzati alcuni tra i più importanti e innovativi metodi di controllo
termoigrometrico degli edifici, sia tra i dispositivi in commercio, sia per quanto riguarda la ricerca
scientifica.
Si è poi applicata all’ambito del controllo del comfort la formulazione di un problema di ottimizzazione
vincolato distribuito (DCOP), in particolare una formulazione costituita da un insieme di DCOP. In
questo modello, ogni DCOP rappresenta la situazione di un edificio in un istante di tempo, e a partire
dalle condizioni ambientali dell’edificio e dagli obiettivi programmati dagli utenti, restituisce i valori che
i dispositivi di comfort dell’edificio assumeranno nell’intervallo successivo per soddisfare tali obiettivi.
Questo modello è stato poi ulteriormente ramificato in due formulazioni: come una successione
ordinata di DCOP che vengono risolti singolarmente uno dopo l’altro; e come DCOP dinamico, in cui
la risoluzione di ogni DCOP dipende strettamente dal problema precedente nella sequenza.
Una sezione importante della tesi è stata riservata all’implementazione della procedura Reuse-Bounds,
descritta a livello teorico in [38], per modificare l’algoritmo ADOPT all’interno del framework
FRODO, con l’obiettivo di ottenere un software capace di risolvere un DDCOP in un caso reale, visto
che non sono state trovate implementazioni alternative.
Sono poi state effettuate varie serie di test che hanno valutato il comportamento del sistema prendendo
in considerazione il DCOP singolo, la serie di DCOP nelle sue varie formulazioni, i risultati pratici
ottenuti da varie simulazioni del funzionamento del sistema su istanze realistiche sotto le ipotesi di
mondo deterministico o stocastico, e infine un confronto tra i tempi di risoluzione dei diversi algoritmi
di FRODO e una valutazione che ha dimostrato l’efficacia della modifica implementata all’algoritmo
ADOPT.
Il lavoro descritto in questa tesi si propone come una base da cui partire per sviluppare sistemi di
controllo del comfort basati sull’approccio DCOP. Le caratteristiche dei problemi e delle istanze su cui
sono state svolte le sperimentazioni sono basate infatti su un modello molto semplificato del
comportamento di un vero edificio, in cui molti aspetti fondamentali sono stati soltanto approssimati:
in particolare, il modello delle leggi della fisica e della termodinamica che governano le variazioni di
temperatura e di umidità in un edificio di una certa forma e caratterizzato da particolari condizioni
ambientali, necessita di numerose informazioni e sperimentazioni per rispecchiare in modo accettabile
la realtà.
A livello sperimentale, la maggiore problematica emersa è stata la mancata possibilità di eseguire la
versione completa del DCOP su tutti gli algoritmi di risoluzione. La complessità del problema,
considerando tutte le variabili e i vincoli esposti nella descrizione del problema applicativo, si è rivelata
infatti tale da poter essere eseguita solamente da pochi algoritmi; ad esempio, l’esecuzione del DCOP su
ADOPT e DPOP, due algoritmi ottimi, generalmente falliva per la sua elevata richiesta di memoria.
Perciò un possibile sviluppo futuro del lavoro potrebbe prevedere una riformulazione del problema per
diminuirne la complessità, o la ricerca di un metodo per poter eseguire lo stesso problema su algoritmi
100
più potenti. Infatti la maggior parte delle sperimentazioni di questo lavoro sono state eseguite con
MGM, un algoritmo non ottimo, rendendo le valutazioni sui risultati ottenuti meno rilevanti sotto il
profilo della correttezza. Potendo invece contare su algoritmi ottimi, sarebbe possibile effettuare
valutazioni sperimentali molto più significativi.
101
BIBLIOGRAFIA















[1] D. J. Cook, J. C. Augusto, V. R. Jakkula. Ambient intelligence: Technologies, applications,
and opportunities. Pervasive and Mobile Computing 5, 2009, p. 277-98
[2] J. M. Vidal. Fundamentals of multiagent systems with NetLogo examples. 2010.
http://jmvidal.cse.sc.edu/papers/mas.pdf
[3] D. J. Cook, S. K. Das. How smart are our environments? An updated look at the state of
the art. Pervasive and Mobile Computing 3 (2007) 53–73
[4] A. Rogers, S. Maleki, S. Ghosh and N. R. Jennings. An Intelligent Agent for Home Heating
Management (Demonstration). Proceedings of the 11th International Conference on
Autonomous Agents and Multiagent Systems (AAMAS 2012) – 2012, 1471-1472
[5] D. J. Cook, M. Youngblood, E. O. Heierman, III, K. Gopalratnam, S. Rao, A. Litvin, and F.
Khawaja. MavHome: An Agent-Based Smart Home. Proceedings of the First IEEE
International Conference on Pervasive Computing and Communications (PerCom’03) – 2003 –
521-524
[6] M. C. Mozer. The Neural Network House: An Environment that Adapts to its Inhabitants.
Proceedings of the American Association for Artificial Intelligence Spring Symposium on
Intelligent Environments (pp. 110-114). Menlo Park, CA: AAAI Press. 1998
[7] D. J. Cook. Multi-agent smart environments, Journal of Ambient Intelligence and Smart
Environments 1, 2009, p. 47-51
[8] A.I. Dounis, C.Caraiscos. Advanced control systems engineering for energy and comfort
management in a building environment. A review, Renewable and Sustainable Energy Reviews
13, 2009, p. 1247-61
[9] V. Lesser, M. Atighetchi, B. Benyo, B. Horling, A. Raja, R. Vincent, T. Wagner, P. Xuan
and S. XQ. Zhang. A Multi-Agent System for Intelligent Environment Control. Umass
Computer Science Technical Report 1998-40
[10] R. Z. Freire, G. H.C. Oliveira, N. Mendes. Predictive controllers for thermal comfort
optimization and energy savings. Energy and Buildings 40 (2008) 1353–1365
[11] D. J. Cook, M. Huber, K. Gopalratnam, and M. Youngblood. Learning to Control a Smart
Home Environment. In Innovative Applications of Artificial Intelligence, 2003
[12] S. K. Das, D. J. Cook, A. Bhattacharya, E. O. Heierman III and T. Lin. The Role of
Prediction Algorithms in the MavHome Smart Home Architecture. IEEE Wireless
Communications Volume 9 Issue 6, December 2002, Page 77-84
[13] B. Huberman and S. H. Clearwater. A Multi-Agent System for Controlling Building
Environments. Proceedings from the First International Conference on MultiAgent Systems,
1995, p. 171-76
[14] H. Hagras , V. Callaghan, M. Colley, G. Clarke. A Hierarchical Fuzzy-Genetic Multi-Agent
Architecture for Intelligent Buildings Online Learning, Architecture and Control. Information
Sciences 150 (2003) 33–57
[15] G. Evans, Director of Engineering, MTI Inc., Portland, OR. Solving Home Automation
Problems using Artificial Intelligence Techniques. Consumer Electronics, IEEE Transactions
on (Volume:37 , Issue: 3 ), 1991, p. 395-400
102


















[16] Levermore GJ. Building energy management systems: an application to heating and
control, 2000, Taylor & Francis
[17] Bernard C, Guerrier B, Rasset-Louerant MM. Optimal building energy management. Part
II: Control. ASME Journal of Solar Energy Engineering 1982;114:13
[18] House J, Smith T. A system approach to optimal control for HVAC and building systems.
HVAC&R Research, Vol. 14 No. 1, January 2008
[19] P. S. Curtis, G. Shavit, J. F. Kreider, Neural Networks Applied to Buildings-A Tutorial and
Case Studies in Prediction and Adaptive Control. ASHRAE Transactions part 2, volume 100(1)
1996
[20] Altrock C, Arend HO, Krause B, Steffens C, Behrens-Rommler E. Adaptive fuzzy control
applied to home heating system. Fuzzy Sets and Systems, Fuzzy Sets and Systems, Volume 61
Issue 1, Jan. 10, 1994, Pages 29-35
[21] Breemen AJN, Vries TJA. Design and implementation of a room thermostat using an
agent-based approach, Control Engineering Practice, 9 (3). pp. 233-248
[22] KNX – Flexible, Economical, Reliable. Smart Home and Intelligent Building Control 2012
[23] P. Davidsson and M. Boman. A Multi-Agent System for Controlling Intelligent Buildings.
Proceedings from the Fourth International Conference on MultiAgent Systems, 2000, pp. 377378
[24] Jang JSR, Sun CT, Mizutani E. Neuro-fuzzy and soft computing. Prentice Hall; 1996
[25] Dounis AI, Manolakis DE. Design of a fuzzy system for living space thermalcomfort
regulation. Applied Energy 2001; 69:119–44
[26] Dounis AI, Santamouris M, Lefas CC, Argiriou A. Design of a fuzzy set environment
comfort system. Energy and Buildings 1994; 22:81–7
[27] Kolokotsa D. Design and implementation of an integrated intelligent building indoor
environment management system using fuzzy logic, advanced decision support techniques,
local operating network capabilities and smart card technology. PhD. Technical University of
Crete; 2001
[28] Kanarachos A, Geramanis K. Multivariable control of single zone hydronic heating
systems with neural networks. Energy Conversion Management 1998;13(13): 1317–36
[29] Liang J, Du R. Thermal comfort control based on neural network for HVAC application.
In: Proceedings of the control applications conference, 2005, p. 819–24
[30] M. Ngobye, W. T. de Groot and T. P. van der Weide. Types and priorities of multi-agent
system interactions. Interdisciplinary Description of Complex Systems - scientific journal, 2010,
vol. 8, issue 1, pages 49-58
[31] Organising Committee of the Third International Competition of CSP Solvers. XML
Representation of Constraint Networks – Format XCSP 2.1, January 15 2008.
http://www.cril.univartois.fr/~lecoutre/research/benchmarks/benchmarks.html
[32] M. Wahbi, R. Ezzahir, C. Bessiere, and E. H. Bouyakhf. DisChoco 2: A platform for
distributed constraint reasoning. In Proceedings of the Thirteenth International Workshop on
Distributed Constraint Reasoning (DCR’11), pages 112–121, Barcelona, Spain, July 17 2011 http://www.lirmm.fr/coconut/dischoco/
[33] A. Gershman, R. Zivan, T. Grinshpoun, A. Grubshtein, and A. Meisels. Measuring
distributed constraint optimization algorithms. In Proceedings of the AAMAS’08 Distributed
Constraint Reasoning Workshop (DCR’08), pages 17–24, Estoril, Portugal, May 13 2008
103













[34] E. A. Sultanik, R. N. Lass, and W. C. Regli. DCOPolis: A framework for simulating and
deploying distributed constraint optimization algorithms. In Jonathan P. Pearce, editor,
Proceedings of the Ninth International Workshop on Distributed Constraint Reasoning
(CPDCR’ 07), Providence, RI, USA, September 23 2007
[35] Graphviz - Graph Visualization Software. http://www.graphviz.org/
[36] T. Léauté, B. Ottens, and R. Szymanek. FRODO: ___a FRamework for Open/Distributed
Optimization
–
version
2.11.
http://thomas.leaute.name/frodo/manual/FRODO_User_Manual.html
[37] P. J. Modi, W. Shen, M. Tambe, and M. Yokoo. ADOPT: Asynchronous distributed
constraint optimization with quality guarantees. Artificial Intelligence, 161:149–180, 2005
[38] W. Yeoh, P. Varakantham, X. Sun and S. Koenig. Incremental DCOP Search Algorithms
for Solving Dynamic DCOPs [Extended Abstract]. In Proceedings of the International Joint
Conference on Autonomous Agents and Multiagent Systems (AAMAS), pages 169-170, 2011
[39] A. Petcu, and B. Faltings. A Scalable Method for Multiagent Constraint Optimization. In
Leslie Pack Kaelbling and Alessandro Saffiotti, editors, Proceedings of the Nineteenth
International Joint Conference on Artificial Intelligence (IJCAI’05), pages 266–271, Edinburgh,
Scotland, July 31 – August 5 2005
[40] F. R. Kschischang, B. Frey, and H. A. Loeliger. Factor graphs and the sum-product
algorithm. IEEE Transactions On Information Theory, Vol. 47 No. 2, pages 498–519,
February 2001
[41] A. Petcu, and B. Faltings. A distributed, complete method for multiagent constraint
optimization. In CP 2004. Fifth International Workshop on Distributed Constraint Reasoning
(DCR2004) in Toronto, Canada, September 2004
[42] R. T. Maheswaran, J. P. Pearce, and M. Tambe. Distributed algorithms for DCOP: A
graphical-game-based approach. In David A. Bader and Ashfaq A. Khokhar, editors,
Proceedings of the ISCA Seventeenth International Conference on Parallel and Distributed
Computing Systems (ISCA PDCS’04), pages 432–439, Francisco, California, USA, September
15–17 2004. ISCA
[43] M. Yokoo, and K. Hirayama. Distributed breakout algorithm for solving distributed
constraint satisfaction and optimization problems. In Proc. ICMAS, pages 401–408, 1996
[44] K. Hirayama and M. Yokoo. Distributed partial constraint satisfaction problem. In Gert
Smolka, editor, Proceedings of the Third International Conference on Principles and Practice
of Constraint Programming (CP’97), volume 1330, pages 222–236, Linz, Austria, Oct. 29–Nov.
1 1997
[45] K.Ghedira. A distributed approach to partial constraint satisfaction problems. In J. Perram
and J.-P. Mller, editors, Distributed Software Agents and Applications, volume 1069 of Lecture
Notes in Computer Science, pages 106–122. Springer Berlin / Heidelberg, 1996
[46] V. Ricquebourg, D. Menga, D. Durand, B. Marhic, L. Delahoche, C. Logé – The Smart
Home concept: Our immediate future – E-Learning in Industrial Electronics, 2006 1ST IEEE
International Conference on, p. 23-28
104
APPENDICE A
ESEMPI DI ISTANZE DCOP
A.1. PROBLEMA COMPLETO – EDIFICIO A
In Fig. A.1 è mostrato un esempio di istanza DCOP basata sull’edificio A e sulla versione completa del
problema, usato nella maggior parte dei test sperimentali. Gli elementi presenti nel documento XML
possono essere così suddivisi:








<agent>: gli elementi con questo tag corrispondono agli agenti del sistema
<domain>: gli elementi con questo tag corrispondono ai domini delle variabili
<variable>: gli elementi con questo tag corrispondono alle variabili del problema
powerCostFunction: l’elemento <function> con questo nome è la funzione a valori interi che
definisce la componente della funzione di costo riguardante la potenza
thermoCostFunction: gli elementi <function> con questo nome sono le funzioni a valori interi che
definiscono le componenti della funzione di costo riguardanti il comfort termico; variano a
seconda delle caratteristiche dell’edificio
humCostFunction: l’elemento <function> con questo nome sono le funzioni a valori interi che
definiscono le componenti della funzione di costo riguardanti il comfort igrometrico; variano a
seconda delle caratteristiche dell’edificio
max_power: l’elemento <constraint> con questo nome definisce il vincolo globale sul limite di
potenza utilizzabile
<constraint>: gli elementi con questo tag corrispondono ai vincoli veri e propri del problema
<instance>
<presentation name="ThermoHygrometricComfortProblem1" maxConstraintArity="20"
maximize="false" format="XCSP 2.1_FRODO" />
<agents nbAgents="29">
<agent name="a_heat1" />
<agent name="a_cond1" />
<agent name="a_vent1" />
<agent name="a_humd1" />
<agent name="a_heat2" />
<agent name="a_cond2" />
<agent name="a_vent2" />
<agent name="a_humd2" />
<agent name="a_heat3" />
<agent name="a_cond3" />
<agent name="a_vent3" />
<agent name="a_humd3" />
<agent name="a_heat4" />
<agent name="a_cond4" />
<agent name="a_vent4" />
<agent name="a_humd4" />
<agent name="a_heat5" />
<agent name="a_cond5" />
105
<agent name="a_vent5" />
<agent name="a_humd5" />
<agent name="a_door12" />
<agent name="a_door13" />
<agent name="a_door14" />
<agent name="a_door15" />
<agent name="a_wind1" />
<agent name="a_wind2" />
<agent name="a_wind3" />
<agent name="a_wind4" />
<agent name="a_wind5" />
</agents>
<domains nbDomains="5">
<domain name="d_heat" nbValues="6">0..5</domain>
<domain name="d_cond" nbValues="5">0..4</domain>
<domain name="d_vent" nbValues="6">0..5</domain>
<domain name="d_humd" nbValues="5">0..4</domain>
<domain name="d_door_wind" nbValues="2">0 1</domain>
</domains>
<variables nbVariables="29">
<variable name="HEAT1" domain="d_heat" agent="a_heat1" />
<variable name="COND1" domain="d_cond" agent="a_cond1" />
<variable name="VENT1" domain="d_vent" agent="a_vent1" />
<variable name="HUMD1" domain="d_humd" agent="a_humd1" />
<variable name="HEAT2" domain="d_heat" agent="a_heat2" />
<variable name="COND2" domain="d_cond" agent="a_cond2" />
<variable name="VENT2" domain="d_vent" agent="a_vent2" />
<variable name="HUMD2" domain="d_humd" agent="a_humd2" />
<variable name="HEAT3" domain="d_heat" agent="a_heat3" />
<variable name="COND3" domain="d_cond" agent="a_cond3" />
<variable name="VENT3" domain="d_vent" agent="a_vent3" />
<variable name="HUMD3" domain="d_humd" agent="a_humd3" />
<variable name="HEAT4" domain="d_heat" agent="a_heat4" />
<variable name="COND4" domain="d_cond" agent="a_cond4" />
<variable name="VENT4" domain="d_vent" agent="a_vent4" />
<variable name="HUMD4" domain="d_humd" agent="a_humd4" />
<variable name="HEAT5" domain="d_heat" agent="a_heat5" />
<variable name="COND5" domain="d_cond" agent="a_cond5" />
<variable name="VENT5" domain="d_vent" agent="a_vent5" />
<variable name="HUMD5" domain="d_humd" agent="a_humd5" />
<variable name="DOOR12" domain="d_door_wind" agent="a_door12" />
<variable name="DOOR13" domain="d_door_wind" agent="a_door13" />
<variable name="DOOR14" domain="d_door_wind" agent="a_door14" />
<variable name="DOOR15" domain="d_door_wind" agent="a_door15" />
<variable name="WIND1" domain="d_door_wind" agent="a_wind1" />
<variable name="WIND2" domain="d_door_wind" agent="a_wind2" />
<variable name="WIND3" domain="d_door_wind" agent="a_wind3" />
<variable name="WIND4" domain="d_door_wind" agent="a_wind4" />
<variable name="WIND5" domain="d_door_wind" agent="a_wind5" />
</variables>
<functions nbFunctions="11">
<function name="powerCostFunction" return="int">
<parameters> int heat int cond int vent int humd </parameters>
<expression>
<functional>add(add(add(mul(200,heat),mul(250,abs(sub(cond,2)))),mul(20,vent)),mul(125,abs(su
b(humd,2))))</functional>
</expression>
</function>
<function name="thermoCostFunction1" return="int">
<parameters> int heat int cond int vent int door12 int door13 int door14 int
door15 int wind </parameters>
<expression>
<functional>mul(3,abs(sub(1000,add(add(add(add(add(add(add(add(add(1000,mul(400,heat)),mul(3000,sub(cond,2))),mul(-300,vent)),mul(-1,200)),mul(door12,mul(1,200))),mul(door13,mul(-1,200))),mul(door14,mul(-1,200))),mul(door15,mul(-1,200))),mul(wind,mul(1,200))))))</functional>
</expression>
</function>
<function name="thermoCostFunction2" return="int">
<parameters> int heat int cond int vent int door int wind </parameters>
<expression>
<functional>mul(3,abs(sub(1000,add(add(add(add(add(add(1000,mul(400,heat)),mul(3000,sub(cond,2))),mul(-300,vent)),mul(-1,200)),mul(door,mul(1,200))),mul(wind,mul(-1,200))))))</functional>
</expression>
</function>
106
<function name="thermoCostFunction3" return="int">
<parameters> int heat int cond int vent int door int wind </parameters>
<expression>
<functional>mul(3,abs(sub(1000,add(add(add(add(add(add(1000,mul(400,heat)),mul(3000,sub(cond,2))),mul(-300,vent)),mul(-1,200)),mul(door,mul(1,200))),mul(wind,mul(-1,200))))))</functional>
</expression>
</function>
<function name="thermoCostFunction4" return="int">
<parameters> int heat int cond int vent int door int wind </parameters>
<expression>
<functional>mul(3,abs(sub(1000,add(add(add(add(add(add(1000,mul(400,heat)),mul(3000,sub(cond,2))),mul(-300,vent)),mul(-1,200)),mul(door,mul(1,200))),mul(wind,mul(-1,200))))))</functional>
</expression>
</function>
<function name="thermoCostFunction5" return="int">
<parameters> int heat int cond int vent int door int wind </parameters>
<expression>
<functional>mul(3,abs(sub(1000,add(add(add(add(add(add(1000,mul(400,heat)),mul(3000,sub(cond,2))),mul(-300,vent)),mul(-1,200)),mul(door,mul(1,200))),mul(wind,mul(-1,200))))))</functional>
</expression>
</function>
<function name="humCostFunction1" return="int">
<parameters> int humd int door12 int door13 int door14 int door15 int wind
</parameters>
<expression>
<functional>mul(3,abs(sub(2000,add(add(add(add(add(add(5000,mul(sub(humd,2),2000)),mul(door12,mul(-5,500))),mul(door13,mul(-5,500))),mul(door14,mul(5,500))),mul(door15,mul(-5,500))),mul(wind,mul(-5,500))))))</functional>
</expression>
</function>
<function name="humCostFunction2" return="int">
<parameters> int humd int door int wind </parameters>
<expression>
<functional>mul(3,abs(sub(2000,add(add(add(5000,mul(sub(humd,2),2000)),mul(door,mul(-5,500))),mul(wind,mul(-5,500))))))</functional>
</expression>
</function>
<function name="humCostFunction3" return="int">
<parameters> int humd int door int wind </parameters>
<expression>
<functional>mul(3,abs(sub(2000,add(add(add(5000,mul(sub(humd,2),2000)),mul(door,mul(-5,500))),mul(wind,mul(-5,500))))))</functional>
</expression>
</function>
<function name="humCostFunction4" return="int">
<parameters> int humd int door int wind </parameters>
<expression>
<functional>mul(3,abs(sub(2000,add(add(add(5000,mul(sub(humd,2),2000)),mul(door,mul(-5,500))),mul(wind,mul(-5,500))))))</functional>
</expression>
</function>
<function name="humCostFunction5" return="int">
<parameters> int humd int door int wind </parameters>
<expression>
<functional>mul(3,abs(sub(2000,add(add(add(5000,mul(sub(humd,2),2000)),mul(door,mul(-5,500))),mul(wind,mul(-5,500))))))</functional>
</expression>
</function>
</functions>
<constraints nbConstraints="16">
<constraint name="max_power" arity="20" scope="HEAT1 COND1 VENT1 HUMD1 HEAT2 COND2
VENT2 HUMD2 HEAT3 COND3 VENT3 HUMD3 HEAT4 COND4 VENT4 HUMD4 HEAT5 COND5 VENT5 HUMD5"
reference="global:weightedSum" >
<parameters> [ { 200 HEAT1 } { 250 COND1 } { 20 VENT1 } { 125 HUMD1 } { 200
HEAT2 } { 250 COND2 } { 20 VENT2 } { 125 HUMD2 } { 200 HEAT3 } { 250 COND3 } { 20 VENT3 } { 125
HUMD3 } { 200 HEAT4 } { 250 COND4 } { 20 VENT4 } { 125 HUMD4 } { 200 HEAT5 } { 250 COND5 } { 20
VENT5 } { 125 HUMD5 } ] <le/> 8000 </parameters>
</constraint>
<constraint name="cost_function1" arity="4" scope="HEAT1 COND1 VENT1 HUMD1"
reference="powerCostFunction" >
<parameters>HEAT1 COND1 VENT1 HUMD1</parameters>
</constraint>
107
<constraint name="cost_function2" arity="4" scope="HEAT2 COND2 VENT2 HUMD2"
reference="powerCostFunction" >
<parameters>HEAT2 COND2 VENT2 HUMD2</parameters>
</constraint>
<constraint name="cost_function3" arity="4" scope="HEAT3 COND3 VENT3 HUMD3"
reference="powerCostFunction" >
<parameters>HEAT3 COND3 VENT3 HUMD3</parameters>
</constraint>
<constraint name="cost_function4" arity="4" scope="HEAT4 COND4 VENT4 HUMD4"
reference="powerCostFunction" >
<parameters>HEAT4 COND4 VENT4 HUMD4</parameters>
</constraint>
<constraint name="cost_function5" arity="4" scope="HEAT5 COND5 VENT5 HUMD5"
reference="powerCostFunction" >
<parameters>HEAT5 COND5 VENT5 HUMD5</parameters>
</constraint>
<constraint name="thermo_cost_function1" arity="8" scope="HEAT1 COND1 VENT1 DOOR12
DOOR13 DOOR14 DOOR15 WIND1" reference="thermoCostFunction1" >
<parameters>HEAT1 COND1 VENT1 DOOR12 DOOR13 DOOR14 DOOR15 WIND1</parameters>
</constraint>
<constraint name="thermo_cost_function2" arity="5" scope="HEAT2 COND2 VENT2 DOOR12
WIND2" reference="thermoCostFunction2" >
<parameters>HEAT2 COND2 VENT2 DOOR12 WIND2</parameters>
</constraint>
<constraint name="thermo_cost_function3" arity="5" scope="HEAT3 COND3 VENT3 DOOR13
WIND3" reference="thermoCostFunction3" >
<parameters>HEAT3 COND3 VENT3 DOOR13 WIND3</parameters>
</constraint>
<constraint name="thermo_cost_function4" arity="5" scope="HEAT4 COND4 VENT4 DOOR14
WIND4" reference="thermoCostFunction4" >
<parameters>HEAT4 COND4 VENT4 DOOR14 WIND4</parameters>
</constraint>
<constraint name="thermo_cost_function5" arity="5" scope="HEAT5 COND5 VENT5 DOOR15
WIND5" reference="thermoCostFunction5" >
<parameters>HEAT5 COND5 VENT5 DOOR15 WIND5</parameters>
</constraint>
<constraint name="hum_cost_function1" arity="6" scope="HUMD1 DOOR12 DOOR13 DOOR14
DOOR15 WIND1" reference="humCostFunction1" >
<parameters>HUMD1 DOOR12 DOOR13 DOOR14 DOOR14 WIND1</parameters>
</constraint>
<constraint name="hum_cost_function2" arity="3" scope="HUMD2 DOOR12 WIND2"
reference="humCostFunction2" >
<parameters>HUMD2 DOOR12 WIND2</parameters>
</constraint>
<constraint name="hum_cost_function3" arity="3" scope="HUMD3 DOOR13 WIND3"
reference="humCostFunction3" >
<parameters>HUMD3 DOOR13 WIND3</parameters>
</constraint>
<constraint name="hum_cost_function4" arity="3" scope="HUMD4 DOOR14 WIND4"
reference="humCostFunction4" >
<parameters>HUMD4 DOOR14 WIND4</parameters>
</constraint>
<constraint name="hum_cost_function5" arity="3" scope="HUMD5 DOOR15 WIND5"
reference="humCostFunction5" >
<parameters>HUMD5 DOOR15 WIND5</parameters>
</constraint>
</constraints>
</instance>
Fig.A.1: Esempio di istanza DCOP corrispondente all’edificio A e alla versione completa del
problema
108
A.2. PROBLEMA COMPLETO – EDIFICIO B
In Fig. A.2 è mostrato un esempio di istanza DCOP basata sull’edificio B e sulla versione completa del
problema, usato nella maggior parte dei test sperimentali. Valgono le stesse considerazioni dell’esempio
A.1, rispetto al quale variano le funzioni thermoCostFunction e humCostFunction, che rispecchiano le
caratteristiche dell’edificio B.
<instance>
<presentation name="ThermoHygrometricComfortProblem1" maxConstraintArity="20"
maximize="false" format="XCSP 2.1_FRODO" />
<agents nbAgents="29">
<agent name="a_heat1" />
<agent name="a_cond1" />
<agent name="a_vent1" />
<agent name="a_humd1" />
<agent name="a_heat2" />
<agent name="a_cond2" />
<agent name="a_vent2" />
<agent name="a_humd2" />
<agent name="a_heat3" />
<agent name="a_cond3" />
<agent name="a_vent3" />
<agent name="a_humd3" />
<agent name="a_heat4" />
<agent name="a_cond4" />
<agent name="a_vent4" />
<agent name="a_humd4" />
<agent name="a_heat5" />
<agent name="a_cond5" />
<agent name="a_vent5" />
<agent name="a_humd5" />
<agent name="a_door12" />
<agent name="a_door13" />
<agent name="a_door14" />
<agent name="a_door15" />
<agent name="a_wind1" />
<agent name="a_wind2" />
<agent name="a_wind3" />
<agent name="a_wind4" />
<agent name="a_wind5" />
</agents>
<domains nbDomains="5">
<domain name="d_heat" nbValues="6">0..5</domain>
<domain name="d_cond" nbValues="5">0..4</domain>
<domain name="d_vent" nbValues="6">0..5</domain>
<domain name="d_humd" nbValues="5">0..4</domain>
<domain name="d_door_wind" nbValues="2">0 1</domain>
</domains>
<variables nbVariables="29">
<variable name="HEAT1" domain="d_heat" agent="a_heat1" />
<variable name="COND1" domain="d_cond" agent="a_cond1" />
<variable name="VENT1" domain="d_vent" agent="a_vent1" />
<variable name="HUMD1" domain="d_humd" agent="a_humd1" />
<variable name="HEAT2" domain="d_heat" agent="a_heat2" />
<variable name="COND2" domain="d_cond" agent="a_cond2" />
<variable name="VENT2" domain="d_vent" agent="a_vent2" />
<variable name="HUMD2" domain="d_humd" agent="a_humd2" />
<variable name="HEAT3" domain="d_heat" agent="a_heat3" />
<variable name="COND3" domain="d_cond" agent="a_cond3" />
<variable name="VENT3" domain="d_vent" agent="a_vent3" />
<variable name="HUMD3" domain="d_humd" agent="a_humd3" />
<variable name="HEAT4" domain="d_heat" agent="a_heat4" />
<variable name="COND4" domain="d_cond" agent="a_cond4" />
<variable name="VENT4" domain="d_vent" agent="a_vent4" />
<variable name="HUMD4" domain="d_humd" agent="a_humd4" />
<variable name="HEAT5" domain="d_heat" agent="a_heat5" />
<variable name="COND5" domain="d_cond" agent="a_cond5" />
<variable name="VENT5" domain="d_vent" agent="a_vent5" />
109
<variable
<variable
<variable
<variable
<variable
<variable
<variable
<variable
<variable
<variable
</variables>
name="HUMD5" domain="d_humd" agent="a_humd5" />
name="DOOR12" domain="d_door_wind" agent="a_door12" />
name="DOOR13" domain="d_door_wind" agent="a_door13" />
name="DOOR14" domain="d_door_wind" agent="a_door14" />
name="DOOR15" domain="d_door_wind" agent="a_door15" />
name="WIND1" domain="d_door_wind" agent="a_wind1" />
name="WIND2" domain="d_door_wind" agent="a_wind2" />
name="WIND3" domain="d_door_wind" agent="a_wind3" />
name="WIND4" domain="d_door_wind" agent="a_wind4" />
name="WIND5" domain="d_door_wind" agent="a_wind5" />
<functions nbFunctions="11">
<function name="powerCostFunction" return="int">
<parameters> int heat int cond int vent int humd </parameters>
<expression>
<functional>add(add(add(mul(200,heat),mul(250,abs(sub(cond,2)))),mul(20,vent)),mul(125,abs(su
b(humd,2))))</functional>
</expression>
</function>
<function name="thermoCostFunction1" return="int">
<parameters> int heat int cond int vent int door12 int wind </parameters>
<expression>
<functional>mul(3,abs(sub(1000,add(add(add(add(add(add(1000,mul(400,heat)),mul(3000,sub(cond,2))),mul(-300,vent)),mul(-1,200)),mul(door12,mul(1,200))),mul(wind,mul(-1,200))))))</functional>
</expression>
</function>
<function name="thermoCostFunction2" return="int">
<parameters> int heat int cond int vent int door12 int door13 int wind
</parameters>
<expression>
<functional>mul(3,abs(sub(1000,add(add(add(add(add(add(add(1000,mul(400,heat)),mul(3000,sub(cond,2))),mul(-300,vent)),mul(-1,200)),mul(door12,mul(1,200))),mul(door13,mul(-1,200))),mul(wind,mul(-1,200))))))</functional>
</expression>
</function>
<function name="thermoCostFunction3" return="int">
<parameters> int heat int cond int vent int door13 int door14 int wind
</parameters>
<expression>
<functional>mul(3,abs(sub(1000,add(add(add(add(add(add(add(1000,mul(400,heat)),mul(3000,sub(cond,2))),mul(-300,vent)),mul(-1,200)),mul(door13,mul(1,200))),mul(door14,mul(-1,200))),mul(wind,mul(-1,200))))))</functional>
</expression>
</function>
<function name="thermoCostFunction4" return="int">
<parameters> int heat int cond int vent int door14 int door15 int wind
</parameters>
<expression>
<functional>mul(3,abs(sub(1000,add(add(add(add(add(add(add(1000,mul(400,heat)),mul(3000,sub(cond,2))),mul(-300,vent)),mul(-1,200)),mul(door14,mul(1,200))),mul(door15,mul(-1,200))),mul(wind,mul(-1,200))))))</functional>
</expression>
</function>
<function name="thermoCostFunction5" return="int">
<parameters> int heat int cond int vent int door15 int wind </parameters>
<expression>
<functional>mul(3,abs(sub(1000,add(add(add(add(add(add(1000,mul(400,heat)),mul(3000,sub(cond,2))),mul(-300,vent)),mul(-1,200)),mul(door15,mul(1,200))),mul(wind,mul(-1,200))))))</functional>
</expression>
</function>
<function name="humCostFunction1" return="int">
<parameters> int humd int door12 int wind </parameters>
<expression>
<functional>mul(3,abs(sub(2000,add(add(add(5000,mul(sub(humd,2),2000)),mul(door12,mul(-5,500))),mul(wind,mul(-5,500))))))</functional>
</expression>
</function>
<function name="humCostFunction2" return="int">
<parameters> int humd int door12 int door13 int wind </parameters>
<expression>
<functional>mul(3,abs(sub(2000,add(add(add(add(5000,mul(sub(humd,2),2000)),mul(door12,mul(-5,500))),mul(door13,mul(-5,500))),mul(wind,mul(5,500))))))</functional>
</expression>
110
</function>
<function name="humCostFunction3" return="int">
<parameters> int humd int door13 int door14 int wind </parameters>
<expression>
<functional>mul(3,abs(sub(2000,add(add(add(add(5000,mul(sub(humd,2),2000)),mul(door13,mul(-5,500))),mul(door14,mul(-5,500))),mul(wind,mul(5,500))))))</functional>
</expression>
</function>
<function name="humCostFunction4" return="int">
<parameters> int humd int door14 door15 int wind </parameters>
<expression>
<functional>mul(3,abs(sub(2000,add(add(add(add(5000,mul(sub(humd,2),2000)),mul(door14,mul(-5,500))),mul(door15,mul(-5,500))),mul(wind,mul(5,500))))))</functional>
</expression>
</function>
<function name="humCostFunction5" return="int">
<parameters> int humd int door15 int wind </parameters>
<expression>
<functional>mul(3,abs(sub(2000,add(add(add(5000,mul(sub(humd,2),2000)),mul(door15,mul(-5,500))),mul(wind,mul(-5,500))))))</functional>
</expression>
</function>
</functions>
<constraints nbConstraints="16">
<constraint name="max_power" arity="20" scope="HEAT1 COND1 VENT1 HUMD1 HEAT2 COND2
VENT2 HUMD2 HEAT3 COND3 VENT3 HUMD3 HEAT4 COND4 VENT4 HUMD4 HEAT5 COND5 VENT5 HUMD5"
reference="global:weightedSum" >
<parameters> [ { 200 HEAT1 } { 250 COND1 } { 20 VENT1 } { 125 HUMD1 } { 200
HEAT2 } { 250 COND2 } { 20 VENT2 } { 125 HUMD2 } { 200 HEAT3 } { 250 COND3 } { 20 VENT3 } { 125
HUMD3 } { 200 HEAT4 } { 250 COND4 } { 20 VENT4 } { 125 HUMD4 } { 200 HEAT5 } { 250 COND5 } { 20
VENT5 } { 125 HUMD5 } ] <le/> 8000 </parameters>
</constraint>
<constraint name="cost_function1" arity="4" scope="HEAT1 COND1 VENT1 HUMD1"
reference="powerCostFunction" >
<parameters>HEAT1 COND1 VENT1 HUMD1</parameters>
</constraint>
<constraint name="cost_function2" arity="4" scope="HEAT2 COND2 VENT2 HUMD2"
reference="powerCostFunction" >
<parameters>HEAT2 COND2 VENT2 HUMD2</parameters>
</constraint>
<constraint name="cost_function3" arity="4" scope="HEAT3 COND3 VENT3 HUMD3"
reference="powerCostFunction" >
<parameters>HEAT3 COND3 VENT3 HUMD3</parameters>
</constraint>
<constraint name="cost_function4" arity="4" scope="HEAT4 COND4 VENT4 HUMD4"
reference="powerCostFunction" >
<parameters>HEAT4 COND4 VENT4 HUMD4</parameters>
</constraint>
<constraint name="cost_function5" arity="4" scope="HEAT5 COND5 VENT5 HUMD5"
reference="powerCostFunction" >
<parameters>HEAT5 COND5 VENT5 HUMD5</parameters>
</constraint>
<constraint name="thermo_cost_function1" arity="5" scope="HEAT1 COND1 VENT1
WIND1" reference="thermoCostFunction1" >
<parameters>HEAT1 COND1 VENT1 DOOR12 WIND1</parameters>
</constraint>
<constraint name="thermo_cost_function2" arity="6" scope="HEAT2 COND2 VENT2
DOOR13 WIND2" reference="thermoCostFunction2" >
<parameters>HEAT2 COND2 VENT2 DOOR12 DOOR13 WIND2</parameters>
</constraint>
<constraint name="thermo_cost_function3" arity="6" scope="HEAT3 COND3 VENT3
DOOR14 WIND3" reference="thermoCostFunction3" >
<parameters>HEAT3 COND3 VENT3 DOOR13 DOOR14 WIND3</parameters>
</constraint>
<constraint name="thermo_cost_function4" arity="6" scope="HEAT4 COND4 VENT4
DOOR15 WIND4" reference="thermoCostFunction4" >
<parameters>HEAT4 COND4 VENT4 DOOR14 DOOR15 WIND4</parameters>
</constraint>
<constraint name="thermo_cost_function5" arity="5" scope="HEAT5 COND5 VENT5
WIND5" reference="thermoCostFunction5" >
<parameters>HEAT5 COND5 VENT5 DOOR15 WIND5</parameters>
</constraint>
<constraint name="hum_cost_function1" arity="3" scope="HUMD1 DOOR12 WIND1"
111
DOOR12
DOOR12
DOOR13
DOOR14
DOOR15
reference="humCostFunction1" >
<parameters>HUMD1 DOOR12 WIND1</parameters>
</constraint>
<constraint name="hum_cost_function2" arity="4" scope="HUMD2
reference="humCostFunction2" >
<parameters>HUMD2 DOOR12 DOOR13 WIND2</parameters>
</constraint>
<constraint name="hum_cost_function3" arity="4" scope="HUMD3
reference="humCostFunction3" >
<parameters>HUMD3 DOOR13 DOOR14 WIND3</parameters>
</constraint>
<constraint name="hum_cost_function4" arity="4" scope="HUMD4
reference="humCostFunction4" >
<parameters>HUMD4 DOOR14 DOOR15 WIND4</parameters>
</constraint>
<constraint name="hum_cost_function5" arity="3" scope="HUMD5
reference="humCostFunction5" >
<parameters>HUMD5 DOOR15 WIND5</parameters>
</constraint>
</constraints>
</instance>
DOOR12 DOOR13 WIND2"
DOOR13 DOOR14 WIND3"
DOOR14 DOOR15 WIND4"
DOOR15 WIND5"
Fig.A.2: Esempio di istanza DCOP corrispondente all’edificio B e alla versione completa del
problema
112
A.3. PROBLEMA RIDOTTO – EDIFICIO A
In Fig. A.3 è mostrato un esempio di DCOP formulato secondo la versione ridotta del problema, che è
stata creata per poter eseguire il problema sull’algoritmo ADOPT, quindi riducendo notevolmente la
complessità rispetto al problema completo. In particolare, sono state effettuate le seguenti modifiche:



E’ stato eliminato il vincolo globale sul limite massimo di potenza
Sono stati eliminati gli agenti, il dominio e le variabili riguardanti i dispositivi di ventilazione; e
di conseguenza sono stati ridotti tutti i vincoli e le funzioni in cui queste variabili erano presenti
Le componenti della funzione di costo riguardanti il comfort termico e igrometrico sono state
ulteriormente ridotte; in particolare, sono state eliminati dei vincoli che rappresentavano alcune
correlazioni tra le zone, come ad esempio il ruolo delle porte nel collegamento tra alcune stanze.
In questo modo diminuisce la complessità dello pseudo-albero creato dal problema, poiché
diminuisce il numero delle relazioni tra i nodi
<instance>
<presentation name="ThermoHygrometricComfortProblem2" maxConstraintArity="4" maximize="false"
format="XCSP 2.1_FRODO" />
<agents nbAgents="25">
<agent name="a_heat1" />
<agent name="a_cond1" />
<agent name="a_humd1" />
<agent name="a_heat2" />
<agent name="a_cond2" />
<agent name="a_humd2" />
<agent name="a_heat3" />
<agent name="a_cond3" />
<agent name="a_humd3" />
<agent name="a_heat4" />
<agent name="a_cond4" />
<agent name="a_humd4" />
<agent name="a_heat5" />
<agent name="a_cond5" />
<agent name="a_humd5" />
<agent name="a_door11" />
<agent name="a_door12" />
<agent name="a_door13" />
<agent name="a_door14" />
<agent name="a_door15" />
<agent name="a_wind1" />
<agent name="a_wind2" />
<agent name="a_wind3" />
<agent name="a_wind4" />
<agent name="a_wind5" />
</agents>
<domains nbDomains="4">
<domain name="d_heat" nbValues="6">0..5</domain>
<domain name="d_cond" nbValues="5">0..4</domain>
<domain name="d_humd" nbValues="5">0..4</domain>
<domain name="d_door_wind" nbValues="2">0 1</domain>
</domains>
<variables nbVariables="25">
<variable agent="a_heat1" domain="d_heat" name="HEAT1"/>
<variable name="COND1" domain="d_cond" agent="a_cond1" />
<variable name="HUMD1" domain="d_humd" agent="a_humd1" />
<variable name="HEAT2" domain="d_heat" agent="a_heat2" />
<variable name="COND2" domain="d_cond" agent="a_cond2" />
<variable name="HUMD2" domain="d_humd" agent="a_humd2" />
<variable name="HEAT3" domain="d_heat" agent="a_heat3" />
<variable name="COND3" domain="d_cond" agent="a_cond3" />
<variable name="HUMD3" domain="d_humd" agent="a_humd3" />
<variable name="HEAT4" domain="d_heat" agent="a_heat4" />
113
<variable
<variable
<variable
<variable
<variable
<variable
<variable
<variable
<variable
<variable
<variable
<variable
<variable
<variable
<variable
</variables>
name="COND4" domain="d_cond" agent="a_cond4" />
name="HUMD4" domain="d_humd" agent="a_humd4" />
name="HEAT5" domain="d_heat" agent="a_heat5" />
name="COND5" domain="d_cond" agent="a_cond5" />
name="HUMD5" domain="d_humd" agent="a_humd5" />
name="DOOR11" domain="d_door_wind" agent="a_door11" />
name="DOOR12" domain="d_door_wind" agent="a_door12" />
name="DOOR13" domain="d_door_wind" agent="a_door13" />
name="DOOR14" domain="d_door_wind" agent="a_door14" />
name="DOOR15" domain="d_door_wind" agent="a_door15" />
name="WIND1" domain="d_door_wind" agent="a_wind1" />
name="WIND2" domain="d_door_wind" agent="a_wind2" />
name="WIND3" domain="d_door_wind" agent="a_wind3" />
name="WIND4" domain="d_door_wind" agent="a_wind4" />
name="WIND5" domain="d_door_wind" agent="a_wind5" />
<functions nbFunctions="11">
<function name="powerCostFunction" return="int">
<parameters> int heat int cond int humd </parameters>
<expression>
<functional>add(add(mul(200,heat),mul(250,abs(sub(cond,2)))),mul(125,abs(sub(humd,2))))</func
tional>
</expression>
</function>
<function name="thermoCostFunction1" return="int">
<parameters> int heat int cond int door int wind </parameters>
<expression>
<functional>mul(3,abs(sub(1000,add(add(add(add(add(1000,mul(400,heat)),mul(3000,sub(cond,2))),mul(-1,200)),mul(door,mul(-1,200))),mul(wind,mul(1,200))))))</functional>
</expression>
</function>
<function name="thermoCostFunction2" return="int">
<parameters> int heat int cond int door int wind </parameters>
<expression>
<functional>mul(3,abs(sub(1000,add(add(add(add(add(1000,mul(400,heat)),mul(3000,sub(cond,2))),mul(-1,200)),mul(door,mul(-1,200))),mul(wind,mul(1,200))))))</functional>
</expression>
</function>
<function name="thermoCostFunction3" return="int">
<parameters> int heat int cond int door int wind </parameters>
<expression>
<functional>mul(3,abs(sub(1000,add(add(add(add(add(1000,mul(400,heat)),mul(3000,sub(cond,2))),mul(-1,200)),mul(door,mul(-1,200))),mul(wind,mul(1,200))))))</functional>
</expression>
</function>
<function name="thermoCostFunction4" return="int">
<parameters> int heat int cond int door int wind </parameters>
<expression>
<functional>mul(3,abs(sub(1000,add(add(add(add(add(1000,mul(400,heat)),mul(3000,sub(cond,2))),mul(-1,200)),mul(door,mul(-1,200))),mul(wind,mul(1,200))))))</functional>
</expression>
</function>
<function name="thermoCostFunction5" return="int">
<parameters> int heat int cond int door int wind </parameters>
<expression>
<functional>mul(3,abs(sub(1000,add(add(add(add(add(1000,mul(400,heat)),mul(3000,sub(cond,2))),mul(-1,200)),mul(door,mul(-1,200))),mul(wind,mul(1,200))))))</functional>
</expression>
</function>
<function name="humCostFunction1" return="int">
<parameters> int humd int wind </parameters>
<expression>
<functional>mul(3,abs(sub(2000,add(add(5000,mul(sub(humd,2),2000)),mul(wind,mul(-5,500))))))</functional>
</expression>
</function>
<function name="humCostFunction2" return="int">
<parameters> int humd int wind </parameters>
<expression>
<functional>mul(3,abs(sub(2000,add(add(5000,mul(sub(humd,2),2000)),mul(wind,mul(-5,500))))))</functional>
114
</expression>
</function>
<function name="humCostFunction3" return="int">
<parameters> int humd int wind </parameters>
<expression>
<functional>mul(3,abs(sub(2000,add(add(5000,mul(sub(humd,2),2000)),mul(wind,mul(-5,500))))))</functional>
</expression>
</function>
<function name="humCostFunction4" return="int">
<parameters> int humd int wind </parameters>
<expression>
<functional>mul(3,abs(sub(2000,add(add(5000,mul(sub(humd,2),2000)),mul(wind,mul(-5,500))))))</functional>
</expression>
</function>
<function name="humCostFunction5" return="int">
<parameters> int humd int wind </parameters>
<expression>
<functional>mul(3,abs(sub(2000,add(add(5000,mul(sub(humd,2),2000)),mul(wind,mul(-5,500))))))</functional>
</expression>
</function>
</functions>
<constraints nbConstraints="15">
<constraint name="cost_function1" arity="3" scope="HEAT1 COND1 HUMD1"
reference="powerCostFunction" >
<parameters>HEAT1 COND1 HUMD1</parameters>
</constraint>
<constraint name="cost_function2" arity="3" scope="HEAT2 COND2 HUMD2"
reference="powerCostFunction" >
<parameters>HEAT2 COND2 HUMD2</parameters>
</constraint>
<constraint name="cost_function3" arity="3" scope="HEAT3 COND3 HUMD3"
reference="powerCostFunction" >
<parameters>HEAT3 COND3 HUMD3</parameters>
</constraint>
<constraint name="cost_function4" arity="3" scope="HEAT4 COND4 HUMD4"
reference="powerCostFunction" >
<parameters>HEAT4 COND4 HUMD4</parameters>
</constraint>
<constraint name="cost_function5" arity="3" scope="HEAT5 COND5 HUMD5"
reference="powerCostFunction" >
<parameters>HEAT5 COND5 HUMD5</parameters>
</constraint>
<constraint name="thermo_cost_function1" arity="4" scope="HEAT1 COND1
reference="thermoCostFunction1" >
<parameters>HEAT1 COND1 DOOR11 WIND1</parameters>
</constraint>
<constraint name="thermo_cost_function2" arity="4" scope="HEAT2 COND2
reference="thermoCostFunction2" >
<parameters>HEAT2 COND2 DOOR12 WIND2</parameters>
</constraint>
<constraint name="thermo_cost_function3" arity="4" scope="HEAT3 COND3
reference="thermoCostFunction3" >
<parameters>HEAT3 COND3 DOOR13 WIND3</parameters>
</constraint>
<constraint name="thermo_cost_function4" arity="4" scope="HEAT4 COND4
reference="thermoCostFunction4" >
<parameters>HEAT4 COND4 DOOR14 WIND4</parameters>
</constraint>
<constraint name="thermo_cost_function5" arity="4" scope="HEAT5 COND5
reference="thermoCostFunction5" >
<parameters>HEAT5 COND5 DOOR15 WIND5</parameters>
</constraint>
<constraint name="hum_cost_function1" arity="2" scope="HUMD1 WIND1"
reference="humCostFunction1" >
<parameters>HUMD1 WIND1</parameters>
</constraint>
<constraint name="hum_cost_function2" arity="2" scope="HUMD2 WIND2"
reference="humCostFunction2" >
<parameters>HUMD2 WIND2</parameters>
</constraint>
<constraint name="hum_cost_function3" arity="2" scope="HUMD3 WIND3"
reference="humCostFunction3" >
<parameters>HUMD3 WIND3</parameters>
</constraint>
115
DOOR11 WIND1"
DOOR12 WIND2"
DOOR13 WIND3"
DOOR14 WIND4"
DOOR15 WIND5"
<constraint name="hum_cost_function4" arity="2" scope="HUMD4 WIND4"
reference="humCostFunction4" >
<parameters>HUMD4 WIND4</parameters>
</constraint>
<constraint name="hum_cost_function5" arity="2" scope="HUMD5 WIND5"
reference="humCostFunction5" >
<parameters>HUMD5 WIND5</parameters>
</constraint>
</constraints>
</instance>
Fig.A.3: Esempio di istanza DCOP corrispondente all’edificio A e alla versione ridotta del
problema
116
Scarica