136 resultados para Nonlinear programming problem
Resumo:
This paper proposes two meta-heuristics (Genetic Algorithm and Evolutionary Particle Swarm Optimization) for solving a 15 bid-based case of Ancillary Services Dispatch in an Electricity Market. A Linear Programming approach is also included for comparison purposes. A test case based on the dispatch of Regulation Down, Regulation Up, Spinning Reserve and Non-Spinning Reserve services is used to demonstrate that the use of meta-heuristics is suitable for solving this kind of optimization problem. Faster execution times and lower computational resources requirements are the most relevant advantages of the used meta-heuristics when compared with the Linear Programming approach.
Resumo:
Electricity market players operating in a liberalized environment requires access to an adequate decision support tool, allowing them to consider all the business opportunities and take strategic decisions. Ancillary services represent a good negotiation opportunity that must be considered by market players. For this, decision support tools must include ancillary market simulation. This paper proposes two different methods (Linear Programming and Genetic Algorithm approaches) for ancillary services dispatch. The methodologies are implemented in MASCEM, a multi-agent based electricity market simulator. A test case concerning the dispatch of Regulation Down, Regulation Up, Spinning Reserve and Non-Spinning Reserve services is included in this paper.
Resumo:
The paper introduces an approach to solve the problem of generating a sequence of jobs that minimizes the total weighted tardiness for a set of jobs to be processed in a single machine. An Ant Colony System based algorithm is validated with benchmark problems available in the OR library. The obtained results were compared with the best available results and were found to be nearer to the optimal. The obtained computational results allowed concluding on their efficiency and effectiveness.
Resumo:
Knowledge is central to the modern economy and society. Indeed, the knowledge society has transformed the concept of knowledge and is more and more aware of the need to overcome the lack of knowledge when has to make options or address its problems and dilemmas. One’s knowledge is less based on exact facts and more on hypotheses, perceptions or indications. Even when we use new computational artefacts and novel methodologies for problem solving, like the use of Group Decision Support Systems (GDSSs), the question of incomplete information is in most of the situations marginalized. On the other hand, common sense tells us that when a decision is made it is impossible to have a perception of all the information involved and the nature of its intrinsic quality. Therefore, something has to be made in terms of the information available and the process of its evaluation. It is under this framework that a Multi-valued Extended Logic Programming language will be used for knowledge representation and reasoning, leading to a model that embodies the Quality-of-Information (QoI) and its quantification, along the several stages of the decision-making process. In this way, it is possible to provide a measure of the value of the QoI that supports the decision itself. This model will be here presented in the context of a GDSS for VirtualECare, a system aimed at sustaining online healthcare services.
Resumo:
A operação dos Mercados de Energia Eléctrica passa, actualmente, por uma profunda reestruturação, com o principal foco nas transacções do sistema de transmissão entre os diferentes agentes. Tendo isso em conta, o serviço de transmissão neste novo esquema de funcionamento do Mercado de Energia Eléctrica deve ser provido de máxima eficiência económica, atendendo sempre às restrições de segurança do sistema. Com esta reorganização do sector eléctrico da última década surgiu também a necessidade de rever os modelos tradicionais de optimização económica do Sistema Eléctrico de Energia, como por exemplo o despacho e prédespacho (unit commitment). A reestruturação e liberalização dos mercados de energia eléctrica trouxeram novas restrições a alguns dos problemas tradicionais associados aos Sistemas Eléctricos de Energia. Um desses problemas é o Escalonamento da Produção de Energia Eléctrica, que no contexto actual, implica quase sempre negociação entre os diferentes agentes do mercado e consequentemente reescalonamento. A maioria dos métodos usados para a resolução do problema não permitem reformular o prédespacho, algo para que a Programação Lógica por Restrições é extremamente adequada. O trabalho desenvolvido nesta dissertação visa criar uma aplicação computacional com base na Programação Lógica por Restrições, através da plataforma ECLiPSe, para resolver o problema do Escalonamento da Produção de Energia Eléctrica dos grupos térmicos, demonstrando assim a versatilidade e flexibilidade deste tipo de programação aplicada a problema combinatoriais deste género.
Resumo:
O objectivo deste trabalho é optimizar o planeamento de produção tendo como meta a redução do custo total da energia eléctrica consumida. Este trabalho está dividido em 3 etapas distintas: na 1ª etapa foi feito um levantamento do problema, das restrições do mesmo e da escolha do modelo para a sua resolução. Na etapa seguinte, fez-se a escolha da ferramenta a usar, que foi o Xpress, e fez-se a implementação do problema nessa mesma ferramenta. E por fim, na 3ª etapa, foi feita a validação do modelo e análise das soluções obtidas com comparações com que o era feito antes. Recorrendo a programação inteira foi desenvolvido um modelo de optimização para atingir o objectivo em causa e consequentemente foi escrito o código que reflectisse o modelo matemático. Todos os passos necessários à sua implementação foram concluídos e validados com comparação com o que antes se fazia, notando-se assim melhorias ao nível de eficiência energética na ordem dos 8%, mas também uma melhoria no aproveitamento de recursos humanos e tempo que eram despendidos para desenvolver planos de produção de forma manual. Essa melhoria temporal que se compreende entre quatro a seis horas semanais pode ser aplicada noutras actividades da empresa com maior valor acrescentado.
Resumo:
Este trabalho teve o intuito de testar a viabilidade da programação offline para tarefas de lixamento na empresa Grohe Portugal. Para tal era necessário perceber o que é a programação offline e para isso foi efectuada uma pesquisa referente a essa temática, onde ficou evidente que a programação offline é em tudo semelhante à programação online, tendo apenas como principal diferença o facto de não usar o robô propriamente dito durante o desenvolvimento do programa. Devido à ausência do robô, a programação offline exige que se conheça detalhadamente a célula de trabalho, bem como todas as entradas e saídas associadas à célula, sendo que o conhecimento das entradas e saídas pode ser contornada carregando um backup do robô ou carregando os módulos de sistema. No entanto os fabricantes habitualmente não fornecem informação detalhada sobre as células de trabalho, o que dificulta o processo de implementação da unidade no modelo 3D para a programação offline. Após este estudo inicial, foi efectuado um estudo das características inerentes a cada uma das células existentes, com o objectivo de se obter uma melhor percepção de toda a envolvente relacionada com as tarefas de lixamento. Ao longo desse estudo efectuaram-se vários testes para validar os diversos programas desenvolvidos, bem como para testar a modelação 3D efectuada. O projecto propriamente dito consistiu no desenvolvimento de programas offline de forma a minimizar o impacto (em especial o tempo de paragem) da programação de novos produtos. Todo o trabalho de programação era até então feito utilizando o robô, o que implicava tempos de paragem que podiam ser superiores a três dias. Com o desenvolvimento dos programas em modo offline conseguiu-se reduzir esse tempo de paragem dos robôs para pouco mais de um turno (8h), existindo apenas a necessidade de efectuar algumas afinações e correcções nos movimentos de entrada, saída e movimentações entre rotinas e unidades, uma vez que estes movimentos são essenciais ao bom acabamento da peça e convém que seja suaves. Para a realização e conclusão deste projecto foram superadas diversas etapas, sendo que as mais relevantes foram: - A correcta modelação 3D da célula, tendo em conta todo o cenário envolvente, para evitar colisões do robô com a célula; - A adaptação da programação offline para uma linguagem mais usual aos afinadores, ou seja, efectuar a programação com targets inline e criar diferentes rotinas para cada uma das partes da peça, facilitando assim a afinação; - A habituação à programação recorrendo apenas ao uso de módulos para transferir os programas para a célula, bem como a utilização de entradas, saídas e algumas rotinas e funcionalidades já existentes.
Resumo:
Este trabalho baseia-se num caso de estudo real de planeamento de operações de armazenagem num silo rural de cereais, e enquadra-se nos problemas de planeamento e programação de armazéns. Os programadores deparam-se diariamente com o problema de arranjar a melhor solução de transferência entre células de armazenagem, tentando maximizar o número de células vazias, por forma a ter maior capacidade para receber novos lotes, respeitando as restrições de receção e expedição, e as restrições de capacidade das linhas de transporte. Foi desenvolvido um modelo matemático de programação linear inteira mista e uma aplicação em Excel, com recurso ao VBA, para a sua implementação. Esta implementação abrangeu todo o processo relativo à atividade em causa, isto é, vai desde a recolha de dados, seu tratamento e análise, até à solução final de distribuição dos vários produtos pelas várias células. Os resultados obtidos mostram que o modelo otimiza o número de células vazias, tendo em conta os produtos que estão armazenados mais os que estão para ser rececionados e expedidos, em tempo computacional inferior a 60 segundos, constituindo, assim, uma importante mais valia para a empresa em causa.
Resumo:
O presente trabalho visa denotar a importância de ferramentas e técnicas utilizadas como apoio à tomada de decisão. Foi proposto um problema de corte cujo objectivo primordial procura minimizar o desperdício gerado resultante do processo de obtenção de um produto, utilizando um caso representativo de um produto em chapa, fabricado por uma empresa que conta três décadas de laboração contínua, proposeram-se e realizaram-se estudos no sentido de solucionar recursos causadores de desperdício. Neste trabalho aplicou-se um problema de corte bi-dimensional a uma indústria que recorre ao fabrico de produtos em chapa, por forma a minimizar o desperdício relativo ao processo utilizado. Propôs-se quatro alternativas à solução actual realizada na empresa, que passa pela disposição e combinação de vários tipos de cortes-padrão que podem ser executados nas diferentes dimensões de matéria-prima disponibilizada. Estas alternativas têm como vantagem apresentar reduções que se traduzam significativas para os custos implícitos à realização do processo produtivo. Os estudos computacionais praticados mostraram que as soluções propostas como alternativa obtiveram melhores resultados que os obtidos pela empresa, excepto num caso.
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:
Solvent extraction is considered as a multi-criteria optimization problem, since several chemical species with similar extraction kinetic properties are frequently present in the aqueous phase and the selective extraction is not practicable. This optimization, applied to mixer–settler units, considers the best parameters and operating conditions, as well as the best structure or process flow-sheet. Global process optimization is performed for a specific flow-sheet and a comparison of Pareto curves for different flow-sheets is made. The positive weight sum approach linked to the sequential quadratic programming method is used to obtain the Pareto set. In all investigated structures, recovery increases with hold-up, residence time and agitation speed, while the purity has an opposite behaviour. For the same treatment capacity, counter-current arrangements are shown to promote recovery without significant impairment in purity. Recycling the aqueous phase is shown to be irrelevant, but organic recycling with as many stages as economically feasible clearly improves the design criteria and reduces the most efficient organic flow-rate.
Resumo:
This paper presents a complete, quadratic programming formulation of the standard thermal unit commitment problem in power generation planning, together with a novel iterative optimisation algorithm for its solution. The algorithm, based on a mixed-integer formulation of the problem, considers piecewise linear approximations of the quadratic fuel cost function that are dynamically updated in an iterative way, converging to the optimum; this avoids the requirement of resorting to quadratic programming, making the solution process much quicker. From extensive computational tests on a broad set of benchmark instances of this problem, the algorithm was found to be flexible and capable of easily incorporating different problem constraints. Indeed, it is able to tackle ramp constraints, which although very important in practice were rarely considered in previous publications. Most importantly, optimal solutions were obtained for several well-known benchmark instances, including instances of practical relevance, that are not yet known to have been solved to optimality. Computational experiments and their results showed that the method proposed is both simple and extremely effective.
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.