You are on page 1of 10

A 99 Line Topology Optimization Conde Written in Matlab Um Cdigo de Otimizao Topolgica Escrito em Matlab em 99 Linhas O. Sigmund Abstract.

O artigo apresenta um compacto cdigo implementado em Matlab de uma otimizao topolgica para compliance minimizao de carregamento esttico em estruturas. O numero total de linhas de entrada no Matlab 99 incluindo a otimizao e sobrotina de Elementos Finitos. As 99 linhas so divididas entre 36 linhas para o programa principal, 12 linhas para o Critrio de Otimizao baseado no otimizador, 16 linhas para um filtro de independncia de malha e 35 linhas para o cdigo de elementos finitos. De fato, excluindo as linhas de comentrio e linhas associadas com a sada e analises de elementos finitos, mostrado que apenas 49 linhas de entrada no Matlab so necessrias para resolver um well-posed problema de otimizao topolgica. Adicionando trs linhas adicionais, o programa pode resolver problemas com mltiplos casos de fora. O cdigo implementado para o proposito educacional. O cdigo completo dado no Apndice e pode ser baixado pelo web sait http://www.topopt.dtu.dk. 1. Introduo O cdigo Matlab apresentado neste artigo planejado para Estudantes de engenharia e recm chegados ao campo da otimizao topolgica, podem baixar o cdigo da pgina acima. O cdigo pode ser utilizado nos cursos de otimizao estrutural onde os estudantes podem ser transmitente de extenses tais como mltiplos casos de foras, sistemas de independncia de malha, reas passivas, etc. Outra possibilidade de utilizar o programa para desenvolvimento das instituies de ensino para otimizar projetos. Estudantes avanados podem ser solicitados avaliar o topologia tima para uma dada condio limite e frao de volume e ento o programa apresenta a correta topologia tima para comparao. Na literatura, pode-se encontrar muitas abordagens para a soluo de problemas de otimizao topolgica. No artigo original de Bendsoe e Kikuchi (1988) a assim chamada microestrutura ou abordagem baseada na homogenizao foi utilizada, com base em estudos da existncia de solues. A abordagem baseada na homogenizao tem sido adotada em muitos artigos mas tem a desvantagem da determinao e avaliao da microestrutura tima e suas orientaes um problema sem resoluo (para problemas de no conformidade) e alm disso, a soluo das estruturas no podem ser construdas uma vez que a no definio do comprimento de escala est associado com as microestruturas. Entretanto, a homogenizao aproximada para a otimizao topolgica ainda importante no senso que ela pode prever limites no terico desempenho das estruturas. Uma abordagem alternativa otimizao topolgica a assim chamada powerlaw aproximado ou SIMP aproximado ( Material Slido Isotrpico com Penalizao) (Bendsoe 1989; Zhou e Rozvany 1991; Mlejnek 1992). Aqui, as propriedades do material so assumidas como constante dentro de cada elemento utilizado para discretizao do domnio do projeto e as variveis so as densidades relativas aos elementos. As propriedades dos materiais so modeladas de acordo com a densidade de cada material raised to some power times the material properties of solid material. Esta abordagem tem sido criticada uma vez que argumentou-se que no existe material fsico Porcento: este um critrio de convergncia um puco desleixado que poderia ser desconsiderado se for necessrio. Pgina 1

com as propriedades descritas pela interpolarizao Power-Law. Entretanto, um recente artigo de Bendsoe e Sigmund (1999) demonstrarem que a abordagem Power-Law fisicamente possvel desde que apenas as condies de energia sejam satisfeitas (e.g. para raio de Poisson iqual a 1/3). Para assegurar a existncia de solues, a abordagem Power-Law deve ser considerada como uma perimeter restrio, uma restrio de gradiente ou com tcnicas de filtro ( ver Sigmund e Petersson 1998, para uma reviso). A abordagem Powe-Law otimizao topolgica tem sido aplicada problemas com mltiplas restries, multiplicidades fsicas e mltiplos materiais. Enquanto que, a soluo do mtodo acima abordado baseado nas tcnicas de programao matemtica e projetos com variveis contnuas, o numero de parmetros aparecem na soluo do problema de otimizao topolgica como um problema inteiro. Beckers (1999) resolvem com sucesso um problema de minimizao de larga escala utilizando um Dual-Approach mas outras abordagens baseadas em algoritmos genticos ou abordagens semi-random necessitam milhares de funes de avaliao mesmo para um pequeno nmero de elementos e deve ser considerado impraticvel. A partir das abordagens mencionadas anteriormente, as quais todas as solues dos problemas so bem definidas ....

