199 resultados para GPGPU, CUDA, OpenCL, Programmazione Parallela
Resumo:
Agent-oriented programming (AOP) è un paradigma di programmazione che concepisce un software come insieme di agenti che possiedono caratteristiche di autonomia, proattività e che sono in grado di comunicare con altri agenti. Sebbene sia stato impiegato soprattutto nell'ambito dell'intelligenza artificiale questo tipo di programmazione si rivela utile per lo sviluppo di sistemi distribuiti riuscendo a gestire agilmente problemi di concorrenza. Lo scopo di questa tesi è analizzare le caratteristiche del paradigma e dei software basati su agenti, utilizzando come caso di studio Sarl, un linguaggio general-purpose molto recente. La parte principale del lavoro consiste nella descrizione dei modelli teorici che hanno portato alla nascita della programmazione ad agenti, in particolare del modello BDI, e dei principali framework per lo sviluppo di sistemi multi-agente.
Resumo:
In questa tesi viene trattata la problematica di determinare le migliori K soluzioni per due problemi di ottimizzazione, il Knapsack Problem 0-1 e lo Shortest Path Problem. Tali soluzioni possono essere impiegate all'interno di metodi di column generation per la risoluzione di problemi reali, ad esempio Bin Packing Problems e problemi di scheduling di veicoli ed equipaggi. Sono stati implementati, per verificarne sperimentalmente le prestazioni, nuovi algoritmi di programmazione dinamica, sviluppati nell’ambito di un programma di ricerca. Inizialmente, per entrambi i problemi, è stato descritto un algoritmo che determinasse le migliori K soluzioni per ogni possibile sottoproblema; partendo da uno zaino con capacità nulla, nel caso del Knapsack Problem 0-1, e dalla determinazione di un cammino dal vertice sorgente in se stesso per lo Shortest Path Problem, l’algoritmo determina le migliori soluzioni di sottoproblemi via via sempre più grandi, utilizzando le soluzioni costruite per gli stati precedenti, fino a ottenere le migliori soluzioni del problema globale. Successivamente, è stato definito un algoritmo basato su un approccio di ricorsione backward; in questo caso si utilizza una funzione ricorsiva che, chiamata a partire dallo stato corrispondente al problema globale, viene richiamata solo sugli stati intermedi strettamente necessari, e per ognuno di essi non vengono determinate soluzioni superflue.
Resumo:
L’uscita dalla pandemia, il conflitto russo-ucraino e la corsa ai bonus edilizia hanno provocato un generale aumento del prezzo dei materiali edili e delle opere provvisionali. I ponteggi hanno visto particolari rincari, per via del fatto che superbonus e bonus facciate ne richiedono un ampio utilizzo. Nel presente elaborato si è cercata una soluzione a tale criticità nelle direzioni che sta prendendo a livello internazionale il settore delle costruzioni, sulla strada della digitalizzazione e dell’applicazione di soluzioni informatiche in grado di ottimizzare i processi. Si è perciò creato un modello parametrico di ponteggio a telai prefabbricati che si adatti nel miglior modo possibile a ogni tipo di fabbricato. Nello specifico, è stato elaborato un algoritmo che, dati il sedime e l’altezza dell’edificio, generi in maniera automatica il modello tridimensionale del ponteggio, consentendo la visualizzazione immediata del suo sviluppo nello spazio del cantiere e l’estrapolazione di elaborati grafici quali pianta e prospetti. Nella presente dissertazione viene illustrato come è stato sviluppato tale algoritmo, utilizzando il software Revit e in particolare lo strumento di programmazione visiva Dynamo. Infine, poiché l’obiettivo è quello di individuare un algoritmo applicabile a qualsiasi edificio dato, il modello viene testato su un caso di studio particolare: la ristrutturazione di un fabbricato all’interno del complesso Cooperativa Sociale CIM.
Resumo:
Lo scenario televisivo degli ultimi venti anni ha registrato cambiamenti sconvolgenti. Cambiano i modelli di business, le logiche di produzione, distribuzione e di fruizione. Siamo oggi in un mondo ibrido, dove broadcast e broadband si fondono, e sul quale insistono tutti i soggetti in campo: content provider, mvpd, broadcaster free e pay, compagnie telefoniche, piattaforme ott e aggregatori di contenuti. Lo sguardo più profondo però individua nel panorama una costellazione di altre realtà importanti. Gli anni Settanta hanno visto il fiorire in modo impetuoso di tante emittenti locali che hanno fatto la storia della televisione in Italia. L’idea dell’elaborato nasce proprio dalla funzione che queste realtà svolgono oggi, per la loro rilevanza a livello territoriale, culturale e sociale. In particolare, il caso RTV38 in Toscana rappresenta in modo emblematico questo importante ruolo, bilanciato da un lato con un servizio pubblico reso alla comunità, prefigurandosi come vera e propria istituzione, e dall’altro concentrandosi sull’attività strettamente commerciale e privata.
Resumo:
Riba Composites, azienda specializzata nella lavorazione della fibra di materiali compositi avanzati, si trova in una vantaggiosa situazione di sviluppo e ampliamento del proprio raggio d’azione, e dove le informazioni da gestire sono sempre più numerose. E’ quindi risultato necessario un supporto informativo che gestisca le informazioni. Dal punto di vista produttivo, l’introduzione del sistema informativo ha l’obiettivo di rispondere alle problematiche legate alla gestione dei materiali, sia a livello di materie prime, che di semilavorati e prodotti finiti in modo tale da gestirli con efficienza ed evitando le rotture di stock. L’obiettivo di fondo che Riba vuole perseguire é di crescere e svilupparsi in logica di lean production che, nell’ottica della gestione dei magazzini significa “approvvigionare i materiali solamente nel momento in cui si manifesta un fabbisogno”. Quest’approccio abbandona la attuale logica di pianificazione “a spinta” (push) che prevedeva la programmazione degli approvvigionamenti e la produzione di semilavorati e prodotti finiti attraverso previsioni basate sull’analisi di dati storici o di mercato, e non attraverso gli ordini effettivamente acquisiti su cui si basa la logica di produzione “snella” (pull). L’implementazione di un sistema ERP ha richiesto un’analisi approfondita dell’azienda in cui si opera così come del prodotto finito e del processo produttivo, a tal punto da poter riconoscere le esigenze e le necessità a cui dovrà rispondere il sistema informativo. A questa fase di analisi e raccolta dati segue un momento di assestamento del sistema informativo, in cui solo una parte di articoli viene gestita dal sistema per poter procedere contemporaneamente con la graduale formazione del personale. La durata del progetto in questione è stata stimata di circa 20 mesi, tempo necessario per poter adattare il sistema e le diverse personalizzazioni ad un processo così complesso come la lavorazione della fibra di carbonio. Termine previsto Agosto 2010
Resumo:
Nello sviluppo di sistemi informatici si sono affermate numerose tecnologie, che vanno utilizzate in modo combinato e, possibilmente sinergico. Da una parte, i sistemi di gestione di basi di dati relazionali consentono una gestione efficiente ed efficace di dati persistenti, condivisi e transazionali. Dall'altra, gli strumenti e i metodi orientati agli oggetti (linguaggi di programmazione, ma anche metodologie di analisi e progettazione) consentono uno sviluppo efficace della logica applicativa delle applicazioni. E’ utile in questo contesto spiegare che cosa s'intende per sistema informativo e sistema informatico. Sistema informativo: L'insieme di persone, risorse tecnologiche, procedure aziendali il cui compito è quello di produrre e conservare le informazioni che servono per operare nell'impresa e gestirla. Sistema informatico: L'insieme degli strumenti informatici utilizzati per il trattamento automatico delle informazioni, al fine di agevolare le funzioni del sistema informativo. Ovvero, il sistema informatico raccoglie, elabora, archivia, scambia informazione mediante l'uso delle tecnologie proprie dell'Informazione e della Comunicazione (ICT): calcolatori, periferiche, mezzi di comunicazione, programmi. Il sistema informatico è quindi un componente del sistema informativo. Le informazioni ottenute dall'elaborazione dei dati devono essere salvate da qualche parte, in modo tale da durare nel tempo dopo l'elaborazione. Per realizzare questo scopo viene in aiuto l'informatica. I dati sono materiale informativo grezzo, non (ancora) elaborato da chi lo riceve, e possono essere scoperti, ricercati, raccolti e prodotti. Sono la materia prima che abbiamo a disposizione o produciamo per costruire i nostri processi comunicativi. L'insieme dei dati è il tesoro di un'azienda e ne rappresenta la storia evolutiva. All'inizio di questa introduzione è stato accennato che nello sviluppo dei sistemi informatici si sono affermate diverse tecnologie e che, in particolare, l'uso di sistemi di gestione di basi di dati relazionali comporta una gestione efficace ed efficiente di dati persistenti. Per persistenza di dati in informatica si intende la caratteristica dei dati di sopravvivere all'esecuzione del programma che li ha creati. Se non fosse cosi, i dati verrebbero salvati solo in memoria RAM e sarebbero persi allo spegnimento del computer. Nella programmazione informatica, per persistenza si intende la possibilità di far sopravvivere strutture dati all'esecuzione di un programma singolo. Occorre il salvataggio in un dispositivo di memorizzazione non volatile, come per esempio su un file system o su un database. In questa tesi si è sviluppato un sistema che è in grado di gestire una base di dati gerarchica o relazionale consentendo l'importazione di dati descritti da una grammatica DTD. Nel capitolo 1 si vedranno più in dettaglio cosa di intende per Sistema Informativo, modello client-server e sicurezza dei dati. Nel capitolo 2 parleremo del linguaggio di programmazione Java, dei database e dei file XML. Nel capitolo 3 descriveremo un linguaggio di analisi e modellazione UML con esplicito riferimento al progetto sviluppato. Nel capitolo 4 descriveremo il progetto che è stato implementato e le tecnologie e tools utilizzati.
Resumo:
Indagine sulla varietà sintattica presente all'interno dei formalismi di specifica della semantica operazionale strutturale (SOS) di linguaggi di programmazione e calcolo di processi. Rassegna di tool di implementazione con attenzione al grado di copertura linguistica.
Resumo:
Nel lavoro di tesi qui presentato si indaga l'applicazione di tecniche di apprendimento mirate ad una più efficiente esecuzione di un portfolio di risolutore di vincoli (constraint solver). Un constraint solver è un programma che dato in input un problema di vincoli, elabora una soluzione mediante l'utilizzo di svariate tecniche. I problemi di vincoli sono altamente presenti nella vita reale. Esempi come l'organizzazione dei viaggi dei treni oppure la programmazione degli equipaggi di una compagnia aerea, sono tutti problemi di vincoli. Un problema di vincoli è formalizzato da un problema di soddisfacimento di vincoli(CSP). Un CSP è descritto da un insieme di variabili che possono assumere valori appartenenti ad uno specico dominio ed un insieme di vincoli che mettono in relazione variabili e valori assumibili da esse. Una tecnica per ottimizzare la risoluzione di tali problemi è quella suggerita da un approccio a portfolio. Tale tecnica, usata anche in am- biti come quelli economici, prevede la combinazione di più solver i quali assieme possono generare risultati migliori di un approccio a singolo solver. In questo lavoro ci preoccupiamo di creare una nuova tecnica che combina un portfolio di constraint solver con tecniche di machine learning. Il machine learning è un campo di intelligenza articiale che si pone l'obiettivo di immettere nelle macchine una sorta di `intelligenza'. Un esempio applicativo potrebbe essere quello di valutare i casi passati di un problema ed usarli in futuro per fare scelte. Tale processo è riscontrato anche a livello cognitivo umano. Nello specico, vogliamo ragionare in termini di classicazione. Una classicazione corrisponde ad assegnare ad un insieme di caratteristiche in input, un valore discreto in output, come vero o falso se una mail è classicata come spam o meno. La fase di apprendimento sarà svolta utilizzando una parte di CPHydra, un portfolio di constraint solver sviluppato presso la University College of Cork (UCC). Di tale algoritmo a portfolio verranno utilizzate solamente le caratteristiche usate per descrivere determinati aspetti di un CSP rispetto ad un altro; queste caratteristiche vengono altresì dette features. Creeremo quindi una serie di classicatori basati sullo specifico comportamento dei solver. La combinazione di tali classicatori con l'approccio a portfolio sara nalizzata allo scopo di valutare che le feature di CPHydra siano buone e che i classicatori basati su tali feature siano affidabili. Per giusticare il primo risultato, eettueremo un confronto con uno dei migliori portfolio allo stato dell'arte, SATzilla. Una volta stabilita la bontà delle features utilizzate per le classicazioni, andremo a risolvere i problemi simulando uno scheduler. Tali simulazioni testeranno diverse regole costruite con classicatori precedentemente introdotti. Prima agiremo su uno scenario ad un processore e successivamente ci espanderemo ad uno scenario multi processore. In questi esperimenti andremo a vericare che, le prestazioni ottenute tramite l'applicazione delle regole create appositamente sui classicatori, abbiano risultati migliori rispetto ad un'esecuzione limitata all'utilizzo del migliore solver del portfolio. I lavoro di tesi è stato svolto in collaborazione con il centro di ricerca 4C presso University College Cork. Su questo lavoro è stato elaborato e sottomesso un articolo scientico alla International Joint Conference of Articial Intelligence (IJCAI) 2011. Al momento della consegna della tesi non siamo ancora stati informati dell'accettazione di tale articolo. Comunque, le risposte dei revisori hanno indicato che tale metodo presentato risulta interessante.
Resumo:
Il lavoro presentato in questa tesi si colloca nel contesto della programmazione con vincoli, un paradigma per modellare e risolvere problemi di ricerca combinatoria che richiedono di trovare soluzioni in presenza di vincoli. Una vasta parte di questi problemi trova naturale formulazione attraverso il linguaggio delle variabili insiemistiche. Dal momento che il dominio di tali variabili può essere esponenziale nel numero di elementi, una rappresentazione esplicita è spesso non praticabile. Recenti studi si sono quindi focalizzati nel trovare modi efficienti per rappresentare tali variabili. Pertanto si è soliti rappresentare questi domini mediante l'uso di approssimazioni definite tramite intervalli (d'ora in poi rappresentazioni), specificati da un limite inferiore e un limite superiore secondo un'appropriata relazione d'ordine. La recente evoluzione della ricerca sulla programmazione con vincoli sugli insiemi ha chiaramente indicato che la combinazione di diverse rappresentazioni permette di raggiungere prestazioni di ordini di grandezza superiori rispetto alle tradizionali tecniche di codifica. Numerose proposte sono state fatte volgendosi in questa direzione. Questi lavori si differenziano su come è mantenuta la coerenza tra le diverse rappresentazioni e su come i vincoli vengono propagati al fine di ridurre lo spazio di ricerca. Sfortunatamente non esiste alcun strumento formale per paragonare queste combinazioni. Il principale obiettivo di questo lavoro è quello di fornire tale strumento, nel quale definiamo precisamente la nozione di combinazione di rappresentazioni facendo emergere gli aspetti comuni che hanno caratterizzato i lavori precedenti. In particolare identifichiamo due tipi possibili di combinazioni, una forte ed una debole, definendo le nozioni di coerenza agli estremi sui vincoli e sincronizzazione tra rappresentazioni. Il nostro studio propone alcune interessanti intuizioni sulle combinazioni esistenti, evidenziandone i limiti e svelando alcune sorprese. Inoltre forniamo un'analisi di complessità della sincronizzazione tra minlex, una rappresentazione in grado di propagare in maniera ottimale vincoli lessicografici, e le principali rappresentazioni esistenti.
Resumo:
Questa tesi di laurea si pone in continuità rispetto all’esperienza maturata nel Laboratorio di Sintesi Finale di Urbanistica “Spiagge urbane. Paesaggi, luoghi, architetture nella città balneare adriatica”. Nel corso del Laboratorio è stata condotta una riflessione sulle possibili strategie di “dedensificazione” della località balneare di Viserbella, nella Riviera di Rimini. La tesi è quindi l’occasione per ripensare lo sviluppo e la trasformazione di una parte del litorale riminese, creando una città balneare capace di conferire un’impronta indelebile nel tessuto esistente. L’esigenza di “dedensificare” nasce per dare una concreta risposta ad un incontrollato sviluppo turistico che ha creato contemporaneamente l’affascinante prodotto che è la costa romagnola, e il tessuto completamente saturo e senza alcuna pianificazione urbanistica, sviluppatosi, per lo più, tra la linea di costa e la linea ferroviaria. La storia di Viserbella, posta tra Torre Pedrera e Viserba, inizia nei primi decenni del Novecento, ma il vero sviluppo, legato al boom turistico, avviene negli anni Cinquanta, quando la località si satura di edifici, alcuni dei quali di scarso valore architettonico e collocati sull’arenile, e di infrastrutture inefficienti. Lo studio dell’area di progetto si articola in quattro fasi. La prima riguarda l’analisi territoriale della costa romagnola compresa tra Cesenatico e Cattolica, con un raffronto particolare tra la piccola località e la città di Rimini. La seconda parte è volta a ricostruire, invece, le fasi dello sviluppo urbano dell’agglomerato. La ricerca bibliografica, archivistica, cartografica e le interviste agli abitanti ci hanno permesso la ricostruzione della storia di Viserbella. La terza parte si concentra sull’analisi urbana, territoriale, ambientale e infrastrutturale e sull’individuazione delle criticità e delle potenzialità della località determinate, in particolar modo, dai sopraluoghi e dai rilievi fotografici. Basilari sono state, in questo senso, le indagini svolte tra i residenti che ci hanno mostrato le reali necessità e le esigenze della località e il raffronto con gli strumenti urbanistici vigenti. La fase di ricerca è stata seguita da diversi docenti e professionisti che hanno lavorato con noi per approfondire diversi aspetti come i piani urbanistici, lo studio del paesaggio e dell’area. Con i risultati ottenuti dalle indagini suddette abbiamo redatto il metaprogetto alla scala urbana che identifica le strategie di indirizzo attraverso le quali si delineano le azioni di programmazione, finalizzate al raggiungimento di un risultato. La conoscenza del territorio, le ricerche e le analisi effettuate, permettono infatti di poter operare consapevolmente nella quarta fase: quella progettuale. Il progetto urbanistico di “dedensificazione” per la località di Viserbella ha come presupposto primario la sostituzione dell’attuale linea ferroviaria Rimini-Ravenna con una linea a raso che migliori i collegamenti con le località vicine e la qualità della vita, dando ulteriori possibilità di sviluppo all’insediamento oltre la ferrovia. Da questo emergono gli altri obiettivi progettuali tra cui: riqualificare l’area a monte della ferrovia che attualmente si presenta degradata e abbandonata; rafforzare e creare connessioni tra entroterra e litorale; riqualificare il tessuto esistente con l’inserimento di spazi pubblici e aree verdi per la collettività; “restituire” la spiaggia al suo uso tradizionale, eliminando gli edifici presenti sull’arenile; migliorare i servizi esistenti e realizzarne di nuovi allo scopo di rinnovare la vita della collettività e di creare spazi adeguati alle esigenze di tutti. Restituire un’identità a questo luogo, è l’intento primario raggiungibile integrando gli elementi artificiali con quelli naturali e creando un nuovo skyline della città. La progettazione della nuova Viserbella pone le basi per forgiare degli spazi urbani e naturali vivibili dagli abitanti della località e dai turisti, sia in estate che in inverno.
Resumo:
La tesi tratta aspetti relativi all'ottimizzazione strutturale. Algoritmi di ottimizzazione scritti in linguaggio di programmazione Python, sia basati sul metodo del simplesso che di tipo gentico, sono stati integrati in ambiente Salome-Meca/CAE ed applicati ad esempi di interesse strutturale.
Resumo:
La frenetica evoluzione sociale e culturale, data dal crescente e continuo bisogno di conoscenza dell’uomo, ha portato oggi a navigare in un oceano sconfinato di dati e informazioni. Esse assumono una propria peculiare importanza, un valore sia dal punto di vista del singolo individuo, sia all’interno di un contesto sociale e di un settore di riferimento specifico e concreto. La conseguente mutazione dell’interazione e della comunicazione a livello economico della società, ha portato a parlare oggi di economia dell’informazione. In un contesto in cui l’informazione rappresenta la risorsa principale per l’attività di crescita e sviluppo economico, è fondamentale possedere la più adeguata strategia organizzativa per la gestione dei dati grezzi. Questo per permetterne un’efficiente memorizzazione, recupero e manipolazione in grado di aumentare il valore dell’organizzazione che ne fa uso. Un’informazione incompleta o non accurata può portare a valutazioni errate o non ottimali. Ecco quindi la necessità di gestire i dati secondo specifici criteri al fine di creare un proprio vantaggio competitivo. La presente rassegna ha lo scopo di analizzare le tecniche di ottimizzazione di accesso alle basi di dati. La loro efficiente implementazione è di fondamentale importanza per il supporto e il corretto funzionamento delle applicazioni che ne fanno uso: devono garantire un comportamento performante in termini di velocità, precisione e accuratezza delle informazioni elaborate. L’attenzione si focalizzerà sulle strutture d’indicizzazione di tipo gerarchico: gli alberi di ricerca. Verranno descritti sia gli alberi su dati ad una dimensione, sia quelli utilizzati nel contesto di ricerche multi dimensionali (come, ad esempio, punti in uno spazio). L’ingente sforzo per implementare strutture di questo tipo ha portato gli sviluppatori a sfruttare i principi di ereditarietà e astrazione della programmazione ad oggetti al fine di ideare un albero generalizzato che inglobasse in sé tutte le principali caratteristiche e funzioni di una struttura di indicizzazione gerarchica, così da aumentarne la riusabilità per i più particolari utilizzi. Da qui la presentazione della struttura GiST: Generalized Search Tree. Concluderà una valutazione dei metodi d’accesso esposti nella dissertazione con un riepilogo dei principali dati relativi ai costi computazionali, vantaggi e svantaggi.
Resumo:
Il Cloud Storage è un modello di conservazione dati su computer in rete, dove i dati stessi sono memorizzati su molteplici server, reali e/o virtuali, generalmente ospitati presso strutture di terze parti o su server dedicati. Tramite questo modello è possibile accedere alle informazioni personali o aziendali, siano essi video, fotografie, musica, database o file in maniera “smaterializzata”, senza conoscere l’ubicazione fisica dei dati, da qualsiasi parte del mondo, con un qualsiasi dispositivo adeguato. I vantaggi di questa metodologia sono molteplici: infinita capacita’ di spazio di memoria, pagamento solo dell’effettiva quantità di memoria utilizzata, file accessibili da qualunque parte del mondo, manutenzione estremamente ridotta e maggiore sicurezza in quanto i file sono protetti da furto, fuoco o danni che potrebbero avvenire su computer locali. Google Cloud Storage cade in questa categoria: è un servizio per sviluppatori fornito da Google che permette di salvare e manipolare dati direttamente sull’infrastruttura di Google. In maggior dettaglio, Google Cloud Storage fornisce un’interfaccia di programmazione che fa uso di semplici richieste HTTP per eseguire operazioni sulla propria infrastruttura. Esempi di operazioni ammissibili sono: upload di un file, download di un file, eliminazione di un file, ottenere la lista dei file oppure la dimensione di un dato file. Ogniuna di queste richieste HTTP incapsula l’informazione sul metodo utilizzato (il tipo di richista, come GET, PUT, ...) e un’informazione di “portata” (la risorsa su cui effettuare la richiesta). Ne segue che diventa possibile la creazione di un’applicazione che, facendo uso di queste richieste HTTP, fornisce un servizio di Cloud Storage (in cui le applicazioni salvano dati in remoto generalmene attraverso dei server di terze parti). In questa tesi, dopo aver analizzato tutti i dettagli del servizio Google Cloud Storage, è stata implementata un’applicazione, chiamata iHD, che fa uso di quest’ultimo servizio per salvare, manipolare e condividere dati in remoto (nel “cloud”). Operazioni comuni di questa applicazione permettono di condividere cartelle tra più utenti iscritti al servizio, eseguire operazioni di upload e download di file, eliminare cartelle o file ed infine creare cartelle. L’esigenza di un’appliazione di questo tipo è nata da un forte incremento, sul merato della telefonia mobile, di dispositivi con tecnologie e con funzioni sempre più legate ad Internet ed alla connettività che esso offre. La tesi presenta anche una descrizione delle fasi di progettazione e implementazione riguardanti l’applicazione iHD. Nella fase di progettazione si sono analizzati tutti i requisiti funzionali e non funzionali dell’applicazione ed infine tutti i moduli da cui è composta quest’ultima. Infine, per quanto riguarda la fase di implementazione, la tesi presenta tutte le classi ed i rispettivi metodi presenti per ogni modulo, ed in alcuni casi anche come queste classi sono state effettivamente implementate nel linguaggio di programmazione utilizzato.