| Resumo : |
Meta-heurísticas são métodos de busca utilizados na resolução de problemas de otimização, tendo, como aspecto relevante, a possibilidade de ajustar seu mecanismo de busca por meio da escolha adequada de parâmetros de configuração. Alguns frameworks computacionais para meta-heurísticas foram apresentados nos últimos anos e estudo recente aponta a necessidade da construção de ferramenta(s) desse tipo com foco na qualidade de software, com foco em características como Portabilidade, Manutenção, Eficiência, Usabilidade, Confiabilidade e Funcionalidade. Neste trabalho, são apresentadas a concepção e implementação de um framework computacional de otimização baseada em meta-heurísticas, utilizando boas práticas de Engenharia de Software, incluindo padrões de projeto, juntamente com um conjunto de ferramentas de apoio que podem ser utilizadas para automatizar uma série de procedimentos associados ao estudo e análise de resultados de meta-heurísticas. O projeto do framework busca garantir a independência entre o mecanismo de busca (meta-heurísticas) e o problema, expresso matematicamente, para o qual se deseja obter uma solução otimizada (máximo ou mínimo), permitindo que um problema possa ser resolvido por mais de um método de busca sem a necessidade de programação adicional. Um conjunto de funções mono e multimodais, cujo ponto de mínimo é conhecido foram utilizados para validar e refinar o projeto do framework como um produto de software. Adicionalmente, o framework foi utilizado para resolver problemas em foco no Laboratório de Engenharia Virtual do IEAv (otimização de configuração de acelerômetro MEMS e solução de problema inverso para estudo da distribuição de material em pontos quânticos), utilizando modelos de cálculo direto já implementados anteriormente. A inclusão desses casos também contribuiu para validar e refinar o modelo adotado para garantir a independência entre a implementação das meta-heurísticas e o problema que se busca resolver (interoperabilidade). O framework utiliza mecanismos de inversão de controle e de injeção de dependência visando facilitar a implementação de novas meta-heurísticas ou de novas funcionalidades por parte de usuários desenvolvedores. |