2. O Problema da Otimizao Topolgica Uma srie de simplificaes so introduzidas para simplificar o cdigo Matlab. Primeiro, o domnio do projeto assumido como sendo retangular e completamente discretizado por elementos finitos. Deste modo, a numerao dos elementos e ns simples (coluna a coluna a partir do canto superior esquerdo) e o formato da estrutura obtido pela relao de elementos na horizontal (nelx) e na direo vertical (nely). Um problema de otimizao topolgica baseado na abordagem Powe-Law, Onde o objetivo a minimizao da compliance pode ser escrito como:

Onde U e F so o deslocamento global e vetores de fora, respectivamente, K a matriz de rigidez global, e so os vetores de deslocamento e matriz de rigidez do elemento, respectivamente, x o vetor das variveis de projeto, o vetor de densidades mnimas relativas (diferente de zero para evitar singularidade), N (=nelx x nely) o nmero de elementos utilizados na discretizao do domnio do projeto, p a penalizao power (normalmente p=3), V(x) e o volume de material e densidade do domnio do volume, respectivamente e f(volfrac) a frao de volume prescrito. O problema de otimizao (1) pode ser resolvido utilizando algumas das diferentes abordagens tais como os mtodos Optimality Criteria (OC), Sequential Linear Programming (SLP) ou o Method of Moving Asymptotes (MMA de Svanberg 1987) entre outros. Por simplificao, ns utilizaremos aqui um mtodo padro OC-method. Porcento: este um critrio de convergncia um puco desleixado que poderia ser desconsiderado se for necessrio. Pgina 2

Segundo Bendsoe (1995) um esquema de atualizao heurstica das variveis de projeto pode ser formulado como:

Onde m (move) um limite mvel positivo, o coeficiente numrico de desacelerao e obtido da condio de otimalidade como:

Onde um mltiplo de Lagrangiano que pode ser obtido de um algoritmo de bisectioning (bisseo). A sensibilidade da funo objetivo obtida como:

Para maiores detalhes na derivao e implementao do mtodo Optimality Criteria (OC), o escritor referenciado na literatura (e.g. Bendsoe 1995). A fim de dar segurana as solues para o problema de otimizao topolgica (1), algum tipo de restrio deve ser introduzida no projeto (ver Sigmund e Petersson 1998, para uma reviso). Aqui ns utilizaremos uma tcnica de filtragem (Sigmund 1994, 1997). Deve ser enfatizado que este filtro ainda no tem provado segurana de suas solues, mas diversas aplicaes do autor tem provado que o filtro produz projetos com independncia de malha, na prtica. O filtro de independncia de malha trabalha para modificar a sensibilidade do elemento como segue:

O operador convolution (fator de maior peso) escrito como:

Porcento: este um critrio de convergncia um puco desleixado que poderia ser desconsiderado se for necessrio. Pgina 3

Onde o operador dist (e, f ) definido como a distancia entre o centro do elemento e e o centro do elemento f. O operador convolution zero fora da rea do filtro. O operador convolution decai linearmente com a distancia do elemento f. No lugar das sensibilidades originais (4), as sensibilidades modificadas (5) so utilizadas na atualizao do Optimality Criteria (3). 3. Implementao do Matlab O cdigo Matlab (ver o Apndice), construdo como um cdigo padro de otimizao topolgica. O programa principal chamado a partir do prompt do Matlab pela linha top(nelx,nely,volfrac,penal,rmin) Onde nelx e nely so os nmeros de elementos nas direes horizontal e vertical, respetivamente, volfrac a frao de volume, penal a energia de penalizao e rmin a dimenso do filtro (dividido pela dimenso do elemento). Outras variveis assim como as condies de contorno so definidas no cdigo Matlab e podem ser editadas se necessrio. Para cada iterao no lao da otimizao topolgica, o cdigo gera uma figura da atual distribuio da densidade. A Figura 1 apresentam os resultados obtidos para a distribuio da densidade do cdigo dado no Apndice, chamado com a linha de entrada Top(60,20,0.5,3.0,1.5)

Fig. 1 Otimizao topolgica da viga-MBB. Topo: domnio completo do projeto; meio: metade do domnio do projeto com simetria de condies de contorno; base: resultado topolgico da viga otimizada (assim como ) Porcento: este um critrio de convergncia um puco desleixado que poderia ser desconsiderado se for necessrio. Pgina 4

