• Nenhum resultado encontrado

Para a elaboração de novas metodologias, focadas na engenharia de antenas de microfita, partiu-se da premissa da necessidade de uma ferramenta que pudesse fornecer recursos para a execução de testes e o levantamento de resultados para a pesquisa. O projeto de antenas com base em heurísticas evolutivas pode, nessa proposta, ser dividido em 3 partes:

1. Motor evolutivo (conjunto de algoritmos de busca pré-definidos) 2. Solver da função custo (software de simulação eletromagnética)

3. Interface de aquisição de dados entre o Motor evolutivo e o solver de função objetivo. O motor evolutivo compreende um conjunto de algoritmos baseados em com- putação natural adaptados ao problema de projeto de antenas. Tais algoritmos atuam diretamente nos modelos físicos de antenas de microfita pré-projetados, podendo modificar parâmetros importantes como largura de banda, polarização, ganho, diretividade, entre outros. O sistema é construído com base nos dois algoritmos independentes vistos ante- riormente, conhecidos como Clonalg (CASTRO; ZUBEN, 2002) e Evolução Diferencial (PRICE; STORN, 1995), mas pode ser ampliado com a codificação de novas heurísticas.

A ferramenta possibilita a escolha entre esses dois algoritmos , bem como a definição de seus parâmetros, antes do início da simulação. Ao se definir o algoritmo e seu ajuste paramétrico, é necessário selecionar os parâmetros associados a geometria da antena do modelo selecionado que deverão sofrer modificações durante o processo de execução.

Toda a ferramenta foi construída seguindo alguns conceitos já consolidados e difundidos no mundo do projeto de software, tais como orientação a objetos, em que são aplicadas as técnicas de herança, interface, polimorfismo, entre outras (GAMMA, 1995;

PRESSMAN, 2005).

É primordial que ajustes paramétricos sejam realizados em cada algoritmo, e entre eles podemos citar o tamanho da população e número de iterações que define o critério de parada, entre outros. Esse procedimento visa alterar as características de busca

dos algoritmos, fazendo-os excursionar adequadamente entre a explotação, que realiza a busca em regiões menores (localmente), e a exploração, que varre o espaço de busca de forma mais ampla (globalmente).

A realimentação dos algoritmos é realizada com base em informações prévias das especificações técnicas desejadas para a antena, encapsuladas em expressões que vão compor uma função de avaliação, também conhecida como função de fitness. Os requisitos da antena podem variar entre otimização de largura de banda, tipo de polarização, ganho etc.

Por se tratar de um modelo de antena, para o qual cálculos mais complexos e computacionalmente custosos devem ser realizados, a função objetivo é normalmente calculada por softwares especializados na simulação de modelos eletromagnéticos simulados via técnicas como método dos momentos, elementos finitos etc. Através destes softwares, é possível obter todos os parâmetros necessários para calcular funções de avaliação (fitness) a serem usadas nas buscas via métodos evolutivos que levarão aos modelos que objetivam cumprir as especificações técnicas iniciais.

4.1.1

Motor Evolutivo

Os algoritmos que compõem o motor evolutivo são ferramentas de busca de parâmetros que trabalham com problemas de n dimensões no conjunto dos números reais. Os algoritmos CLONALG e Evolução Diferencial, como visto anteriormente, serão os componentes do conjunto de heurísticas responsáveis pelo processo que promove cons- tantes modificações e avaliações nas populações de geometrias candidatas para a antena, na procura por um ou mais modelos que melhor alcancem os requisitos previamente estabelecidos.

O motor evolutivo é integralmente desenvolvido em linguagem de alto nível denominada C# (C Sharp) (SHARP,2013). C# é uma linguagem intrinsecamente orientada a objetos que possui muitos recursos que permitem uma codificação ágil e uma depuração eficiente através da IDE (Integrated Development Environment) Microsoft Visual Studio. Assim como a linguagem Java, C# é executado sobre uma máquina virtual, conhecida como Common Language Runtime (CLR), que faz parte da plataforma .NET da Microsoft (MICROSOFT, 2018). O desempenho de tempo de execução dos softwares foi um fator atrativo na escolha, já que algoritmos evolutivos costumam ter gasto computacional elevado e normalmente obter desempenho em tempo de simulação inferior em linguagens interpretadas, como Matlab/Octave ou outros scripts.

Como já comentado anteriormente, a codificação dos algoritmos respeita alguns conceitos de engenharia de software baseada em orientação à objetos que primam por tornar o código menos redundante, modular, mais portável, com um menor acoplamento, maior

coesão e de mais fácil entendimento. Apesar de ser um software relativamente complexo, é possível descrevê-lo de forma mais abstrata e modularizada através de alguns diagramas de classe usando UML (Unified Modeling Language) ((SEIDL et al., 2012; RUMPE, 2017)). O diagrama completo exibindo a interconexão entre as classes que compõem o motor evolutivo pode ser encontrado no apêndice A.

4.1.2

Codificação Populacional

Um elemento de grande importância em implementações de um algoritmo estocástico populacional é a codificação dos indivíduos (soluções candidatas). Nesse caso em específico, onde a codificação deve representar valores paramétricos de geometrias ou de posição de elementos no espaço, os indivíduos adotam valores reais que, computa- cionalmente falando, são codificados em ponto flutuante na forma de vetores definidos como do tipo double na linguagem C#. Além de codificar soluções para um problema, as populações de indivíduos possuem outras características que aqui foram pensadas como sendo integradas a uma única classe, de forma que ela pudesse atender a todos os algoritmos disponíveis, evitando codificação redundante.

4.1.3

A Ponte de Comunicação Entre Solver Eletromagnético e o Motor

Evolutivo

O software comercial CST Microwave Studio, que será melhor detalhado nas seções 4.2 e 4.2.1, recebe instruções do motor evolutivo para alterações remotas nos modelos de antenas (por exemplo, modificações paramétricas), retornando os vetores de dados pós simulados. Isso é realizado através da comunicação do software externo com um interpretador de scripts Visual Basic (VBA) executado dentro do software CST Studio. Para implementar esse comunicador foi criada a classe CSTVBACom (apendicê A) que é responsável por tarefas como:

• Abertura e fechamento de arquivos de projeto do CST Studio. • Configuração e execução do solver eletromagnético

• Configuração de mudanças na visualização do modelo 3D e aquisição de capturas de tela.

• Configuração das unidades usadas no simulador (Hz, ms, mm, etc)

• Aquisição, modificação e criação de variáveis de parametrização no projeto

• Criação de modelos através de primitivas geométricas (recurso não utilizado neste trabalho).

Maiores informações sobre as classes envolvidas na codificação das meta- heurísticas estão disponíveis no apêndice B

4.1.4

Gerador de Funções por Amostragem

O gerador de funções por amostragem é um software construído para avançar iterativamente num subdomínio do espaço de busca de uma função objetivo coletando dados amostrais com resolução definida a priori. Os dados coletados são armazenados em arquivos do tipo CSV (Comma Separated Values). As funções amostradas contemplam largura de banda contendo a frequência de projeto, razão axial na frequência de projeto e VSWR também na frequência de projeto.

As funções discretizadas pelo gerador de funções por amostragem são entradas que alimentam o interpolador para o cálculo da função custo, como será demonstrado no capítulo seguinte.

Documentos relacionados