1000 resultados para Algoritmo Científico. Computação Evolucionária. Metaheurísticas. Problema do Caixeiro Alugador
Resumo:
Este projecto tem como objectivo a optimização das rotas dos técnicos de serviço após venda da Schmitt+Sohn Elevadores, associadas à realização das manutenções preventivas a cada elemento contratado à empresa (elevadores, escadas rolantes, etc). Como tal, é necessário fazer uma distribuição dos equipamentos que se encontram em carteira, por um dos técnicos que assegura a manutenção, pelos vários dias úteis de cada mês, e pelas horas de trabalho de cada dia. Apesar do técnico ter disponíveis, por dia, 8h de trabalho, apenas 6h podem ser preenchidas com manutenções preventivas. As 2h restantes são essencialmente para possíveis manutenções correctivas para as quais o técnico seja solicitado. Caso o técnico não seja contactado para resolver nenhuma avaria, essas horas podem ser utilizadas pelo mesmo para adiantar trabalho do dia seguinte, isto é, visitar já alguns dos próximos pontos de manutenção preventiva do dia seguinte, ou para compensar trabalho que esteja atrasado. De salientar que, para cada dia, as deslocações do técnico de qualquer local ao primeiro ponto de uma rota ou de regresso do último ponto de uma rota não são contabilizadas. O trabalho desenvolvido nesta dissertação pretende dar resposta ao problema apresentado pela Schmitt+Sohn Elevadores. Para isso foi desenvolvida uma heurística para a optimização das rotas dos técnicos. Esta é baseada no conceito de “vizinho mais próximo” que procura sempre o ponto que se apresenta mais perto do último ponto que foi adicionado à rota. Com base nesta metodologia, nos processos de escolha dos pontos que formam clusters, e na selecção dos pontos iniciais de cada uma das rotas diárias, a ferramenta de optimização resultante define as rotas diárias para que o percurso efectuado por cada técnico num mês seja o menor possível. São feitas alterações às rotas definidas inicialmente quando encontrados pontos de uma mesma entrada a serem visitados em dias diferentes. Isto obrigaria o técnico a fazer duas viagens ao mesmo local. Por fim, o resultado é apresentado num documento Word a ser utilizado pelo técnico como guia diário das suas deslocações aos equipamentos que necessitam de verificações periódicas. Os resultados obtidos foram comparados com as rotas que estavam a ser usadas pela empresa, tendo apresentado resultados de melhor qualidade, constatando-se a eficiência da solução criada pelo algoritmo proposto neste trabalho.
Resumo:
Dissertação para obtenção do Grau de Mestre em Engenharia Informática
Resumo:
Dissertação para obtenção do Grau de Mestre em Engenharia Informática
Resumo:
Face à estagnação da tecnologia uniprocessador registada na passada década, aos principais fabricantes de microprocessadores encontraram na tecnologia multi-core a resposta `as crescentes necessidades de processamento do mercado. Durante anos, os desenvolvedores de software viram as suas aplicações acompanhar os ganhos de performance conferidos por cada nova geração de processadores sequenciais, mas `a medida que a capacidade de processamento escala em função do número de processadores, a computação sequencial tem de ser decomposta em várias partes concorrentes que possam executar em paralelo, para que possam utilizar as unidades de processamento adicionais e completar mais rapidamente. A programação paralela implica um paradigma completamente distinto da programação sequencial. Ao contrário dos computadores sequenciais tipificados no modelo de Von Neumann, a heterogeneidade de arquiteturas paralelas requer modelos de programação paralela que abstraiam os programadores dos detalhes da arquitectura e simplifiquem o desenvolvimento de aplicações concorrentes. Os modelos de programação paralela mais populares incitam os programadores a identificar instruções concorrentes na sua lógica de programação, e a especificá-las sob a forma de tarefas que possam ser atribuídas a processadores distintos para executarem em simultâneo. Estas tarefas são tipicamente lançadas durante a execução, e atribuídas aos processadores pelo motor de execução subjacente. Como os requisitos de processamento costumam ser variáveis, e não são conhecidos a priori, o mapeamento de tarefas para processadores tem de ser determinado dinamicamente, em resposta a alterações imprevisíveis dos requisitos de execução. `A medida que o volume da computação cresce, torna-se cada vez menos viável garantir as suas restrições temporais em plataformas uniprocessador. Enquanto os sistemas de tempo real se começam a adaptar ao paradigma de computação paralela, há uma crescente aposta em integrar execuções de tempo real com aplicações interativas no mesmo hardware, num mundo em que a tecnologia se torna cada vez mais pequena, leve, ubíqua, e portável. Esta integração requer soluções de escalonamento que simultaneamente garantam os requisitos temporais das tarefas de tempo real e mantenham um nível aceitável de QoS para as restantes execuções. Para tal, torna-se imperativo que as aplicações de tempo real paralelizem, de forma a minimizar os seus tempos de resposta e maximizar a utilização dos recursos de processamento. Isto introduz uma nova dimensão ao problema do escalonamento, que tem de responder de forma correcta a novos requisitos de execução imprevisíveis e rapidamente conjeturar o mapeamento de tarefas que melhor beneficie os critérios de performance do sistema. A técnica de escalonamento baseado em servidores permite reservar uma fração da capacidade de processamento para a execução de tarefas de tempo real, e assegurar que os efeitos de latência na sua execução não afectam as reservas estipuladas para outras execuções. No caso de tarefas escalonadas pelo tempo de execução máximo, ou tarefas com tempos de execução variáveis, torna-se provável que a largura de banda estipulada não seja consumida por completo. Para melhorar a utilização do sistema, os algoritmos de partilha de largura de banda (capacity-sharing) doam a capacidade não utilizada para a execução de outras tarefas, mantendo as garantias de isolamento entre servidores. Com eficiência comprovada em termos de espaço, tempo, e comunicação, o mecanismo de work-stealing tem vindo a ganhar popularidade como metodologia para o escalonamento de tarefas com paralelismo dinâmico e irregular. O algoritmo p-CSWS combina escalonamento baseado em servidores com capacity-sharing e work-stealing para cobrir as necessidades de escalonamento dos sistemas abertos de tempo real. Enquanto o escalonamento em servidores permite partilhar os recursos de processamento sem interferências a nível dos atrasos, uma nova política de work-stealing que opera sobre o mecanismo de capacity-sharing aplica uma exploração de paralelismo que melhora os tempos de resposta das aplicações e melhora a utilização do sistema. Esta tese propõe uma implementação do algoritmo p-CSWS para o Linux. Em concordância com a estrutura modular do escalonador do Linux, ´e definida uma nova classe de escalonamento que visa avaliar a aplicabilidade da heurística p-CSWS em circunstâncias reais. Ultrapassados os obstáculos intrínsecos `a programação da kernel do Linux, os extensos testes experimentais provam que o p-CSWS ´e mais do que um conceito teórico atrativo, e que a exploração heurística de paralelismo proposta pelo algoritmo beneficia os tempos de resposta das aplicações de tempo real, bem como a performance e eficiência da plataforma multiprocessador.
Resumo:
O objetivo desta dissertação é a determinação da máxima injeção nodal numa rede de energia elétrica, ou seja, qual o valor total máximo de potência ativa que é possível injetar e qual a sua distribuição pelos diversos nós da rede simultaneamente. Determinámos esta máxima injeção nodal em duas situações distintas: injeção não simultânea, injetando potência em um só nó de cada vez e injeção simultânea, injetando potência em todos os nós da rede simultaneamente. Sendo este um problema de natureza combinatória, utilizámos para esta determinação o algoritmo conhecido como nuvem ou enxame de partículas, adaptando-o ao nosso problema. Desenvolvemos o software na linguagem de programação Python utilizando o ambiente Eclipse. Para resolver o trânsito de energia utilizámos o programa PSSE University.Para os exemplos de aplicação utilizámos duas redes de energia elétrica, uma de 6 e outra de 14 barramentos. Estas redes foram baseadas nas redes IEEE 6 BUS e IEEE 14 BUS respetivamente. Concluímos que o algoritmo nuvem ou enxame de partículas cumpriu o objetivo traçado, obtendo as melhores soluções para cada um dos casos, máxima injeção nodal não simultânea e máxima injeção nodal simultânea. No contexto deste problema, o parâmetro chave do algoritmo, comprovado pelos ensaios feitos, é a velocidade máxima de deslocação das partículas, tomando valores típicos de 7 a 10 para a rede de 6 barramentos e de 20 a 25 para a de 14 barramentos.
Resumo:
Dados atuais da Organização Mundial da Saúde (OMS) sobre a prevalência global da perda auditiva, indicam que mais de 360 milhões de pessoas no mundo sofrem de perda auditiva incapacitante. Sendo esta uma deficiência sensorial que afeta a comunicação e o inter-relacionamento das pessoas é particularmente limitante na população idosa e nos primeiros anos de vida. Atualmente a ciência e a tecnologia permitem a reabilitação auditiva de forma muito aceitável. No entanto, quando se trata de crianças com surdez congénita, a re(h)abilitação tem que ser eficaz, sendo importante avaliar a perceção auditiva (se ouve, o que ouve, como ouve). Considerando que a re(h)abilitação deve iniciar-se o mais cedo possível, é importante ter instrumentos que permitam perceber realmente não só se ouve, o que se ouve, mas também como se ouve, ajustando os equipamentos a cada caso. A presente tese apresenta um estudo onde se utilizou o Eletroencefalograma (EEG) como instrumento de avaliação do efeito das próteses auditivas, em crianças com surdez congénita adaptadas proteticamente, numa perspetiva de Avaliação de Tecnologia. A utilização nos casos do estudo pretendeu comparar a variação dos sinais cerebrais obtidos no EEG efetuado quando a criança com e sem as próteses auditivas foi submetida a um estímulo sonoro, dando ideia sobre a funcionalidade das mesmas. A validação do EEG neste contexto, teria o potencial de ser associado à re(h)abilitação auditiva como rotina, contribuindo para a otimização da funcionalidade das próteses auditivas desde o primeiro momento da adaptação. Esta utilização seria útil não só nas crianças mas também noutras situações, nomeadamente em indivíduos impedidos de verbalizar as suas queixas (que sofreram AVC, com atraso cognitivo, demência, entre outros). A análise e interpretação dos sinais de EEG mostrou-se inesperadamente complexa, possivelmente devido a interferências de estímulos visuais e outras fontes de distração presentes no momento em que o EEG foi realizado, levando apenas a uma análise qualitativa do resultado: Verificou-se que o EEG pode ser utilizado mesmo nas pessoas que têm próteses auditivas; o sinal de EEG apresenta variação quando a criança tem ou não as próteses auditivas colocadas; mas não foi possível correlacionar a variação do sinal de EEG com o som produzido ou a capacidade de escutar através de um algoritmo de MATLAB (ou EEGLAB), simples e reprodutível. A perspetiva da Avaliação de Tecnologia acompanhou este estudo desde o início, orientando a identificação do problema e a pesquisa bibliográfica inicial, e prosseguindo ao longo de toda a tese, levando ao aprofundamento de cada tema e subtema pensado ou relacionado com o assunto em estudo. Mais do que avaliar, esta metodologia de Avaliação de Tecnologia permitiu construir um enquadramento científico, político e de saúde sobre a surdez congénita, quando estudada nos mais novos adaptados proteticamente, resultando numa sequência de secções e subsecções teóricas que constituem o state of the art atual e completo. Foi também a Avaliação de Tecnologia que evidenciou a importância que a avaliação do efeito das próteses auditivas possa ter na re(h)abilitação auditiva, apresentando pistas que poderão ser úteis na tomada de decisão sobre o tipo de próteses, sobre a forma mais eficaz de as adequar às necessidades do défice da criança com surdez congénita, realçando a atualidade e interesse crescente que a metodologia aqui apresentada vem suscitando entre investigadores, engenheiros, profissionais de saúde e cuidadores, em todo o mundo.
Resumo:
A Digital Breast Tomosynthesis (DBT) é uma técnica que permite obter imagens mamárias 3D de alta qualidade, que só podem ser obtidas através de métodos de re-construção. Os métodos de reconstrução mais rápidos são os iterativos, sendo no en-tanto computacionalmente exigentes, necessitando de sofrer muitas optimizações. Exis-tem optimizações que usam computação paralela através da implementação em GPUs usando CUDA. Como é sabido, o desenvolvimento de programas eficientes que usam GPUs é ainda uma tarefa demorada, dado que os modelos de programação disponíveis são de baixo nível, e a portabilidade do código para outras arquitecturas não é imedia-ta. É uma mais valia poder criar programas paralelos de forma rápida, com possibili-dade de serem usados em diferentes arquitecturas, sem exigir muitos conhecimentos sobre a arquitectura subjacente e sobre os modelos de programação de baixo nível. Para resolver este problema, propomos a utilização de soluções existentes que reduzam o esforço de paralelização, permitindo a sua portabilidade, garantindo ao mesmo tempo um desempenho aceitável. Para tal, vamos utilizar um framework (FastFlow) com suporte para Algorithmic Skeletons, que tiram partido da programação paralela estruturada, capturando esquemas/padrões recorrentes que são comuns na programação paralela. O trabalho realizado centrou-se na paralelização de uma das fases de reconstru-ção da imagem 3D – geração da matriz de sistema – que é uma das mais demoradas do processo de reconstrução; esse trabalho incluiu um método de ordenação modificado em relação ao existente. Foram realizadas diferentes implementações em CPU e GPU (usando OpenMP, CUDA e FastFlow) o que permitiu comparar estes ambientes de programação em termos de facilidade de desenvolvimento e eficiência da solução. A comparação feita permite concluir que o desempenho das soluções baseadas no FastFlow não é muito diferente das tradicionais o que sugere que ferramentas deste tipo podem simplificar e agilizar a implementação de um algoritmos na área de recons-trução de imagens 3D, mantendo um bom desempenho.
Resumo:
Dissertação de mestrado integrado em Engenharia Civil
Resumo:
La verificación y el análisis de programas con características probabilistas es una tarea necesaria del quehacer científico y tecnológico actual. El éxito y su posterior masificación de las implementaciones de protocolos de comunicación a nivel hardware y soluciones probabilistas a problemas distribuidos hacen más que interesante el uso de agentes estocásticos como elementos de programación. En muchos de estos casos el uso de agentes aleatorios produce soluciones mejores y más eficientes; en otros proveen soluciones donde es imposible encontrarlas por métodos tradicionales. Estos algoritmos se encuentran generalmente embebidos en múltiples mecanismos de hardware, por lo que un error en los mismos puede llegar a producir una multiplicación no deseada de sus efectos nocivos.Actualmente el mayor esfuerzo en el análisis de programas probabilísticos se lleva a cabo en el estudio y desarrollo de herramientas denominadas chequeadores de modelos probabilísticos. Las mismas, dado un modelo finito del sistema estocástico, obtienen de forma automática varias medidas de performance del mismo. Aunque esto puede ser bastante útil a la hora de verificar programas, para sistemas de uso general se hace necesario poder chequear especificaciones más completas que hacen a la corrección del algoritmo. Incluso sería interesante poder obtener automáticamente las propiedades del sistema, en forma de invariantes y contraejemplos.En este proyecto se pretende abordar el problema de análisis estático de programas probabilísticos mediante el uso de herramientas deductivas como probadores de teoremas y SMT solvers. Las mismas han mostrado su madurez y eficacia en atacar problemas de la programación tradicional. Con el fin de no perder automaticidad en los métodos, trabajaremos dentro del marco de "Interpretación Abstracta" el cual nos brinda un delineamiento para nuestro desarrollo teórico. Al mismo tiempo pondremos en práctica estos fundamentos mediante implementaciones concretas que utilicen aquellas herramientas.
Resumo:
Este trabajo analiza el rendimiento de cuatro nodos de cómputo multiprocesador de memoria compartida para resolver el problema N-body. Se paraleliza el algoritmo serie, y se codifica usando el lenguaje C extendido con OpenMP. El resultado son dos variantes que obedecen a dos criterios de optimización diferentes: minimizar los requisitos de memoria y minimizar el volumen de cómputo. Posteriormente, se realiza un proceso de análisis de las prestaciones del programa sobre los nodos de cómputo. Se modela el rendimiento de las variantes secuenciales y paralelas de la aplicación, y de los nodos de cómputo; se instrumentan y ejecutan los programas para obtener resultados en forma de varias métricas; finalmente se muestran e interpretan los resultados, proporcionando claves que explican ineficiencias y cuellos de botella en el rendimiento y posibles líneas de mejora. La experiencia de este estudio concreto ha permitido esbozar una incipiente metodología de análisis de rendimiento, identificación de problemas y sintonización de algoritmos a nodos de cómputo multiprocesador de memoria compartida.
Resumo:
BOLD APS es un software diseñado para solventar el problema de la planificación de la producción. Como tal, cuenta con un algoritmo, en continuo desarrollo, cuya función es tomar las decisiones oportunas para obtener una buena programación de tareas. Este proyecto consta de dos fases: la principal comprende el diseño e implementación de una nueva sección dentro del algoritmo de planificación de la producción que utiliza la empresa Global Planning Solution, con el objetivo de ofrecer mejoras en la calidad de las soluciones actuales; la fase secundaria consiste en una labor de depuración, limpieza y ordenación del código, para facilitar su comprensión y posterior modificación.
Resumo:
El agoritmo Rho de Pollard es uno de los mejores conocidos para resolver el problema del logaritmo discreto. Se trata de una implementación de una paralelización utilizando MPI sobre un clúster. El lector encontrará en este proyecto el algoritmo de paralelización utilizado, así como, un conjunto de pruebas y resultados de la ejecución debidamente analizados.
Resumo:
Peer-reviewed
Resumo:
El problema de la regresión simbólica consiste en el aprendizaje, a partir de un conjunto muestra de datos obtenidos experimentalmente, de una función desconocida. Los métodos evolutivos han demostrado su eficiencia en la resolución de instancias de dicho problema. En este proyecto se propone una nueva estrategia evolutiva, a través de algoritmos genéticos, basada en una nueva estructura de datos denominada Straight Line Program (SLP) y que representa en este caso expresiones simbólicas. A partir de un SLP universal, que depende de una serie de parámetros cuya especialización proporciona SLP's concretos del espacio de búsqueda, la estrategia trata de encontrar los parámetros óptimos para que el SLP universal represente la función que mejor se aproxime al conjunto de puntos muestra. De manera conceptual, este proyecto consiste en un entrenamiento genético del SLP universal, utilizando los puntos muestra como conjunto de entrenamiento, para resolver el problema de la regresión simbólica.
Resumo:
Peer-reviewed