O padro das condies de contorno corresponde metade da viga-MBB (Fig.1). A carga aplicada verticalmente no canto superior esquerdo e h simetria das condies de contorno ao longo do lado esquerdo e a estrutura apoiada horizontalmente na parte inferior esquerda. Detalhes importantes do cdigo Matlab so discutidos nas subsees a seguir. 3.1. Programa Principal (Linhas 1 36) O programa principal (Linhas 1-36) inicia pela distribuio uniforme de material no domnio do projeto (linha 4). Aps algumas outras iteraes, o lao principal inicia com uma chamada subrotina de Elementos Finitos (linha 12) a qual resulta no vetor de deslocamento U. Uma vez que a matriz de rigidez do elemento, para o material solido, a mesma para todos os elementos, a subrotina da matriz de rigidez do elemento chamada apenas uma vez (linha 14). Aps isto, um lao sobre todos os elementos (linhas 16 24) determina a funo objetivo e sensibilidades (4). As variveis n1 e n2 demonstram os nmeros de ns da parte superior esquerda e direita do elemento em nmeros de ns globais e so utilizados para extrair o vetor de deslocamento do elemento U. A anlise da sensibilidade seguida de uma chamada do filtro de independncia de malha (linha 26) e o otimizador Optimality Criteria (line 28). A Compliance atual assim como outros parmetros so imprimidos das linhas 30 33 e a soluo da distribuio da densidade plotada (linha 35). O lao principal terminado se a mudana nas variveis de projeto (change determinado na linha 30) menor que 1 porcento. Caso contrrio os passos acima so repetidos. 3.2. Otimizador baseado no Critrio timo Optimality Criterial based Optimizer (linhas 37 48) A atualizao as variveis de projeto so obtidas do otimizador (linhas 37 48). Sabendo-se que o volume de material (sum(sum (xnew))) uma funo levemente decrescente do multiplicador de Lagrange (lag), o valor do multiplicador de Lagrange que satisfaz a restrio de volume pode ser obtida do algoritmo da bisseo (linhas 40 48). O algoritmo da bisseo inicializado de uma suposio menor que l1 e maior que l2 limitado pelo multiplicador de Lagrange (linha 39). O intervalo o qual limita o multiplicador de Langrange repetidamente dividido at que seu tamanho fique menor que o critrio de convergncia (linha 40). 3.3. Filtrando a Independncia da Malha Mesh-independency filtering (49 64) As linhas 49 64 representam a implementao do Matlab (5). Note que nem todos os elementos no domnio do projeto so procurados, a fim de encontrar os elementos que esto situados no raio mnimo rmin, apenas aqueles dentro de um quadrado aproximadamente duas vezes o comprimento das laterais round (rmin) o elemento considerado. A seleo do rmin menor que um na chamada da rotina, a sensibilidade filtrada ser igual a sensibilidade original tornando o filtro inativo. Lines 4964 represent the Matlab implementation of (5). Note that not all elements in the design domain are searched in order to find the elements that lie within the radius rmin but only those within a square with side lengths two times round(rmin) around the

Porcento: este um critrio de convergncia um puco desleixado que poderia ser desconsiderado se for necessrio. Pgina 5

