Co-orientação: Prof. Dr. Ana Isabel Pereira (Dep. de Matemática)
A programação multilocal tem como objectivo determinar óptimos globais e locais de uma função real de variáveis reais. Este tipo de problemas aparece em variadíssimas áreas da engenharia, como por exemplo, na área dos testes de colisão, química analítica e conforto de automóveis. O SSA (Streched Simulated Annealing) é um algoritmo matemático cujo objectivo é resolver este tipo de problemas. Neste contexto foi desenvolvida uma implementação em C, de interface muito simples (baseada em linha de comando), mas que corre apenas em ambiente Windows. A implementação recorre ao AMPL (A Modeling Language for Mathematical Programming), para o qual também existe versão para ambientes Linux.
Objectivos: 1) portar a implementação actual do SSA para ambiente Linux, mantendo o interface de linha de comando; 2) estudar e aplicar estratégias de optimização do código portado; 3) estudar e aplicar estratégias de paralelização do código optimizado, para executar em ambiente cluster; 4) desenvolver um interface gráfico multiplataforma (em wxPython), para ambas as versões do SSA (Windows e Linux). NOTA: o número de objectivos e o seu grau de realização poderão ser re-ajustados às competências específicas do mestrando.
No cluster do Laboratório de Informática existe em funcionamento um protótipo da plataforma Domus. Basicamente, esta plataforma suporta a criação, gestão e operação de múltiplas Tabelas de Hash Distribuídas (DHTs), num ambiente de tipo cluster. Uma DHT representa uma forma de realizar um Dicionário Distribuído, ou seja, um repositório de pares <chave,valor>, suportado por várias máquinas. A interacção dos utilizadores o Domus faz-se nativamente através de uma biblioteca – a biblioteca Domus - baseada na linguagem Python, existindo também um interface (experimental) em C. A plataforma Domus encontra-se profusamente documentada em http://www.ipb.pt/~rufino/domus.
Objectivo: desenvolvimento de um sistema de ficheiros distribuído assente nas DHTs oferecidas pela plataforma Domus. A ideia básica é usar uma DHT como repositório de blocos. Desta forma, os blocos de um ficheiro (unidades mínima, de dimensão uniforme, em que os ficheiros são divididos, para efeitos de armazenaento) serão distribuídos pelas várias máquinas que suportam a DHT. A implementação da estrutura hierárquica do sistema de ficheiros, e das sua funcionalidades normais de acesso será feita explorando o toolkit FUSE – Filesystem in Userspace (http://fuse.sourceforge.net/). Este permite, basicamente, construir sistemas de ficheiros sem programação ao nível do kernel do SO.
Proponente: Ciengis – Sistemas de Controlo Avançado, S.A.
As técnicas de controlo avançado, nomeadamente, controlo preditivo não-linear trazem vantagens económicas na operação de processos industriais pela sua capacidade de optimização multivariável não-linear das condições operatórias. Contudo, de ponto de vista computacional, o controlo preditivo é um problema de natureza complexa uma vez que para além de não-linearidade e da multivariabilidade dos processos, lida com problemas de alta dimensão e com um elevado número de restrições a ter em conta de forma explícita. A Ciengis desenvolveu uma solução de controlo preditivo onde se distinguem três etapas principais: 1. decomposição do problema de previsão em vários subproblemas, recorrendo à estratégia de “multiple shooting”; 2. resolução sequencial dos subproblemas criados; 3. resolução do problema de controlo (optimização) com base nas soluções dos diversos subproblemas.
Pretende-se com este projecto estudar e implementar uma estratégia de paralelização da segunda etapa, por via de utilização de uma ferramenta/biblioteca específica. O objectivo é diminuir o tempo necessário para a resolução do problema global, o que permitirá tirar maior partido das potencialidades do controlador.
O desempenho da solução paralelizada será avaliado recorrendo a um simulador de um processo da indústria transformadora de larga escala, por comparação directa com a versão sequencial.
O trabalho desenvolver-se-á em ambiente Linux e requer do/a estagiário/a conhecimento das ferramentas de desenvolvimento e das linguagens de programação C e C++ e alguma experiência com bibliotecas/API de computação paralela, como utilizador.
O projecto envolverá as seguintes fases: 1. familiarização com o sistema e as ferramentas de desenvolvimento; 2. estudo e comparação de várias bibliotecas de computação paralela; 3. especificação da interface do módulo de paralelização com o sistema de controlo preditivo actual; 4. implementação do módulo de computação paralela; 5. validação do sistema por simulação de um processo sob controlo; 6. avaliação do desempenho por comparação com a situação anterior; 7. identificação de oportunidades para melhoramentos futuros; 8. escrita de documentação; 9. escrita do relatório final.
Meios Necessários: 1. Documentação da API do módulo de previsão actual 2. Computador e ligação à Internet (se o trabalho não decorrer nas instalações da Ciengis)
Observações: A Ciengis encontra-se disponível para receber o/a estagiário/a nas suas instalações (Instituto Pedro Nunes, Coimbra) no decurso do trabalho. Não se opõem, porém, a que a realização deste decorra noutro local (IPB ou outro) se for do interesse do/a estagiário/a.
O/A estagiário/a (bem assim o IPB) ficarão obrigados a respeitar acordo de confidencialidade e direitos de propriedade intelectual.