4.4 Modelos de Degradac¸˜ao Instantˆanea
5.3.1 Estrutura Geral do Programa BIO
As principais classes do programa BIO e suas relac¸˜oes s˜ao mostradas na Figura 56. Assim como mostrado para o programa FAST, tal diagrama n˜ao representa relac¸˜oes hier´arquicas entre as classes, mas relac¸˜oes do tipo ”has a”. A seguir, cada uma das classes ser´a explicada separadamente.
Figura 56 – Estrutura Geral do Programa BIO.
Fonte: Elaborada pelo autor.
A classe do algoritmo de otimizac¸˜ao, cOptAlg, ´e respons´avel por controlar o pro- cesso de otimizac¸˜ao, com a criac¸˜ao e destruic¸˜ao de indiv´ıduos, aplicac¸˜ao de operadores gen´eticos e controle da convergˆencia e crit´erios de parada. Atualmente, somente o algoritmo gen´etico para
problemas laminados, cLamGA, est´a implementado, mas novos algoritmos podem ser futura- mente derivados da classe base. O objeto da classe algoritmo possui objetos para as classes Problema, Penalidade, Selec¸˜ao e Indiv´ıduo.
A classe Problema, cProblem, lida com os aspectos relacionados ao problema de otimizac¸˜ao a ser resolvido, com a definic¸˜ao das vari´aveis de projeto e seus limites e com a rotina de avaliac¸˜ao da Func¸˜ao Objetivo e das Restric¸˜oes de um dado indiv´ıduo. ´E importante ressaltar, portanto, que a classe do algoritmo n˜ao lida com os valores reais das vari´aveis, mas apenas com sua representac¸˜ao genot´ıpica. J´a a classe problema ´e a respons´avel pelo processo de decodificac¸˜ao e, portanto, lida com a representac¸˜ao fenot´ıpica das vari´aveis. Ressalta-se tamb´em que a classe cProblem n˜ao armazena os valores das vari´aveis de cada indiv´ıduo, mas apenas as listas com os poss´ıveis valores de cada vari´avel. A Figura 57 mostra a atual hierarquia da classe cProblem.
Figura 57 – Hierarquia da Classe cProblem.
Fonte: Elaborada pelo autor.
Dois tipos principais de problema est˜ao implementados. Os problemas da classe cBenchmark s˜ao problemas num´ericos simples cujas soluc¸˜oes est˜ao dispon´ıveis na literatura. Tais problemas s˜ao utilizados para validar e verificar novas implementac¸˜oes realizadas no pro- grama antes de tratar problemas mais complexos. J´a a classe cLaminated lida com proble- mas relacionados a comp´ositos laminados, com a definic¸˜ao de func¸˜oes comuns para qualquer tipo de problema comp´osito, como a decodificac¸˜ao e considerac¸˜ao de laminados sim´etricos e sim´etricos-balanceados. Dela s˜ao derivados os dois tipos de problema utilizados nesta disser- tac¸˜ao, a classe cLamShell e a classe cLamShellNL. Em ambas, a an´alise de cascas ´e tratada utilizando o programa FAST, descrito anteriormente.
A classe cLamShell trata da otimizac¸˜ao de problemas de casca lineares, cujas tens˜oes e matrizes constitutivas s˜ao pr´e-integradas na sec¸˜ao transversal. Devido a este fato, os crit´erios de falha s˜ao calculados diretamente no programa de otimizac¸˜ao a partir dos esforc¸os resultantes em cada ponto de Gauss lidos do arquivo de sa´ıda do programa FAST. Para isso, a matriz ABD (Equac¸˜ao 36) do laminado ´e calculada e utilizada para encontrar as tens˜oes em cada ponto da espessura do mesmo. As tens˜oes s˜ao ent˜ao utilizadas para calcular os fatores de seguranc¸a de
falha da primeira lˆamina (FPF) utilizando algum dos crit´erios implementados (M´axima Tens˜ao, Tsai-Hill, Tsai-Wu).
J´a na classe cLamShellNL, os problemas com n˜ao-linearidade f´ısica ou geom´etrica s˜ao tratados. Neles, a sec¸˜ao transversal da casca ´e integrada durante a an´alise e os crit´erios de falha j´a s˜ao avaliados dentro do programa FAST. Assim, a implementac¸˜ao do problema de otimizac¸˜ao ´e simplificada e somente a leitura dos valores de carga e deslocamento de cada passo da an´alise ´e realizada.
A classe Penalidade, cPenalty, cont´em os m´etodos de penalidade descritos na Sec¸˜ao 5.2.2, utilizados em problemas de otimizac¸˜ao com restric¸˜ao. A sua hierarquia ´e mostrada na Figura 58, contendo uma classe base abstrata e uma classe derivada para cada m´etodo. A func¸˜ao delas ´e receber um conjunto de indiv´ıduos e calcular a func¸˜ao objetivo penalizada de cada um deles.
Figura 58 – Hierarquia da classe cPenalty.
Fonte: Elaborada pelo autor.
J´a a classe Selec¸˜ao, cSelection, cont´em os dois m´etodos de c´alculo de probabilidade de selec¸˜ao mostrados na Sec¸˜ao 5.2.3. Sua estrutura hier´arquica ´e mostrada na Figura 59. ´E importante ressaltar que ambos os m´etodos de selec¸˜ao utilizam a estrat´egia da Roleta para sele- cionar indiv´ıduos. Futuramente, outros m´etodos, como o Torneio e a Amostragem Estoc´astica, podem ser incorporados. O objetivo dos m´etodos ´e receber uma populac¸˜ao de indiv´ıduos e retornar outra populac¸˜ao de indiv´ıduos selecionados a partir dos primeiros.
Figura 59 – Hierarquia da classe cSelection.
Fonte: Elaborada pelo autor.
A classe Indiv´ıduo, cIndividual, ´e respons´avel por armazenar os valores das vari´a- veis de projeto (gen´otipo) e os valores da func¸˜ao objetivo, func¸˜ao objetivo penalizada e aptid˜ao.
Cada objeto representa, portanto, um indiv´ıduo. Al´em de armazenar tais dados, a classe ´e res- pons´avel pelos operadores gen´eticos, cujas formulac¸˜oes podem variar dependendo do tipo de indiv´ıduo utilizado. A hierarquia atual da classe ´e mostrada na Figura 60. Por fim, a classe Populac¸˜ao, cPopulation, ´e respons´avel por armazenar e gerenciar um conjunto de indiv´ıduos, auxiliando na criac¸˜ao e ordenac¸˜ao dos mesmos. Para os problemas num´ericos da classe cBen- chmark, utiliza-se indiv´ıduos cujas vari´aveis s˜ao armazenadas em um vetor de n´umeros inteiros (cIndivIntVec), enquanto que para problemas laminados utiliza-se indiv´ıduos do tipo cIndivInt- Mat, cujas vari´aveis s˜ao armazenadas em uma matriz de inteiros.
Figura 60 – Hierarquia da classe cIndividual.
Fonte: Elaborada pelo autor.
Utilizando as classes apresentadas, o fluxo da resoluc¸˜ao de um problema usando o algoritmo proposto nesta dissertac¸˜ao pode ser representado pela sequˆencia de passos mostrada na Figura 61. Nela, ´e importante ressaltar que o elitismo ´e aplicado como consequˆencia da substituic¸˜ao dos piores indiv´ıduos da populac¸˜ao corrente pelos novos indiv´ıduos gerados pelo cruzamento. Assim, em uma populac¸˜ao de 100 indiv´ıduos e utilizando uma taxa de cruzamento igual a 0.80, os 80 piores indiv´ıduos ser˜ao substitu´ıdos pelos filhos gerados e os 20 melhores permanecer˜ao por elitismo.