considered element. By selecting rmin less than one in the call of the routine, the filtered sensitivities will be equal to the original sensitivities making the filter inactive. 3.4. Cdigo de Elemento Finito (Linhas 65 99) O cdigo de elemento finito est escrito nas linhas 65 69. Note que a soluo obtida utiliza da opo de disperso do Matlab. A matriz de rigidez global formulda por um lao sobre todos os elementos (70 77). Como era o caso do programa principal, as variveis n1 e n2 demonstram o numero de ns na parte superior esquerda e direita do elemento em nmeros de ns globais e so utilizados para inserir a matriz de rigidez do elemento no local certo da matriz de rigidez global. Como mencionado anteriormente, ambos ns e elementos so numerados discretamente em colunas da esquerda para a direita. Alm disso, cada n tem dois graus de liberdade (horizontal e vertical), assim o comando F(2,1)=-1 (linha 79) aplica uma fora vertical unitria na parte superior do canto esquerdo. Os apoios so implementados para eliminao dos graus de liberdade fixos das equaes lineares. O Matlab pode fazer isto facilmente com a linha 84 U(freedofs,:) = K(freedofs,freedofs)/F(freedofs,:); Onde freedofs indica o grau de liberdade que est restringido. Na maioria das vezes, fcil de definir os graus de liberdade que so fixados (fixeddofs) depois disto os freedofs so gerados automaticamente utilizando o operador setdiff do Matlab o qual encontrar os graus livres (no fixos) dos graus de liberdade com a diferena entre todos os graus de liberdade e os graus fixos do grau de liberdade (linha 28). A matriz de rigidez do elemento calculada nas linhas 86 89. A matriz de 8 por 8 uma matriz quadrada bi-linear 4 n por elemento foi definida analiticamente utilizando um simblico software manipugado. O mdulo de Young E e a razo de Poison nu pode ser alterado nas linhas 88 e 89. 4. Extenso O cdigo matlba dado no Apndice resolve o problema da otimizao e distribuio de material na viga MBB (Fig. 1) de tal modo que seu compliance seja minimizado. Um nmero de extenses e combinaes no algoritmo podem ser medidos, alguns dos quais so mencionados a seguir. 4.1. Outras condies de Contorno Ele muito simples para combinaes de condies de contorno e condies de apoio a fim de resolver outros problemas de otimizao. Afim de resolver o pequeno exemplo em balano apresentado na Fig. 2, apenas as linhas 79 e 80 devem ser trocadas para: 79 F(2*(nelx+1)*(nely+1),1) = -1; 80 fixeddofs = [1:2*(nely+1)]; Com estas combinaes, a entrada da linha para o caso apresentado na Fig. 2 : Top(32,20,0.4,3.0,1.2) Porcento: este um critrio de convergncia um puco desleixado que poderia ser desconsiderado se for necessrio. Pgina 6

Fig. 2 Otimizao topolgica para uma viga em balano. Direita: domnio do projeto; Esquerda: viga com topologia otimizada. 4.2. Multiplos Casos de Fora Tambm muito simples de estender o algoritmo para considerar casos para mltiplas cargas. De fato, isto pode ser obtido com a adio apenas de trs linhas e trabalhar algumas poucas combinaes para outras 4 linhas. No caso de dois casos de cargas, os vetores fora e deslocamento devem ser definidos como duas colunas de vetores o que significa que a linha 69 chamada para 69 F = sparse(2*(nely+1)*(nelx+1),2); U = sparse(2*(nely+1)*(nelx+1),2); A funo objetivo agora o somatrio de duas compliances, i.e.

Assim as linhas 20 22 so substitudas pelas linhas 19b 19c 20 21 22 22b dc(ely,elx) = 0.; for i = 1:2 Ue = U([2*n1-1;2*n1; 2*n2-1;2*n2; 2*n2+1;2*n2+2;2*n1+1;2*n1+2],i); c = c + x(ely,elx)^penal*Ue*KE*Ue; dc(ely,elx) = dc(ely,elx) penal*x(ely,elx)^(penal-1)*Ue*KE*Ue; end

Para resolver o problema de duas cargas indicado na Fig. 3, uma carga unitria para cima adicionada no canto superior esquerdo pela linha 79 a qual tornando-se ento: 79 F(2*(nelx+1)*(nely+1),1) = -1.; F(2*(nelx)*(nely+1)+2,2) = 1.; A linha de entrada da Fig. 3 : Porcento: este um critrio de convergncia um puco desleixado que poderia ser desconsiderado se for necessrio. Pgina 7

top(30,30,0.4,3.0,1.2) 4.3. Elementos Passive Em alguns casos, alguns elementos podem ser solicitados a encontrar (admitir) o mnimo valor de densidade (e.g. uma cavidade para um tubo a hole for a pipe ). Uma matriz nely x nelx passive com zeros nos elementos livres e uns nos elementos fixados, para serar An nelynelx array passive with zeros at elements free to change and ones at elements fixed to be zero can be defined in the main programand transferred to the OC subroutine (adding passive to the call in lines 28 and 38). The added line: 42b xnew(find(passive))=0.001;

A subrotina OC procurar lementos passive fixando suas densidades igual a mnima densidade (0.001).

Fig. 3 Otimizao topolgica de uma viga engastada livre com dois casos de carga. Esquerda: domnio do projeto; meio: otimizao topolgica da viga utilizando um caso de carga; direita: otimizao topolgica utilizando dois casos de carga.

Fig. 4 Otimizao topolgica de uma viga engastada livre com uma cavidade. Esquerda: domnio de projeto; Direita: otimizao topolgica da viga. A figura 4 apresenta a soluo obtida da estrutura com a entrada: Top(45,30,0.5,3.0,1.5) Porcento: este um critrio de convergncia um puco desleixado que poderia ser desconsiderado se for necessrio. Pgina 8

