87 resultados para Programming languages (Electronic computers)
Resumo:
Mestrado em Engenharia Electrotécnica e de Computadores
Resumo:
O objectivo do projecto descrito nesta dissertação é o desenvolvimento da interface entre as empresas e a plataforma Business-to-Business (B2B) de negociação automática de anúncios em construção. A plataforma, no seu todo, deve garantir que os intervalos da programação são preenchidos com um alinhamento de anúncios compatível com os interesses expressos e o perfil construído dos espectadores. A plataforma funciona como um mercado electrónico de negociação automática destinado a agências de publicidade (empresas produtoras) e empresas provedoras de conteúdos e serviços multimédia aos consumidores finais (empresas distribuidoras). As empresas, uma vez registadas na plataforma, passam a ser representadas por agentes que negoceiam automaticamente os itens submetidos com o comportamento especificado. Do ponto de vista da arquitectura, a plataforma consiste num sistema multiagente organizado em três camadas compostas por: (i) agentes de interface com as empresas; (ii) agentes de modelação das empresas; e (iii) agentes delegados, de duração efémera, exclusivamente criados para participar em negociações específicas de conteúdos multimédia. Cada empresa representada na plataforma possui, para além de um número indeterminado de delegados envolvidos em negociações específicas, dois agentes: (i) o agente de interface com a empresa, que expõe um conjunto de operações de interface ao exterior através de um serviço Web, localizado na primeira camada; e (ii) o agente que modela a empresa na plataforma, que expõe através de um serviço Web um conjunto de operações aos agentes das restantes camadas da plataforma, residente na camada intermédia. Este projecto focou-se no desenvolvimento da camada superior de interface da plataforma com as empresas e no enriquecimento da camada intermédia. A realização da camada superior incluiu a especificação da parte da ontologia da plataforma que dá suporte às operações de interface com o exterior, à sua exposição como serviços Web e à criação e controlo dos agentes de interface. Esta camada superior deve permitir às empresas carregar e descarregar toda informação relevante de e para a plataforma, através de uma interface gráfica ou de forma automática, e apresentar de forma gráfica e intuitiva os resultados alcançados, nomeadamente, através da apresentação da evolução das transacções. Em relação à camada intermédia, adicionou-se à ontologia da plataforma a representação do conhecimento de suporte às operações de interface com a camada superior, adoptaram-se taxonomias de classificação de espectadores, anúncios e programas, desenvolveu-se um algoritmo de emparelhamento entre os espectadores, programas e anúncios disponíveis e, por fim, procedeu-se ao armazenamento persistente dos resultados das negociações. Do ponto de vista da plataforma, testou-se o seu funcionamento numa única plataforma física e assegurou-se a segurança e privacidade da comunicação entre empresa e plataforma e entre agentes que representam uma mesma empresa.
Resumo:
A Realidade Aumentada veio alterar a percepção que o ser humano tem do mundo real. A expansão da nossa realidade à Realidade Virtual possibilita a criação de novas experiencias, cuja aplicabilidade é já tida como natural em diversas situações. No entanto, potenciar este tipo de interacção pode ser um processo complexo, quer por limitações tecnológicas, quer pela gestão dos recursos envolvidos. O desenvolvimento de projectos com realidade aumentada para fins comerciais passa assim muitas vezes pela optimização dos recursos utilizados tendo em consideração as limitações das tecnologias envolventes (sistemas de detecção de movimento e voz, detecção de padrões, GPS, análise de imagens, sensores biométricos, etc.). Com a vulgarização e aceitação das técnicas de Realidade Aumentada em muitas áreas (medicina, educação, lazer, etc.), torna-se também necessário que estas técnicas sejam transversais aos dispositivos que utilizamos diariamente (computadores, tablets, telemóveis etc.). Um dominador comum entre estes dispositivos é a internet uma vez que as aplicações online conseguem abarcar um maior número de pessoas. O objectivo deste projecto era o de criar uma aplicação web com técnicas de Realidade Aumentada e cujos conteúdos fossem geridos pelos utilizadores. O processo de investigação e desenvolvimento deste trabalho passou assim por uma fase fundamental de prototipagem para seleccionar as tecnologias que melhor se enquadravam no tipo de arquitectura pretendida para a aplicação e nas ferramentas de desenvolvimento utilizadas pela empresa onde o projecto foi desenvolvido. A aplicação final é composta por um FrontOffice, responsável por mostrar e interpretar as aplicações criadas e possibilitar a integração com outras aplicações, e um BackOffice que possibilita aos utilizadores, sem conhecimentos de programação, criar novas aplicações de realidade aumentada e gerir os conteúdos multimédia utilizados. A aplicação desenvolvida pode servir de base para outras aplicações e ser reutilizável noutros âmbitos, sempre com o objectivo de reduzir custos de desenvolvimento e de gestão de conteúdos, proporcionando assim a implementação de uma Framework que permite a gestão de conteúdos em diferentes áreas (medicina, educação, lazer, etc.), onde os utilizadores podem criar as suas próprias aplicações, jogos e ferramentas de trabalho. No decorrer do projecto, a aplicação foi validada por especialistas garantindo o cumprimento dos objectivos propostos.
Resumo:
A educação é uma área bastante importante no desenvolvimento humano e tem vindo a adaptar-se às novas tecnologias. Tentam-se encontrar novas maneiras de ensinar de modo a obter um rendimento cada vez maior na aprendizagem das pessoas. Com o aparecimento de novas tecnologias como os computadores e a Internet, a concepção de aplicações digitais educativas cresceu e a necessidade de instruir cada vez melhor os alunos leva a que estas aplicações precisem de um interface que consiga leccionar de uma maneira rápida e eficiente. A combinação entre o ensino com o auxílio dessas novas tecnologias e a educação à distância deu origem ao e-Learning (ensino à distância). Através do ensino à distância, as possibilidades de aumento de conhecimento dos alunos aumentaram e a informação necessária tornou-se disponível a qualquer hora em qualquer lugar com acesso à Internet. Mas os cursos criados online tinham custos altos e levavam muito tempo a preparar o que gerou um problema para quem os criava. Para recuperar o investimento realizado decidiu-se dividir os conteúdos em módulos capazes de serem reaproveitados em diferentes contextos e diferentes tipos de utilizadores. Estes conteúdos modulares foram denominados Objectos de Aprendizagem. Nesta tese, é abordado o estudo dos Objectos de Aprendizagem e a sua evolução ao longo dos tempos em termos de interface com o utilizador. A concepção de um interface que seja natural e simples de utilizar nem sempre é fácil e independentemente do contexto em que se insere, requer algum conhecimento de regras que façam com que o utilizador que use determinada aplicação consiga trabalhar com um mínimo de desempenho. Na concepção de Objectos de Aprendizagem, áreas de complexidade elevada como a Medicina levam a que professores ou doutores sintam alguma dificuldade em criar um interface com conteúdos educativos capaz de ensinar com eficiência os alunos, devido ao facto de grande parte deles desconhecerem as técnicas e regras que levam ao desenvolvimento de um interface de uma aplicação. Através do estudo dessas regras e estilos de interacção torna-se mais fácil a criação de um bom interface e ao longo desta tese será estudado e proposto uma ferramenta que ajude tanto na criação de Objectos de Aprendizagem como na concepção do respectivo interface.
Resumo:
Os sistemas de tempo real modernos geram, cada vez mais, cargas computacionais pesadas e dinâmicas, começando-se a tornar pouco expectável que sejam implementados em sistemas uniprocessador. Na verdade, a mudança de sistemas com um único processador para sistemas multi- processador pode ser vista, tanto no domínio geral, como no de sistemas embebidos, como uma forma eficiente, em termos energéticos, de melhorar a performance das aplicações. Simultaneamente, a proliferação das plataformas multi-processador transformaram a programação paralela num tópico de elevado interesse, levando o paralelismo dinâmico a ganhar rapidamente popularidade como um modelo de programação. A ideia, por detrás deste modelo, é encorajar os programadores a exporem todas as oportunidades de paralelismo através da simples indicação de potenciais regiões paralelas dentro das aplicações. Todas estas anotações são encaradas pelo sistema unicamente como sugestões, podendo estas serem ignoradas e substituídas, por construtores sequenciais equivalentes, pela própria linguagem. Assim, o modo como a computação é na realidade subdividida, e mapeada nos vários processadores, é da responsabilidade do compilador e do sistema computacional subjacente. Ao retirar este fardo do programador, a complexidade da programação é consideravelmente reduzida, o que normalmente se traduz num aumento de produtividade. Todavia, se o mecanismo de escalonamento subjacente não for simples e rápido, de modo a manter o overhead geral em níveis reduzidos, os benefícios da geração de um paralelismo com uma granularidade tão fina serão meramente hipotéticos. Nesta perspetiva de escalonamento, os algoritmos que empregam uma política de workstealing são cada vez mais populares, com uma eficiência comprovada em termos de tempo, espaço e necessidades de comunicação. Contudo, estes algoritmos não contemplam restrições temporais, nem outra qualquer forma de atribuição de prioridades às tarefas, o que impossibilita que sejam diretamente aplicados a sistemas de tempo real. Além disso, são tradicionalmente implementados no runtime da linguagem, criando assim um sistema de escalonamento com dois níveis, onde a previsibilidade, essencial a um sistema de tempo real, não pode ser assegurada. Nesta tese, é descrita a forma como a abordagem de work-stealing pode ser resenhada para cumprir os requisitos de tempo real, mantendo, ao mesmo tempo, os seus princípios fundamentais que tão bons resultados têm demonstrado. Muito resumidamente, a única fila de gestão de processos convencional (deque) é substituída por uma fila de deques, ordenada de forma crescente por prioridade das tarefas. De seguida, aplicamos por cima o conhecido algoritmo de escalonamento dinâmico G-EDF, misturamos as regras de ambos, e assim nasce a nossa proposta: o algoritmo de escalonamento RTWS. Tirando partido da modularidade oferecida pelo escalonador do Linux, o RTWS é adicionado como uma nova classe de escalonamento, de forma a avaliar na prática se o algoritmo proposto é viável, ou seja, se garante a eficiência e escalonabilidade desejadas. Modificar o núcleo do Linux é uma tarefa complicada, devido à complexidade das suas funções internas e às fortes interdependências entre os vários subsistemas. Não obstante, um dos objetivos desta tese era ter a certeza que o RTWS é mais do que um conceito interessante. Assim, uma parte significativa deste documento é dedicada à discussão sobre a implementação do RTWS e à exposição de situações problemáticas, muitas delas não consideradas em teoria, como é o caso do desfasamento entre vários mecanismo de sincronização. Os resultados experimentais mostram que o RTWS, em comparação com outro trabalho prático de escalonamento dinâmico de tarefas com restrições temporais, reduz significativamente o overhead de escalonamento através de um controlo de migrações, e mudanças de contexto, eficiente e escalável (pelo menos até 8 CPUs), ao mesmo tempo que alcança um bom balanceamento dinâmico da carga do sistema, até mesmo de uma forma não custosa. Contudo, durante a avaliação realizada foi detetada uma falha na implementação do RTWS, pela forma como facilmente desiste de roubar trabalho, o que origina períodos de inatividade, no CPU em questão, quando a utilização geral do sistema é baixa. Embora o trabalho realizado se tenha focado em manter o custo de escalonamento baixo e em alcançar boa localidade dos dados, a escalonabilidade do sistema nunca foi negligenciada. Na verdade, o algoritmo de escalonamento proposto provou ser bastante robusto, não falhando qualquer meta temporal nas experiências realizadas. Portanto, podemos afirmar que alguma inversão de prioridades, causada pela sub-política de roubo BAS, não compromete os objetivos de escalonabilidade, e até ajuda a reduzir a contenção nas estruturas de dados. Mesmo assim, o RTWS também suporta uma sub-política de roubo determinística: PAS. A avaliação experimental, porém, não ajudou a ter uma noção clara do impacto de uma e de outra. No entanto, de uma maneira geral, podemos concluir que o RTWS é uma solução promissora para um escalonamento eficiente de tarefas paralelas com restrições temporais.
Resumo:
Este trabalho é uma parte do tema global “Suporte à Computação Paralela e Distribuída em Java”, também tema da tese de Daniel Barciela no mestrado de Engenharia Informática do Instituto Superior de Engenharia do Porto. O seu objetivo principal consiste na definição/criação da interface com o programador, assim como também abrange a forma como os nós comunicam e cooperam entre si para a execução de determinadas tarefas, de modo a atingirem um único objetivo global. No âmbito desta dissertação foi realizado um estudo prévio relativamente aos modelos teóricos referentes à computação paralela, assim como também foram analisadas linguagens e frameworks que fornecem suporte a este mesmo tipo de computação. Este estudo teve como principal objetivo a análise da forma como estes modelos e linguagens permitem ao programador expressar o processamento paralelo no desenvolvimento das aplicações. Como resultado desta dissertação surgiu a framework denominada Distributed Parallel Framework for Java (DPF4j), cujo objetivo principal é fornecer aos programadores o suporte para o desenvolvimento de aplicações paralelas e distribuídas. Esta framework foi desenvolvida na linguagem Java. Esta dissertação contempla a parte referente à interface de programação e a toda a comunicação entre nós cooperantes da framework DPF4j. Por fim, foi demonstrado através dos testes realizados que a DPF4j, apesar de ser ainda um protótipo, já demonstra ter uma performance superior a outras frameworks e linguagens que possuem os mesmos objetivos.
Resumo:
In recent years several countries have set up policies that allow exchange of kidneys between two or more incompatible patient–donor pairs. These policies lead to what is commonly known as kidney exchange programs. The underlying optimization problems can be formulated as integer programming models. Previously proposed models for kidney exchange programs have exponential numbers of constraints or variables, which makes them fairly difficult to solve when the problem size is large. In this work we propose two compact formulations for the problem, explain how these formulations can be adapted to address some problem variants, and provide results on the dominance of some models over others. Finally we present a systematic comparison between our models and two previously proposed ones via thorough computational analysis. Results show that compact formulations have advantages over non-compact ones when the problem size is large.
Resumo:
In the last two decades, there was a proliferation of programming exercise formats that hinders interoperability in automatic assessment. In the lack of a widely accepted standard, a pragmatic solution is to convert content among the existing formats. BabeLO is a programming exercise converter providing services to a network of heterogeneous e-learning systems such as contest management systems, programming exercise authoring tools, evaluation engines and repositories of learning objects. Its main feature is the use of a pivotal format to achieve greater extensibility. This approach simplifies the extension to other formats, just requiring the conversion to and from the pivotal format. This paper starts with an analysis of programming exercise formats representative of the existing diversity. This analysis sets the context for the proposed approach to exercise conversion and to the description of the pivotal data format. The abstract service definition is the basis for the design of BabeLO, its components and web service interface. This paper includes a report on the use of BabeLO in two concrete scenarios: to relocate exercises to a different repository, and to use an evaluation engine in a network of heterogeneous systems.
Resumo:
Managing programming exercises require several heterogeneous systems such as evaluation engines, learning objects repositories and exercise resolution environments. The coordination of networks of such disparate systems is rather complex. These tools would be too specific to incorporate in an e-Learning platform. Even if they could be provided as pluggable components, the burden of maintaining them would be prohibitive to institutions with few courses in those domains. This work presents a standard based approach for the coordination of a network of e-Learning systems participating on the automatic evaluation of programming exercises. The proposed approach uses a pivot component to orchestrate the interaction among all the systems using communication standards. This approach was validated through its effective use on classroom and we present some preliminary results.
Resumo:
Ancillary services represent a good business opportunity that must be considered by market players. This paper presents a new methodology for ancillary services market dispatch. The method considers the bids submitted to the market and includes a market clearing mechanism based on deterministic optimization. An Artificial Neural Network is used for day-ahead prediction of Regulation Down, regulation-up, Spin Reserve and Non-Spin Reserve requirements. Two test cases based on California Independent System Operator data concerning dispatch of Regulation Down, Regulation Up, Spin Reserve and Non-Spin Reserve services are included in this paper to illustrate the application of the proposed method: (1) dispatch considering simple bids; (2) dispatch considering complex bids.
Resumo:
In Distributed Computer-Controlled Systems (DCCS), a special emphasis must be given to the communication infrastructure, which must provide timely and reliable communication services. CAN networks are usually suitable to support small-scale DCCS. However, they are known to present some reliability problems, which can lead to an unreliable behaviour of the supported applications. In this paper, an atomic multicast protocol for CAN networks is proposed. This protocol explores the CAN synchronous properties, providing a timely and reliable service to the supported applications. The implementation of such protocol in Ada, on top of the Ada version of Real-Time Linux is presented, which is used to demonstrate the advantages and disadvantages of the platform to support reliable communications in DCCS.
Resumo:
Wireless Sensor Networks (WSN) are being used for a number of applications involving infrastructure monitoring, building energy monitoring and industrial sensing. The difficulty of programming individual sensor nodes and the associated overhead have encouraged researchers to design macro-programming systems which can help program the network as a whole or as a combination of subnets. Most of the current macro-programming schemes do not support multiple users seamlessly deploying diverse applications on the same shared sensor network. As WSNs are becoming more common, it is important to provide such support, since it enables higher-level optimizations such as code reuse, energy savings, and traffic reduction. In this paper, we propose a macro-programming framework called Nano-CF, which, in addition to supporting in-network programming, allows multiple applications written by different programmers to be executed simultaneously on a sensor networking infrastructure. This framework enables the use of a common sensing infrastructure for a number of applications without the users having to worrying about the applications already deployed on the network. The framework also supports timing constraints and resource reservations using the Nano-RK operating system. Nano- CF is efficient at improving WSN performance by (a) combining multiple user programs, (b) aggregating packets for data delivery, and (c) satisfying timing and energy specifications using Rate- Harmonized Scheduling. Using representative applications, we demonstrate that Nano-CF achieves 90% reduction in Source Lines-of-Code (SLoC) and 50% energy savings from aggregated data delivery.
Resumo:
Over the last three decades, computer architects have been able to achieve an increase in performance for single processors by, e.g., increasing clock speed, introducing cache memories and using instruction level parallelism. However, because of power consumption and heat dissipation constraints, this trend is going to cease. In recent times, hardware engineers have instead moved to new chip architectures with multiple processor cores on a single chip. With multi-core processors, applications can complete more total work than with one core alone. To take advantage of multi-core processors, parallel programming models are proposed as promising solutions for more effectively using multi-core processors. This paper discusses some of the existent models and frameworks for parallel programming, leading to outline a draft parallel programming model for Ada.
Resumo:
Several projects in the recent past have aimed at promoting Wireless Sensor Networks as an infrastructure technology, where several independent users can submit applications that execute concurrently across the network. Concurrent multiple applications cause significant energy-usage overhead on sensor nodes, that cannot be eliminated by traditional schemes optimized for single-application scenarios. In this paper, we outline two main optimization techniques for reducing power consumption across applications. First, we describe a compiler based approach that identifies redundant sensing requests across applications and eliminates those. Second, we cluster the radio transmissions together by concatenating packets from independent applications based on Rate-Harmonized Scheduling.
Resumo:
Wireless Sensor Networks (WSNs) are increasingly used in various application domains like home-automation, agriculture, industries and infrastructure monitoring. As applications tend to leverage larger geographical deployments of sensor networks, the availability of an intuitive and user friendly programming abstraction becomes a crucial factor in enabling faster and more efficient development, and reprogramming of applications. We propose a programming pattern named sMapReduce, inspired by the Google MapReduce framework, for mapping application behaviors on to a sensor network and enabling complex data aggregation. The proposed pattern requires a user to create a network-level application in two functions: sMap and Reduce, in order to abstract away from the low-level details without sacrificing the control to develop complex logic. Such a two-fold division of programming logic is a natural-fit to typical sensor networking operation which makes sensing and topological modalities accessible to the user.