Onde as 10 linhas seguintes so adicionadas no programa principal (aps linha 4) a fim de encontrar os elementos que no ofeream resistncia dentro do circulo de raio nely/3 e centro (nely/2.,nelx/3) for ely = 1:nely for elx = 1:nelx if sqrt((ely-nely/2.)^2+(elx-nelx/3.)^2)nely/3. passive(ely,elx) = 1; x(ely,elx) = 0.001; else passive(ely,elx) = 0; end end end 4.4. Otimizador Alternativo Considerando, o critrio de optimidade baseado no otimizador implementado aqui bom apenas para algumas restries e baseado em uma classe de atualizao heurstica based on a heuristic fixed point type updating scheme A fim de instalar um otimizador superior, pode-se obter (sem custo para propsitos acadmico) a verso Matlab do MMA-algoritmo (Svanberg 1987) de Krister Svanberg, KTH, Sweden. O cdigo MMA chamado com a linha de entrada a seguir: mmasub(INPUT-variables,...,OUTPUT-variables) Onde o nmero total de entrada/sadas de variveis 20, incluindo a funo objetivo, restries, velhas e novas densidades, etc. A implementao do MMA-otimizador razoavelmente simples, mas requer a definio de diversas variveis auxiliares. Entretanto, permite a soluo de vrios projetos complexos, problemas com mais que uma restrio. O otimizdor Matlab resolver o problema de otimizao topolgica padro utilizando menos iteraes com um baixo custo de tempo de CPU por iterao using less iterations at the cost of a slightly increased CPU-time per iteration.. 4.5. Outras Extenses Extenses, para trs dimenses so muito triviais enquanto problemas mais complexos como projetos de mecanismos complexos (Sigmund 1997) requerem a implementao do otimizador MMA e a definio de restries extras. A simplicidade de comandos do Matlab permite fceis extenses de sada grfica, entrada interativa, etc. 5. Concluses Este artigo tem apresentado uma implementao muito simples da programao matemtica baseada no algoritmo de otimizao topolgica. O cdigo implementado utilizando apenas 99 linhas de entrada no Matlab incluindo o otimizador, filtro de malha independente e cdigo de Elementos Finitos. Porcento: este um critrio de convergncia um puco desleixado que poderia ser desconsiderado se for necessrio. Pgina 9

O cdigo Matlab pode ser baixado da pgina da web http://www.topopt.dtu.dk e intendido para propsitos educacionais. O cdigo pode ser facilmente extendido para problemas includo mltiplas cargas e a definio de reas que no ofeream resistncia passive reas. O atual cdigo no Matlba bastente demorado se comparado com uma implementao de algum cdigo Fortran o qual pode ser testado no web-site http://www.topopt.dtu.dk. Entretanto, um pacote adicional para Matlab ( Compilador Matlab, MATLAB Compiler) permite a gerao de um cdigo C mais eficiente que pode ter tempo de execuo otimizado (esta opo, entretanto, no foi testada pelo autor). Deve-se notar que a velocidade pode ser obtida com a modificao do prprio cdigo Matlab, entretanto a velocidade obtida com o custo da simplificao do programa. A modificao sugerida por Andreas Rietz de Linkping Universitu, que usa as opes de disperso na montagem da matriz de rigidez global. O leitor pode baixar este cdigo na pgina da web: http: //www.mekanik.ikp.liu.se/andridiv/matlab/theory.html. O cdigo pode ser intencionalmente compactado a fim de manter o nmero total de linhas menor que 100. Se o usurio do cdigo puder descobrir maneiras para facilitar a compactao ou simplificao do cdigo, o autor fiar feliz em receber sugestes de modificao que podem ser implementadas na publicao do domnio do cdigo ( o emais do autor Sigmund@fam.dtu.dk). Desde ento estas primeiras publicaes do World Wide Web em outubro de 1999, cdigo Matlba teve dowloads mais que 500 vezes de diferentes usurios. Entre outros comentrios positivos, vrios professores responderam que eles tem utilizado o cdigo nos cursos de otimizao estrutural e tem permitido que seus estudantes implementassem condies de contorno alternativas e mltiplos casos de carga.

Porcento: este um critrio de convergncia um puco desleixado que poderia ser desconsiderado se for necessrio. Pgina 10