Você está na página 1de 37

Universidade Federal de São Paulo

Trabalho de Graduação II

Um Novo Método de Globalização para


Programação Linear Sequencial Aplicado à
Otimização Topológica
Aluno: Vanize Libania Telles
Orientador: Luı́s Felipe Bueno

1
Sumário

Sumário 2

1 Introdução 3

2 Programação Linear 5
2.1 Método Exaustivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Método Simplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.1 Método Primal-Simplex . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2.2 Método das Duas Fases . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 Métodos de Pontos Interiores . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.1 Método Primal-Dual . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.2 Método Preditor-Corretor . . . . . . . . . . . . . . . . . . . . . . . 14

3 Programação Não Linear 15


3.1 Programação Linear Sequencial . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2 Restauração Inexata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2.1 Método Proposto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2.2 Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

4 Otimização Topológica 24
4.1 Formulação com Malhas Retangulares . . . . . . . . . . . . . . . . . . . . . 24
4.2 Formulação com Malhas Triangulares . . . . . . . . . . . . . . . . . . . . . 24
4.3 Classificação de Malhas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.4 Tabuleiro de Xadrez e Filtros . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.4.1 Filtro da Média Ponderada das Densidades . . . . . . . . . . . . . . 29
4.5 Evitando Densidades Intermediárias . . . . . . . . . . . . . . . . . . . . . . 29

5 Aplicações de Otimização Topológica no Setor Aeroespacial 30

6 Resultados Computacionais 31
6.1 Método com Malhas Retangulares . . . . . . . . . . . . . . . . . . . . . . . 31
6.1.1 Sem Aplicação de Filtros . . . . . . . . . . . . . . . . . . . . . . . . 31
6.1.2 Aplicação do Filtro da Média Ponderada das Densidades . . . . . . 32
6.2 Método com Malhas Triangulares Irregulares e Filtro . . . . . . . . . . . . 33
6.2.1 Aplicação no Setor Aeroespacial . . . . . . . . . . . . . . . . . . . . 35

7 Conclusão 36

Referências Bibliográficas 37

2
Resumo
O objetivo central deste projeto consiste no estudo de métodos computacionais
para resolver problemas de Otimização Topológica. Para isso, é necessária a com-
preensão sobre Programação Linear, Programação Não-Linear, Programação Linear
Sequencial (PLS) e Restauração Inexata. Neste trabalho são descritos os principais
pontos estudados sobre esses assuntos e é proposto um novo método para globa-
lização da PLS. As referências mais usadas para isso foram [6], [8], [10] e [12] .
Também foram realizadas implementações, em MATLAB® , utilizando computado-
res e licenças de MATLAB® disponı́veis no laboratório de informática da UNIFESP
- São José dos Campos, dos algoritmos relacionados.
Este trabalho, até o estudo de Programação Linear Sequencial, foi realizado
em conjunto com o discente Victor Sucharski, por estarmos inseridos no mesmo
grupo de pesquisa de Otimização Topológica e pelo fato deste conteúdo servir de
fundamento para diferentes projetos de pesquisa.

1 Introdução
Otimização Topológica é o campo da matemática e da Engenharia que utiliza
de ferramentas computacionais para obter o formato ótimo de uma estrutura que
respeite certas condições fı́sicas, sendo a mais eficiente de acordo com um critério
pré-estabelecido. Usualmente, esses problemas são formulados como problemas de
otimização não linear de grande porte.
O estudo do problema se dá por meio da análise de um corpo elástico em um
domı́nio Ω, mantido fixo em uma região Γt1 , conforme mostrado na Figura 1.

Figura 1: Corpo submetido à aplicação de um carregamento t1 e mantido fixo numa região


Γd de Ω.
Fonte: Retirado de [12].

O processo de resolução de um problema de Otimização Topológica consiste em


decidir onde deve existir ou não material no domı́nio considerado. Isto pode ser feito
definindo uma função que representa a presença de material no domı́nio. Logo, após
a discretização de Ω usando o Método de Elementos Finitos [1], associa-se a cada
elemento uma variável χ que assume o valor 1, caso apresente material, e valor 0,
caso contrário.
Devido à grande dificuldade encontrada na resolução de um problema de pro-
gramação não linear de grande porte com variáveis discretas, pode-se adotar um

3
modelo que permita colocar densidades intermediárias de material no domı́nio. As-
sim, χ é substituı́da por uma variável contı́nua ρ ∈ [0, 1], que representa a densidade
de material no elemento.
Neste trabalho, considera-se que o elemento tem espessura constante e des-
prezı́vel em relação às outras dimensões. Uma estrutura que é fixa em uma área
da superfı́cie sofre deformação quando um carregamento externo é aplicado. O car-
regamento aplicado ao corpo gera um campo de deslocamento u = [u1 u2 ]T . A
componente u1 representa o deslocamento horizontal e a componente u2 , o desloca-
mento vertical.
O problema mais simples de Otimização Topológica consiste na minimização
da flexibilidade média da estrutura ou, equivalentemente, a maximização da sua
rigidez, de modo que a estrutura esteja contida no domı́nio Ω e satisfaça algumas
condições de contorno, com um volume predeterminado. Assim, após a discretização
de Ω, o problema em questão é escrito como

minρ,u f T u
s. a K(ρ)u =f
Pn (1.1)
i=1 vi ρi ≤ V
ρmin ≤ ρi ≤ 1, i = 1, ..., n,
em que n é o número de elementos do domı́nio, ρi e vi são, respectivamente, a
densidade e o volume do i-ésimo elemento, V é o limitante superior para o volume
da estrutura, f é o vetor de forças nodais associado às cargas externas, u ≡ u(ρ)
é o vetor de deslocamentos nodais produzidos pela aplicação das cargas externas e
K(ρ) é a matriz de rigidez global da estrutura dada por ρ. O parâmetro ρmin é
uma constante positiva suficientemente pequena, usada para evitar instabilidades
numéricas na resolução do problema.
Para reduzir a ocorrência de densidades intermediárias na solução de (1.1),
Bendsøe [2] introduziu o método SIMP (Solid Isotropic Material with Penaliza-
tion). Neste método x’ρ é substituı́do por ρp em parte do modelo a ser otimizado,
em que p é um parâmetro de penalização. Em [11] são mostradas condições que
garantem que ρ tenda a não assumir valores intermediários à medida que p se torne
suficientemente grande. O problema com a inserção deste parâmetro é escrito como

minρ,u f T u
s. a K(ρ p
Pn )u = f (1.2)
i=1 vi ρi ≤ V
ρmin ≤ ρi ≤ 1, i = 1, ..., n.

Isolando o valor de u na primeira restrição, o problema pode ser reescrito como

minρ fPT K(ρp )−1 f


n
s. a i=1 vi ρi ≤ V (1.3)
ρmin ≤ ρi ≤ 1, i = 1, ..., n.

Desta maneira, o problema 1.3 depende apenas de ρ e das restrições lineares.


Outra instabilidade indesejada na solução de problemas de Otimização Topológica
são os denominados tabuleiros de xadrez, exemplificado na Figura 2. Nestes casos,
há uma formação de alternância de elementos com e sem material, gerando uma ima-
gem similar a um tabuleiro de xadrez. Uma solução com esta propriedade não se
configura numa ótima distribuição de material e sim em um fenômeno que acontece
devido à formulação do tipo de elemento finito utilizado no processo de otimização.
Para tratar este tipo de instabilidade são utilizados filtros espaciais, que substituem

4
a densidade em um dado elemento por uma combinação das densidades dos elemen-
tos próximos a ele. Em alguns casos, estes filtros fazem com que as restrições se
tornem não lineares.

Figura 2: Tabuleiro de Xadrez.


Fonte: Retirado de [12].

Em [12] é proposto um método de Programação Linear Sequencial (PLS) para


resolver o problema de Otimização Topológica. Este tipo de método usa, em cada
iteração, aproximações de Taylor de primeira ordem, tanto da função quanto das res-
trições, em busca da solução do problema. Estas aproximações lineares só possuem
garantia de aproximar bem as funções perto do ponto da expansão de Taylor. Por
este motivo, é necessária alguma estratégia para globalizar o método, ou seja, algo
que assegure a convergência, independentemente do ponto inicial utilizado. Em [12]
isso é feito baseado em ideias semelhantes às de [7], que propõe um método de duas
fases para garantir progresso tanto em relação à viabilidade quanto à otimalidade.
Nas próximas seções vamos apresentar os pontos estudados neste projeto a fim
de compreender a resolução do problema de Otimização Topológica.

2 Programação Linear
Um problema de programação linear consiste em minimizar ou maximizar uma
função linear, sujeita à restrições compostas por funções lineares.
Um problema de programação linear possui a forma

minimizar z = cT x
sujeito a Ax = b (2.1)
x ≥ 0,
em que:
• z é denominada função objetivo,
• x ∈ Rn é o vetor de incógnitas,
• b ∈ Rm ,
• A é uma matriz m × n denominada matriz de restrições (assume-se posto
completo),
que é denominada forma padrão. Note que, um problema pode admitir restrições
do tipo Ax ≥ b ou Ax ≤ b ou até mesmo uma mistura de ambos para diferentes

5
restrições. Porém, estes podem ser convertidos para a forma padrão por meio da
adição ou subtração de variáveis de folga, e.g. Ax ≤ b pode ser escrito da forma
Ax +  = b, em que  ∈ Rm é um vetor de variáveis de folga (os outros casos seguem
de maneira semelhante).
A região delimitada pelas restrições é denominada região viável.
Vamos, então, definir alguns conceitos importantes para a teoria de Programação
Linear.

Definição 2.1 (Conjunto Convexo) Um conjunto S é denominado convexo se,


para quaisquer dois pontos x, y ∈ S e α ∈ [0, 1],

αx + (1 − α)y ∈ S.

Proposição 2.1 O conjunto S = {x ∈ Rn : Ax = b} com A ∈ Rm×n e b ∈ Rm , é


convexo.

Definição 2.2 (Vértice) Seja S um conjunto convexo. Um ponto x ∈ S é deno-


minado vértice de S se x não pode ser escrito na forma

x = αk + (1 − α)y,

com k, y ∈ S, α ∈ (0, 1) e k, y 6= x.

Definição 2.3 (Solução Básica) Um ponto x é dito ser uma solução básica de
(2.1) se
• satisfaz Ax = b e
• as colunas de A correspondentes às componentes não-nulas de x são linear-
mente independentes.

Definição 2.4 (Solução Básica Viável) Um ponto x é uma solução básica viável
se for uma solução básica e satisfizer x ≥ 0.

Definição 2.5 (Solução Básica Viável Ótima) Se uma solução básica viável for
a que minimiza a função objetivo, então esta é dita ser uma solução básica viável
ótima.

Nas próximas seções, vamos começar a construir métodos para resolver um pro-
blema genérico de Programação Linear na forma padrão.

2.1 Método Exaustivo


Um teorema inicial muito importante é enunciado a seguir.

Teorema 2.1 Um ponto x é vértice do conjunto {x ∈ Rn : Ax = b, x ≥ 0} se, e


somente se, x é uma solução básica viável.

Demonstração Este é um resultado bem estabelecido de otimização e sua demons-


tração pode ser encontrada em [8].

6
De acordo com o Teorema 2.1, temos que as soluções possı́veis para o problema
encontram-se nos vértices da região viável e estes são dados pelas interseções de
n
hiperplanos. Logo, existem no máximo, m soluções básicas viáveis (note que nem
todas as interseções podem estar na região viável).

Figura 3:
Exemplo de uma região formada por restrições 2D - A área em verde representa a região
viável e os pontos pretos, os vértices.

Seguem outros dois importantes resultados.

Teorema 2.2 (Teorema da Representação) Considere o conjunto

S = {x ∈ Rn : Ax = b, x ≥ 0}

representando a região viável de um problema linear na forma padrão.


Seja
V = {v1 , v2 , ..., vk }
o conjunto de vértices de S.
Se S é não-vazio, então V é não-vazio e todo ponto x ∈ S pode ser escrito na forma
k
X
x=d+ αi vi
i=1

em que ki=1 αi = 1 e αi ≥ 0 ∀i ∈ {1, ..., k} e d satisfaz Ad = 0 e d ≥ 0, sendo


P
d = 0 ou d sendo uma direção em que a função decresce ilimitadamente.

Demonstração Este é um resultado bem estabelecido de otimização e sua demons-


tração pode ser encontrada em [8].

Teorema 2.3 Se um problema linear na forma padrão tem um número finito de


soluções ótimas, então este tem uma solução básica viável ótima.

Demonstração Este é um resultado bem estabelecido de otimização e sua demons-


tração pode ser encontrada em [8].

7
Com tais resultados, podemos restringir nossa busca por soluções ao conjunto
de vértices da região viável. O seguinte algoritmo, desenvolvido em MATLAB® ,
nos permite achar a solução de um problema de Programação Linear com região
viável limitada utilizando uma busca exaustiva. O algoritmo recebe os coeficientes
da função objetivo c, a matriz de restrições A e o vetor b, calcula todas as possı́veis
combinações de colunas m × m possı́veis de A. Com isso, calcula os vértices e
testa-os para qual minimiza a função objetivo.
Apesar de resolver o problema, tal algoritmo não é computacionalmente viável,
pois para encontrar um vértice é necessário resolver um sistema linear m × m para
cada vértice, o que é caro para problemas de grande porte. Tal algoritmo possui
complexidade exponencial em relação ao tamanho de variáveis do problema. Por
isso, nas próximas seções, veremos métodos que visam diminuir o custo computaci-
onal de se resolver um problema genérico de Programação Linear.
O algoritmo implementado para resolução de problemas de PL por um Método
Exaustivo segue abaixo.

Algoritmo 2.1 (Método Exaustivo)

1: function [fmelhor, xmelhor, imelhor] = vertices(A, b, c)


2: [m, n] = size(A);
3: indPos = nchoosek(1:n, m);
4: [k, r] = size(indPos);
5: fmelhor = 10^20;
6: for i = 1:k
7: M = A(:, indPos(i,:));
8: y = M\b;
9: negativo = find(y < -10^-8);
10: aux = sum(negativo);
11: if (norm(M*y - b) < 10^-8 & aux == 0)
12: x = zeros(n, 1);
13: x(indPos(i,:)) = y;
14: f = c’*x;
15: if f < fmelhor
16: xmelhor = x;
17: fmelhor = f;
18: imelhor = i;
19: end
20: end
21: end
22: end

2.2 Método Simplex


Diferentemente do Método Exaustivo, o método Simplex emprega a estratégia
de, a partir de uma solução básica viável inicial, caminhar pelos vértices testando se
o vértice atual é ótimo por meio da análise de possı́veis direções que possam reduzir
ainda mais a função objetivo.

8
2.2.1 Método Primal-Simplex
Considere o problema na forma padrão

minimizar z = cT x
sujeito a Ax = b (2.2)
x≥0

em que A é uma matriz m × n, com posto completo.


Seja x uma solução básica viável com suas variáveis no formato
 
xB
x= (2.3)
xN
em que:
• xB é o vetor de variáveis básicas não-nulas e
• xN é o vetor de variáveis não-básicas, atualmente nulas.
Logo, podemos escrever a função objetivo da forma

z = cB T xB + cN T xN (2.4)

e as restrições da forma
Ax = BxB + N xN = b (2.5)
em que:
• cB é o vetor coeficientes das variáveis básicas,
• cN é o vetor de coeficientes das variáveis não-básicas,
• B é a matriz cujas colunas correspondem as variáveis básicas e
• N é a matriz cujas colunas correspondem as variáveis não-básicas.
Podemos reescrever (2.5) como

xB = B −1 b − B −1 N xN . (2.6)

Substituindo (2.6) em (2.4), obtemos

z = cB T B −1 b + cN T − cB T B −1 N xN .

(2.7)
T
Definindo y = cB T B −1 , denominado vetor de multiplicadores do Simplex,
podemos reescrever (2.7) como

z = y T b + cN T − y T N x N .

(2.8)

Note que, tomando xN = 0, calculamos os valores atuais das componentes


básicas xB = b̂ = B −1 b e o valor da função objetivo ẑ = cB T B −1 b.
Definindo ĉN = cN T −cB T B −1 N , chamamos a componente cˆj de custo reduzido
correspondente a xj . Podemos reescrever a função objetivo da forma

z = ẑ + cˆN T xN . (2.9)

Se xj é uma componente de xN , temos que alterá-la de 0 para um dado  ∈ R+


o que implica em acrescentarmos o valor cˆj  à função objetivo. Se cˆj ≥ 0, temos
que a função objetivo ou aumenta ou continua a mesma. Logo, devemos aumentar
xj um valor  se cˆj < 0, pois a função objetivo irá diminuir. Se o vértice atual não

9
for ótimo, i.e., se a base atual não for ótima, existirá pelo menos uma componente
cˆt < 0. Note que, temos que aumentar xt correspondente à um valor que não viole
as restrições de não-negatividade.
Como xN é o vetor nulo exceto por xt , temos que analisar

xB = B −1 b − B −1 N xN
(2.10)
= b̂ − Ât xt

em que Ât = B −1 At com At sendo a t-ésima coluna de A.


Analisando componente a componente, temos

(xb )i = b̂i − âi,t xt . (2.11)

Logo, de modo que (xb )i ≥ 0 ∀i, tomamos


( )
b̂i
x̄t = min : âi,t > 0 (2.12)
âi,t

e fazemos xb ← xb − Ât x̄t , com isso, zeramos uma das componentes de xb e fazemos
a componente xt = x̂t , o que nos resulta em uma nova solução básica viável e um
novo valor para a função objetivo dada por ẑ ← ẑ + ĉt x̄t .
Caso âi,t ≤ 0 ∀i, então podemos incrementar xt arbitrariamente sem violar a
condição de não-negatividade e, então, a função objetivo decrescerá ilimitadamente.
Neste caso, temos um problema ilimitado.
Com tais ferramentas, obtemos o Método Primal-Simplex. Dada uma solução
básica viável inicial, temos
1. Teste de Otimalidade: Calcula-se y T = cTB B −1 e ĉTN = cTN − y T N .
Se ĉTN ≥ 0, temos que a base atual é ótima. Caso contrário, selecionamos
xt associada com um ĉt < 0 (preferência ao ĉt mais negativo possı́vel), para
algum t ∈ N que entrará na base.
2. Teste da Razão: Calcula-se Ât = B −1 At . Encontra-se s ∈ N tal que
( )
b̂s b̂i
= min : âi,t > 0 (2.13)
âs,t âi,t

de modo que xs será a variável que sairá da base e âs,t é chamado de pivô.
Se âi,t ≤ 0 ∀i, então o problema é ilimitado.
3. Atualização: Atualiza-se a matriz B substituindo a coluna correspondente à
variável que sai com a nova coluna correspondente à variável que entra na
matriz A e calcula-se o novo valor de xb .
O processo se repete até que se atinja a base ótima ou conclua-se que o problema
é ilimitado.

10
Figura 4: Exemplo 2D do Simplex - Percorre vértices checando a existência de direções
que reduzem ainda mais a função objetivo.

O seguinte código, em MATLAB® , resolve um problema do tipo (2.2) usando


o Método Primal-Simplex. Para uma melhor eficiência, as inversas são calculadas
utilizando a decomposição LU.

Algoritmo 2.2 (Método Primal-Simplex)

1: function [x, f] = simplex(A, b, c, x, IB, IN)


2: [m, n] = size(A);
3: B = A(:, IB);
4: [L,U,P] = lu(B);
5: lambda = (B’)\c(IB);
6: rd = c(IN) - A(:, IN)’*lambda;
7: [v, vEnter] = min(rd);
8: while v < 0
9: cEnter = IN(vEnter);
10: y_aux = L\(P*A(:, cEnter)); %Uyq=y_aux, L*y_aux = aq;
11: yq = U\y_aux; %U*yq = y_aux;
12: raz = x(IB) ./ yq;
13: indrazpos=find(raz>0);
14: [u,ind2]=min(raz(indrazpos));
15: uSai = indrazpos(ind2);
16: if u<=0
17: ’problema ilimitado’;
18: pause
19: end
20: IN(:, vEnter) = IB(:, uSai);
21: IB(:, uSai) = cEnter;
22: B = A(:, IB);
23: [L,U,P] = lu(B);
24: %LUx=b
25: y = L \ (P * b); %Ux = y, Ly = Pb
26: x = zeros(n, 1);
27: x(IB) = U \ y;
28: lambda = (B’)\c(IB);
29: rd = c(IN) - A(:, IN)’*lambda;
30: [v, vEnter] = min(rd);
31: end
32: f = c’*x;

11
33: end

2.2.2 Método das Duas Fases


O Método das Duas Fases usa as variáveis artificiais para criar um problema de
Programação Linear auxiliar, chamada fase um, que tem a função de determinar
uma solução básica factı́vel para as restrições originais, e tem como função objetivo:

X
minimizar ai , (2.14)
i

em que ai são as variáveis artificiais. Se o problema original for factı́vel, a função


objetivo 2.14 tem valor ótimo igual a 0. Caso contrário, o mı́nimo é maior que zero.
A fase um é resolvida por meio do Método Simplex e, ao seu fim, tem-se uma base
que será usada como base inicial para o problema original, que poderá ser resolvido
com o Método Primal-Simplex.

2.3 Métodos de Pontos Interiores


Além do Método Simplex, podemos resolver um problema de Programação Li-
near utilizando Métodos de Pontos Interiores, onde aproxima-se a solução do pro-
blema a partir de um ponto interior à região viável, ao invés de um vértice como
anteriormente.

2.3.1 Método Primal-Dual


Definimos o problema primal na forma padrão como
minimizar z = cT x
sujeito a Ax = b (2.15)
x ≥ 0.
Denotamos por s o vetor dual das variáveis de folga, o problema dual é
escrito da seguinte forma:

maximizar w = bT y
sujeito a AT y + s = c (2.16)
s ≥ 0.
Um Método Primal-Dual resolve os problemas primal e dual simultaneamente,
as equações de igualdade do problema primal e do dual são exatamente satisfei-
tas, enquanto a não negatividade das incógnitas são estritamente satisfeitas. A
convergência acontece quando a folga de dualidade, calculada pela diferença entre
as soluções ótimas dos problemas primal e dual é igual a zero ou menor que uma
tolerância.
A cada iteração do método, procuramos vetores x(µ), y(µ) e s(µ) tais que, para
µ > 0, satisfaçam

Ax = b
T
A y+s=c
(2.17)
xi si = µ
x, s ≥ 0

12
O valor de µ é então reduzido e o processo é repetido até que a convergência seja
atingida. Começando a resolução do problema a partir de estimativas x > 0, y
e s > 0 tais que Ax = b e AT y + s = c, mas não necessariamente xi si = µ.
Precisamos encontrar novas estimativas x + δx, y + δy e s + δs mais próximas
de satisfazer as equações. Definindo as matrizes X = diag(xi ) e S = diag(si ), os
vetores δx, δy e δs são obtidos resolvendo o seguinte sistema

Sδx + Xδs = µ − XSe


Aδx = 0 (2.18)
AT δy + δs = 0
O código, em MATLAB® , está descrito abaixo.
Algoritmo 2.3 (Pontos Interiores)
1: function [x, it] = PIPL(A, b, c, x, lamb, mu)
2:
3:
4: [m, n] = size(A);
5: tol = 10^(-8);
6:
7: F = [A * x - b ;
8: A’ * lamb + mu - c;
9: x .* mu];
10: it = 0;
11:
12: while norm(F, inf) > tol
13:
14: it = it + 1;
15:
16: J = [A zeros(m) zeros(m,n);
17: zeros(n) A’ eye(n);
18: diag(mu) zeros(n,m) diag(x)];
19:
20: d = -J \ F;
21: dx = d(1:n);
22: dlamb = d(n+1:n+m);
23: dmu = d(n+m+1:2*n+m);
24: raz = -x./ dx;
25: indrazpos = find(raz > 0);
26: [t, ind2] = min(raz(indrazpos));
27: x = x + 0.999 * t * dx;
28: lamb = lamb + dlamb;
29: raz = -mu./ dmu;
30: indrazpos = find(raz > 0);
31: [t, ind2] = min(raz(indrazpos));
32:
33: mu = mu + 0.999 * t * dmu;
34:
35: F = [A * x - b;
36: A’ * lamb + mu - c;
37: x .* mu];
38: end

13
2.3.2 Método Preditor-Corretor
O Método Preditor-Corretor é uma modificação do método primal-dual que re-
duz o número de iterações com um pequeno aumento no custo de cada iteração.
Este método consiste em duas fases para resolver o seguinte sistema

Sδx + Xδs = µ − XSe − Xe


Aδx = b − Ax (2.19)
T
δy + δs = c − A y − s.

A primeira fase, chamada preditora, calcula estimativas para δx, δy e µ. A


segunda fase, chamada corretora, utiliza os valores previstos para obter uma solução
aproximada para o Sistema 2.19.
O código, em MATLAB® , desse método está descrito abaixo.

Algoritmo 2.4 (Preditor-Corretor)

1: function [x, it] = PIPL_PC(A, b, c, x, lamb, mu)


2:
3: %Dados da Matriz
4: [m, n] = size(A);
5: Ind3=[n+m+1:2*n+m];
6:
7: tol = 10^(-8);
8:
9: F = [A * x - b ;
10: A’ * lamb + mu - c;
11: x .* mu];
12: it = 0;
13:
14: while (norm(F, inf) > tol) & (it < 100)
15:
16: it = it + 1;
17:
18: J = [A zeros(m) zeros(m,n);
19: zeros(n) A’ eye(n);
20: diag(mu) zeros(n,m) diag(x)];
21:
22: d = -J \ F;
23: dx = d(1:n);
24: dlamb = d(n+1:n+m);
25: dmu = d(n+m+1:2*n+m);
26: pho = dx’*dmu/n
27: pho=(x+dx)’*(mu+dmu)/n
28:
29:
30: %corretor
31: F(Ind3) = [x .* mu - pho + dx.*dmu];
32:
33: d = -J \ F;
34:
35: dx = d(1:n);

14
36: dlamb = d(n+1:n+m);
37: dmu = d(n+m+1:2*n+m);
38:
39: raz = -x./ dx;
40: indrazpos = find(raz > 0);
41: [t, ind2] = min(raz(indrazpos));
42: if isempty(t)
43: t=1;
44: elseif t>1
45: t=1;
46: end
47:
48: x = x + 0.999 *t* dx;
49:
50: lamb = lamb + dlamb;
51:
52: raz = -mu./ dmu;
53: indrazpos = find(raz > 0);
54: [t, ind2] = min(raz(indrazpos));
55: if isempty(t)
56: t=1;
57: elseif t>1
58: t=1;
59: end
60:
61: mu = mu + 0.999 * t* dmu;
62:
63: F = [A * x - b ;
64: A’ * lamb + mu - c;
65: x .* mu];
66:
67: end

3 Programação Não Linear


De maneira similar ao caso da Programação Linear, queremos resolver um pro-
blema de minimizar uma função sujeita à certas restrições. Porém, neste caso,
tanto a função objetivo, i.e. a função que queremos otimizar, quanto as funções que
definem as restrições do problema podem ser funções não-lineares.
No problema tratado nesse trabalho, as restrições sempre serão lineares. Sendo
assim, adotaremos como forma padrão para um problema de Programação Não
Linear o seguinte
minimizar f (x)
sujeito a Ax = b (3.1)
x ∈ X,
em que
• f : Rn → R possui derivada de ordem 1 Lipschitziana, ou seja,
∀ x, y ∈ Rn |f 0 (x) − f 0 (y)| ≤ k|x − y|
em que k ∈ R, e

15
Figura 5: Aproximação da função por Taylor em torno de um ponto x com região de
confiança.

• X = {x ∈ Rn : xl ≤ x ≤ xu } com xl , xu sendo os limites inferior e superior


do conjunto, respectivamente.
Veremos, na Seção 3.1, um método para se aproximar uma solução de um pro-
blema do tipo (3.1).

3.1 Programação Linear Sequencial


A Programação Linear Sequencial (PLS) consiste em aproximar um problema
não-linear do tipo (3.1) por meio de uma sequência de problemas de Programação
Linear do tipo (2.1).
Como na forma padrão de problemas não-lineares f é diferenciável, podemos
fazer a seguinte aproximação por meiodo polinômio de Taylor
f (x + s) ≈ f (x) + ∇f (x)T s (3.2)
em torno do ponto x ∈ X.
Usando (3.2), podemos reescrever (3.1) como
minimizar f (x) + ∇f (x)T s
sujeito a As = 0 (3.3)
x + s ∈ X.
Para solucionar (3.1) utilizaremos um algoritmo que resolve uma sequência de
problemas de programação linear do tipo (3.3) em cada iteração, obtendo uma
solução sk de (3.3) que será utilizada para aproximar o problema original em um
próximo ponto dado por x(k+1) = x(k) + sk , repetindo o processo até atingirmos
uma boa aproximação para a solução do problema (3.1).
Sabemos que (3.3) deixa de ser uma boa aproximação conforme nos distanciamos
do ponto x. Desta forma, definimos a chamada região de confiança de raio δ > 0, que
nos mantém próximos o suficiente do ponto x de modo a termos uma aproximação
aceitável do problema a cada iteração do algoritmo. Sugere-se a restrição ||s||∞ ≤ δ
seja satisfeita. A Figura 5 representa a aproximação linear de uma função quadrática
por Taylor com região de confiança δ.
Adotando a região de confiança, podemos reescrever o problema (3.3) como
minimizar ∇f (x(k) )T s
sujeito a As = 0 (3.4)
sl ≤ s ≤ su .

16
em que
• sl = max{−δk , xl − x(k) } e
• su = min{δk , xu − x(k) }.
Definimos a redução verdadeira de f como sendo

Ared = f (x(k) ) − f (x(k) + sk ) (3.5)

e a redução prevista de f como sendo

Pred = −∇f (x(k) )T sk . (3.6)

A cada iteração do algoritmo, aceitaremos o iterado x(k+1) = x(k) + sk se

f (x(k) + sk ) << f (x(k) )

i.e., se a aproximação encontrada na iteração atual de fato reduz o valor da função


objetivo como queremos.
Sugere-se em [12] que o iterado sk seja aceito caso Ared ≥ 0.1Pred ; caso contrário,
diminui-se δk , a região de confiança da k-ésima iteração, e computa-se novamente
uma solução aproximada. Além disso, se A Pred for grande o suficiente aceitamos o
red

novo ponto e, podemos aumentar δk .


Uma adaptação do algoritmo sugerido por [12] para resolver um problema do
tipo (3.1) por meio da Programação Linear Sequencial, simplificado para o caso em
que as restrições são lineares está descrito abaixo.

Algoritmo 3.1 (Algoritmo PLS Geral)


1: function xk = SLP_simples(A, x0, xl, xu)
2: %PARAMETROS
3: [~, n] = size(xl);
4: delta_max = 0.1;
5: tol = 10^(-4);
6: erro = 100;
7: xk = x0;
8: delta = delta_min;
9:
10: %OPTIONS PARA LINPROG
11: options = optimset(’linprog’);
12: options.Display = ’off’;
13:
14: %LAÇO PRINCIPAL
15: while erro > tol
16: %Calcula gradiente em xk
17: gradf = grad_f(xk);
18:
19: %Calcula LB e UB
20: sl = max(-delta * ones(n, 1), xl - xk);
21: su = min(delta * ones(n, 1), xu - xk);
22:
23: %Calculo s pelo problema 3.4 utilizando a funç~
ao linprog
24: s = linprog(gradf, [], [], A, zeros(n, 1), sl, su, options);
25:
26: %Cálculo do AR e PR

17
27: AR = f(xk) - f(xk + s);
28: PR = -gradf’ * s;
29:
30: %TESTA ETAPA
31: if AR >= 0.1 * PR
32: %Atualiza xk
33: xa = xk;
34: xk = xk + s;
35:
36: %Aumenta Regi~
ao de Confiança
37: if AR >= 0.5 * PR
38: delta = min(2.5*delta, norm(xu - xl, inf));
39: else
40: delta = delta_min;
41: end
42:
43: %Calcula o Erro
44: erro = min(norm(gradf, inf), norm(xa - xk, inf));
45: else
46: %Diminui a Regi~ao de Confiança
47: delta = 0.1 * delta;
48: end
49: end
50: end

Vamos, então, mostrar algumas propriedades do Algoritmo 3.1.


Começaremos por definir alguns conceitos importantes.

Teorema 3.1 (Condições KKT) Seja x∗ um ponto de mı́nimo local da função


objetivo f sujeito a restrições g(x) ≥ 0. Seja as colunas de Z(x∗ ) uma base para o
núcleo do Jacobiano das restrições ativas em x∗ . Se x∗ é um ponto regular para as
restrições, então existe um vetor de multiplicadores de Lagrange λ∗ tal que
• ∇x L(x∗ , λ∗ ) = 0, ou Z(x∗ )T ∇f (x∗ ) = 0,
• λ∗ ≥ 0,
• λT∗ g(x∗ ) = 0,
• Z(x∗ )T ∇x L2xx (x∗ , λ∗ )Z(x∗ ) é semi-definida positiva.

Definição 3.1 (Ponto Estacionário) Um ponto x é denominado estacionário se


satisfaz as condições KKT.

Com tais conceitos, mostraremos os seguintes resultados.

Teorema 3.2 Seja x(k) um ponto não-estacionário para o problema (3.1). Então,
o iterado x(k) + sk é aceito após um número finito de iterações.

Demonstração Seja x(k) um ponto não-estacionário para o problema (3.1). Apro-


ximando o problema (3.1) por (3.4), obtemos

minimizar ∇f (x(k) )T s
sujeito a As = 0 (3.7)
sl ≤ s ≤ su .

18
Denotaremos o conjunto viável de (3.8) por

Υ = {s ∈ Rn : As = 0, xl − x(k) ≤ s ≤ xu − x(k) }.

Pelas hipóteses sob x(k) , temos que

dt := PΥ (−∇f (x(k) )) 6= 0.

Podemos ajustar dt de modo a deixá-lo dentro da região de confiança através do


seguinte problema auxiliar

minimizar α∇f (x(k) )T dt


sujeito a ||αdt ||∞ ≤ δk (3.8)
α ≥ 0,
Note que 3.8 é um problema de programação linear. Em um número finito de
iterações, o raio δk pode ser reduzido de forma que ||αdt ||∞ = δk . Então, como
a solução de (3.8) deve estar nos vértices de seu conjunto viável, sendo este o in-
tervalo [0, ||dδtk||∞ ], e ∇f (x(k) )T dt < 0, a solução deverá ser ᾱ = ||dδtk||∞ . Note que

−∇f (x(k) )T dt
ηk := > 0.
kdt k∞
Temos que

−∇f (x(k) )T dt
−∇f (x(k) )T (ᾱdt ) = δk = ηk δk .
||dt ||∞
Se sk é a solução do problema (3.7), temos que, pela definição de redução prevista

Pred = −∇f (x(k) )T (sk )


≥ −∇f (x(k) )T (ᾱdt ) (3.9)
= ηk δk .
Pela série de Taylor, obtemos

f (x(k) + sk ) = f (x(k) ) + ∇f (x(k) )sk + O(||sk ||2 ).

Como temos que ||sk ||∞ ≤ δk , podemos considerar de maneira equivalente

Ared (sk ) = f (x(k) ) − f (x(k) + sk )


(3.10)
= f (x(k) ) − f (x(k) ) − ∇f (x(k) )T sk + O(||sk ||2 )
e também

Pred (sk ) = −∇f (x(k) )T sk . (3.11)

Subtraindo (3.11) de (3.10), obtemos

Ared (sk ) − Pred (sk ) = [f (x(k) ) + ∇f (x(k) )T sk ] − f (x(k) ) − ∇f (x(k) )sk + O(||sk ||2 )
= O(||sk ||2 )
(3.12)

De (3.12), chegamos em

Ared (sk ) O(||sk ||2 )


|Ared (sk ) − Pred (sk )| = O(||sk ||2 ) =⇒ −1 = (3.13)
Pred (sk ) Pred (sk )

19
Combinando (3.13) e (3.9), obtemos

Ared (sk ) O(||sk ||2 ) O(||sk ||2 )


−1 = ≤ = O(δk ).
Pred (sk ) Pred (sk ) ηk δk
Logo
Ared (sk )
− 1 = O(δk ) (3.14)
Pred (sk )
A equação (3.14) indica que para δk suficientemente pequeno, teremos que Ared ≥
0.1Pred que implica que o iterado x(k) + sk será aceito após um número finito de
iterações. 

Lema 3.1 Seja {x(k) }k∈N uma sequência infinita gerada pelo Algoritmo 3.1.
Se existe K1 ⊂ N tal que limk∈K1 x(k) = x∗ , com x∗ um ponto não-estacionário
para (3.1), então existe η > 0 tal que

−∇f (x(k) )T sk ≥ ηδk ∀k ∈ K1 .

Demonstração Seja

Υ = {s ∈ Rn : As = 0, xl − x(k) ≤ s ≤ xu − x(k) }
(k)
e tome dt (x) = PΥ (−∇f (x)), dt = dt (x(k) ). Note que dt (x) = 0 se, e somente
se, x é estacionário.
Definimos, para x não-estacionário
dt (x)
η(x) = −∇f (x)T .
kdt (x)k∞

Note que η(x) é sempre positiva, pois, pela definição de dt (x), ∇f (x)T dt (x) < 0.
Como ∇f (x)T e dt (x) são contı́nuas, então η(x) é uma função contı́nua.
Como x(k) → x∗ e η(x∗ ) > 0 então existe η̄ < η(x(k) ) ∀k. 

Lema 3.2 Seja {x(k) } uma sequência limitada gerada pelo Algoritmo 3.1. Se existe
x∗ ponto limite de {x(k) }k∈K1 não-estacionário para o problema (3.1), então, existe
δ 0 tal que δk ≥ δ 0 > 0 ∀k ∈ K1 .

Demonstração Pelo Lema 3.1, existe η > 0 tal que

∇f (x(k) )T sk ≥ ηδk ∀k ∈ K1 . (3.15)

Suponha que exista K2 ⊂ K1 tal que limk∈K2 δk = 0. Dessa maneira, podemos


assumir que δmax foi sempre rejeitado nas iterações com k ∈ K2 . Tomando s̄k
(solução rejeitada de (3.4)) associada a δ̂k = 10δk , temos que

Ared (sk ) 100Lδk2


−1 ≤
Pred (sk ) ηδk
100Lδk
= →0
η
em que L é a constante de Lipschitz de f. Portanto, Ared (s̄k ) ≥ 0.1Pred (s̄k ), de
modo que s̄k teria sido aceito, o que é uma contradição. 

Teorema 3.3 Seja {x(k) }k∈N uma sequência infinita gerada pelo Algoritmo 3.1 e
x∗ um ponto limite de uma subsequência {x(k) }k∈K1 . Então, x∗ é um ponto esta-
cionário para (3.1).

20
Demonstração Suponha que x∗ não seja estacionário. Do critério de aceitação
do passo e dos lemas anteriores, temos que, para k ∈ K2 ⊂ K1 ,

f (x(k) ) − f (x(k+1) ) ≥ −0.1∇f (x(k) )T sk ⇐⇒


f (x(k+1) ) ≤ f (x(k) ) + 0.1∇f (x(k) )T sk
≤ f (x(k) ) − ηδk
≤ f (x(k) ) − ηδ 0 .

Note que f → −∞, pois, a cada iteração, f decresce e, para k ∈ K2 , esta decresce
no mı́nimo 0.1ηδ 0 , o que é uma contradição, pois f está definida em um compacto.


3.2 Restauração Inexata


Com base nos estudos da seção anterior, foi desenvolvida uma outra abordagem
para a globalização do método de PLS para a resolução de problemas de otimização
do formato de estruturas, a Restauração Inexata. Neste método, são utilizadas
técnicas mais modernas para resolver problemas em duas fases. Uma fase de res-
tauração, que visa melhorar a viabilidade da solução, e uma de otimização. Como
neste projeto são trabalhados problemas de otimização com restrições lineares, os
pontos são sempre viáveis e, por isto, a fase de restauração é sempre realizada com
sucesso.

3.2.1 Método Proposto


Algoritmo 3.2 (Método Restauração Inexata)
Sejam β > 0, θ0 ∈ (0, 1), r ∈ (0, 1) e δmin os parâmetros do algoritmo.
Seja x0 um ponto inicial viável.
Passo 1 Fase de restauração.
compute y k = x0
Teste as condições

kh(y k )k ≤ rkh(xk )k. (3.16)


kxk − y k k ≤ βkh(xk )k (3.17)
Passo 2 Parâmetro de Penalidade.
Se
1
Φ(y k , θk ) − Φ(xk , θk ) ≤ (1 − r)(kh(y k )k − kh(xk )k), (3.18)
2
faça θk+1 = θk .
Senão, calcule:

(1 + r)(kh(xk )k − kh(y k )k)


θk+1 = . (3.19)
2[f (y k ) − f (xk ) + kh(xk )k − kh(y k )k]

Passo 3 Fase de Otimização. Seja δk ≥ δmax .


Passo 3.1 Calcule x ∈ Rn uma solução aproximada do seguinte problema:

Minimize ∇f (y k )T s
sujeito a Jh (y k )s = 0 (3.20)
x ∈ Ω.

21
em que Jc é a matriz jacobiana das restrições de igualdade.
Teste as condições:
1
f (y k + s) ≤ f (y k ) − ||s||2 (3.21)
2
e
1
Φ(y k + s, θk+1 ) ≤ Φ(xk , θk+1 ) + (1 − r)(kh(y k )k − kh(xk )k). (3.22)
2
Se (3.21) e (3.22) são satisfeitas, defina sk = s, xk+1 = y k + sk , δk = δ, atualize
k ← k + 1, e volte ao Passo 1.
Senão, atualize
δ = 0.1δ. (3.23)
e volte ao Passo 3.1.

Teorema 3.4 O Passo 3 do Algoritmo 3.2 está bem definido.

Demonstração Defina

γ = {s ∈ Rn : Jh (y k )s = 0, y k + s ∈ Ω}

e
dkt = Pγ (−∇f (y k )).
Considere o problema auxiliar

Minimize α∇f (y k )T dkt


(3.24)
sujeito a αkdkt k∞ ≤ δ,

Cuja solução é
δ
αk = .
||dkt ||∞
Defina
dkt
ηk = ∇f (y k )T .
||dkt ||∞
Então, temos que
dkt
∇f (y k )T s ≤ δ∇f (y k )T = δηk .
||dkt ||∞
Note que, se ηk = 0, o Passo 3 é bem definido para s = 0. Se η > 0, temos

f (y k + s) ≤ f (y k ) + ∇f (y k )T s + L||s||22
≤ f (y k ) − ηk δ + Lδ 2
≤ f (y k ) − (ηk − Lδ)δ

em que L é a constante de Lipschitz de f.


ηk
Se δ < 2L ≤ η2k , então

ηk δ
f (y k ) − (ηk − Lδ)δ ≤ f (y k ) −
2
δ2
≤ f (y k ) −
2
||s||22
≤ f (y k ) − .
2

22
Logo, mostramos que (3.21) está bem definida.
Agora, para (3.22), temos

Φ(z, θk+1 ) − Φ(xk , θk+1 ) = Φ(z, θk+1 ) − Φ(y k , θk+1 ) + Φ(y k , θk+1 ) − Φ(xk , θk+1 )
≤ θk+1 [f (z) − f (y k )] + (1 − θk+1 )[||h(z)||2 − ||c(y k )||2 ] + R
−θk+1 ηk δ 1
≤ + (1 − θk+1 Ls2 + (1 − r)(kh(y k )k2 − kh(xk )k2 )
2 2
1
≤ (1 − r)(kh(y k )k2 − kh(xk )k2 )
2
O que prova o resultado desejado. 

3.2.2 Implementação
A implementação do algoritmo com Restauração Inexata para resolução do pro-
blema de formato ótimo de estruturas foi realizado neste projeto considerando a line-
aridade das restrições, de forma que todos os pontos avaliados são viáveis. Por esse
motivo, a fase de restauração do método é sempre aceita, não precisando ser verifi-
cada. O algoritmo proposto para problemas com restrições lineares em MATLAB®
está descrita abaixo.

Algoritmo 3.3 (Método de Programação Linear Sequencial com Restauração Inexata)

1: function xk = SLP(A, x0, xl, xu)


2: %PARAMETROS
3: [~, n] = size(xl);
4: delta_min = 0.1;
5: tol = 10^(-4);
6: erro = 100;
7: xk = x0;
8: delta = delta_max;
9:
10: %OPTIONS PARA LINPROG
11: options = optimset(’linprog’);
12: options.Display = ’off’;
13:
14: %LAÇO PRINCIPAL
15: while erro > tol
16: %Calcula gradiente em xk
17: gradf = grad_f(xk);
18:
19: %Calcula LB e UB
20: sl = max(-delta * ones(n, 1), xl - xk);
21: su = min(delta * ones(n, 1), xu - xk);
22:
23: %Calculo s pelo problema 3.4 utilizando a funç~
ao linprog
24: s = linprog(gradf, [], [], A, zeros(n, 1), sl, su, options);
25:
26: %TESTA ETAPA
27: if f(xk + s) <= f(xk) - 1/2 * norm(s)^2
28: xa = xk;

23
29: xk = xk + s
30: delta = delta_min;
31:
32: %Calcula o Erro
33: erro = min(norm(gradf, inf), norm(xa - xk, inf));
34: else
35: %Diminui a Regi~ao de Confiança
36: delta = 0.1 * delta;
37: end
38: end
39: end

4 Otimização Topológica
A Otimização Topológica consiste em obter o formato de uma estrutura, res-
peitando certas condições fı́sicas e impondo que ela seja a mais eficiente possı́vel,
segundo algum critério. O objetivo neste tipo de problema é encontrar a confi-
guração ótima de uma estrutura, levando em consideração aspectos como a rigidez,
os deslocamentos, as forças externas aplicadas e o volume de material disponı́vel.
Usualmente, esses problemas são formulados como problemas de otimização não
linear de grande porte, e difı́cil resolução.

4.1 Formulação com Malhas Retangulares


O Método dos Elementos Finitos [1] tem como objetivo discretizar problemas que
estão formulados em conjuntos de dimensão infinita e é o processo mais utilizado
para a discretização de meios contı́nuos. Neste método, o problema em questão
é discretizado, ou seja, o domı́nio Ω é subdivido número finito (ne ) de regiões,
chamadas de elementos finitos. O meio contı́nuo Ω é transformado em um meio
discreto Ω̂ = {Ω1 , Ω2 , · · · , Ωne }, em que Ωe é a e-ésima região. De forma geral,
os elementos considerados são poligonais e seus vértices são chamados de nós, cuja
quantidade total é denotada por Nn .
O conjunto desses elementos é denominado malha. Esta malha pode ser com-
posta por diferentes tipos de elementos. Quanto maior for o número de elementos da
malha, ela é considerada mais fina, e a aproximação do domı́nio será mais precisa.
Em grande parte dos problemas, é preciso gerar uma malha heterogênea. Neste
caso, para uma análise adequada do problema, aplica-se um refinamento nas áreas
do domı́nio onde o grau de precisão deve ser maior. A Figura 6 apresenta o domı́nio
de projeto, a força aplicada e as condições de apoio. A Figura 7 apresenta o domı́nio
discretizado com 16 elementos quadrados (Ω1 , · · · , Ω16 ), a força aplicada e os apoios
que impedem os deslocamentos nodais, tanto na horizontal quanto na vertical.
Com essa discretização, os deslocamentos produzidos em um ponto arbitrário de
Ω pela aplicação de forças externas, podem ser aproximados por uma interpolação
polinomial, onde cada ponto usado na interpolação é um nó da malha de elementos
finitos.

4.2 Formulação com Malhas Triangulares


Em [13] é apresentado um método computacional para resolver o problema de
Otimização Topológica usando elementos finitos retangulares. Nesta seção é apre-

24
Figura 6: Domı́nio do projeto.
Fonte: Retirado de [12].

Figura 7: Elementos finitos.


Fonte: Retirado de [12].

sentada a adaptação da discretização para elementos finitos triangulares descrita


em [5]. A formulação trabalha com três nós por elemento, como mostra a Figura 8.

4.3 Classificação de Malhas


As malhas podem ser classificadas em estruturadas, não estruturadas, regulares
ou irregulares.
• Malha estruturada: Uma malha estruturada é aquela em que existe uma
ordem natural para numeração dos elementos. Nesse caso, para determinar a
conectividade dos elementos não é necessário informações extras.
• Malha não estruturada: Nas malhas não estruturadas dependem de uma
matriz de conectividade que determina os elementos que estão ligados entre
si, o que aumenta a complexidade de implementação e aumenta o custo com-
putacional.
• Malhas Regulares: Malhas regulares são aquelas em que todos os elementos
são análogos. O maior benefı́cio que esse tipo de malha oferece é o cálculo e
armazenamento de uma única matriz de rigidez do elemento.
• Malhas Irregulares: Malhas irregulares precisam do cálculo da matriz de
rigidez de cada elemento, o que aumenta significativamente o custo computa-
cional.
Em [12], o problema de Otimização Topológica é resolvido discretizando o domı́nio
com uma malha estruturada e regular, diminuindo o custo computacional e facili-
tando a implementação. Por outro lado, o emprego desse tipo de malha tem li-

25
Figura 8: Elemento finito triangular de três nós.
Fonte: Adaptado de [1].

mitações em relação ao formato da estrutura de interesse. Caso a estrutura não


possua uma forma que possa ser bem adaptada a elementos regulares, é necessário
realizar ajustes para contornar este inconveniente. Pode-se optar pelo uso de ma-
lhas convencionais mais refinadas, uma vez que, ao aumentar o número de ele-
mentos, melhora-se a aproximação, aumentando também o custo computacional da
otimização. Outra alternativa é o uso de malhas não estruturadas, que é o método
utilizado neste trabalho para otimizar o projeto de uma asa de avião.

Figura 9: Exemplo de malha triangular irregular gerada pelo MATLAB® com tamanho
máximo da aresta sendo 10.
Fonte: Retirado de [5].

A Figura 11 representa a imagem gerada com o tamanho máximo da aresta do


elemento sendo 0.5. Neste caso, tem-se 2714 elementos e 1418 nós. A Figura 9
representa a imagem gerada com o tamanho máximo da aresta do elemento sendo
10, o que produz 8 elementos e 8 nós. Verifica-se, então, que quanto menor o
tamanho máximo da aresta, maior o número de elementos e mais refinada a malha.

26
Figura 10: Exemplo de malha triangular irregular não estruturada gerada pelo
MATLAB® .
Fonte: Retirado de [5].

Figura 11: Exemplo de malha triangular irregular não estruturada gerada pelo MATLAB®
com tamanho máximo da aresta sendo 0.5.
Fonte: Retirado de [5].

4.4 Tabuleiro de Xadrez e Filtros


Uma instabilidade indesejada na solução de problemas de Otimização Topológica
são os denominados tabuleiro de xadrez, exemplificado na Figura 12. Nestes casos,
há uma formação de alternância entre elementos totalmente preenchidos e elementos
vazios, gerando uma imagem similar a um tabuleiro de xadrez. Uma solução com
esta propriedade não se configura numa ótima distribuição de material e sim num
fenômeno que acontece devido à formulação do elemento finito utilizado no processo
de otimização.
São propostos na literatura dois principais métodos para a eliminação dos ta-
buleiro de xadrez. O primeiro consiste em aumentar o número de nós do elemento
finito (ordem do elemento), obtendo uma aproximação mais refinada para os des-
locamentos, aumentando, portanto, a dimensão da matriz de rigidez global K do
problema. Este aumento resulta em um alto custo computacional para a resolução
numérica do problema de Otimização Topológica.
O segundo método para evitar o tabuleiro de xadrez são os filtros espaciais, um
operador matemático que redistribui as densidades de cada elemento finito levando
a uma distribuição mais homogênea das densidades.

27
Figura 12: Exemplo de uma estrutura onde aparece o tabuleiro de xadrez para o caso
retangular.
Fonte: Retirado de [12].

Uma vizinhança é definida para cada elemento do domı́nio, a fim de ser utili-
zado um filtro espacial. Caracteriza-se tal vizinhança por B(i, rmin ), o que indica
que a vizinhança é centrada em um elemento i e com raio rmin . A aplicação do
filtro gera efeito no elemento i levando em consideração informações dos elementos
vizinhos de sua vizinhança, sendo que, quanto mais distante estiver o elemento j
do elemento central i, menor será a influência deste elemento na ação do filtro. A
Figura 13 exemplifica a vizinhança de um elemento finito i para o caso de uma
malha retangular.

Figura 13: Ilustração da vizinhança de um elemento finito i para o caso retangular.


Fonte: Retirado de [12].

Na literatura são exibidos diversos filtros. Na próxima seção será apresentado


o filtro da média ponderada das densidades, utilizado nesse trabalho para tratar o
efeito tabuleiro de xadrez.

28
4.4.1 Filtro da Média Ponderada das Densidades
O filtro da Média Ponderada das Densidades foi proposto por [4] e é aplicado a
cada elemento i da malha, e a densidade ρi deste elemento é substituı́da pela média
ponderada das densidades dos elementos contidos em sua vizinhança Bi = B(i, r)
para algum valor fixo de r. A nova densidade é dada por:
X ωj (sij )
Φi = ρj , (4.1)
ωi
j∈Bi

em que sij é a distância euclidiana entre os centroides dos elementos i e j,


!
s2

 exp − 2( rij)2

3
ωj (sij ) = 2π ( r3 )
, se sij ≤ r, (4.2)


0, se sij > r,
e X
ωi = ωj (sij ). (4.3)
j∈Bi

e a restrição de volume passa a ser


 
nel
X X ωj (sij )
vi  ρj  ≤ Ωmax . (4.4)
ωi
i=1 j∈Bi

Note que a restrição de volume se mantém linear, mesmo com a aplicação deste
filtro.

4.5 Evitando Densidades Intermediárias


Nesta seção, será apresentado o método Solid Isotropic Material with Penaliza-
tion - SIMP (Material Isotrópico Sólido com Penalização) [3], utilizado para evitar
densidades intermediárias. Dado o problema de Otimização Topológica discretizado:

minρ,u f T u
s. a K(ρ)u =f
Pn (4.5)
i=1 i ρi ≤ V
v
ρmin ≤ ρi ≤ 1, i = 1, ..., n,
em que n é o número de elementos do domı́nio, ρi e vi são, respectivamente, a
densidade e o volume do i-ésimo elemento, V é o limitante superior para o volume
da estrutura, f é o vetor de forças nodais associado às cargas externas, u ≡ u(ρ)
é o vetor de deslocamentos nodais produzidos pela aplicação das cargas externas e
K(ρ) é a matriz de rigidez global da estrutura dada por ρ. O parâmetro ρmin é
uma constante positiva suficientemente pequena, usada para evitar instabilidades
numéricas na resolução do problema.
No método SIMP ρ é substituı́do por ρp em parte do modelo a ser otimizado,
em que p é um parâmetro de penalização. Em [11] são mostradas condições que
garantem que ρ tenda a não assumir valores intermediários a medida que p se torne
suficientemente grande. O problema com a inserção deste parâmetro é escrito como

minρ,u f T u
s. a K(ρ p
Pn )u = f (4.6)
i=1 vi ρi ≤ V
ρmin ≤ ρi ≤ 1, i = 1, ..., n.

29
5 Aplicações de Otimização Topológica no Se-
tor Aeroespacial
Nesta seção será feita uma breve descrição da aplicação de Otimização To-
pológica no setor aeroespacial, baseada em [14].
A definição do domı́nio de projeto de um sistema de estrutura de uma aeronave é
fundamental para a Otimização Topológica nesta área, pois se trata de um sistema
muito complexo. Os detalhes estruturais geralmente são ignorados e projetados
nas fases seguintes por meio de outro tipo de otimização. Os domı́nios devem ser
atribuı́dos previamente, de acordo com os requisitos de dispositivos funcionais, su-
perfı́cies aerodinâmicas, restrições de fabricação, entre outros. Além disso, escolher
um algoritmo de otimização apropriado é muito importante para obter configurações
estruturais razoáveis na Otimização Topológica.
A Otimização Topológica gera apenas um layout aproximado ou conceitual,
sendo que peças, estruturas e componentes topologicamente otimizados precisam ser
adaptados para que sejam utilizados de forma prática em aplicações da Engenharia.
Existem esquemas de pós-processamento que podem suavizar automaticamente o
limite de design topológico dessas estruturas.
Após a realização do pós-processamento, os procedimentos de otimização da
forma e dimensionamento são feitos com o intuito de melhorar ainda mais o desem-
penho estrutural relativo à concentração de tensão, volume, respostas dinâmicas e
demais variáveis não totalmente consideradas na fase de design topológico anterior.
A Figura 14 mostra uma costela de asa otimizada e sua configuração final de pro-
jeto. Podemos notar diferenças a partir das duas configurações estruturais. Em
alguns outros casos, os projetos finais são simplesmente a integração comprometida
dos projetos topologicamente otimizados com projetos já existentes e validados.

Figura 14: Projeto otimizado topológico e o modelo reconstruı́do.


Fonte: Retirado de [9].

30
6 Resultados Computacionais
Tendo como base os métodos de PLS propostos em [12] e [5] para discretização
do domı́nio com malhas retangulares e triangulares irregulares, respectivamente.
Foram realizados testes computacionais para o método de PLS com Restauração
Inexata proposto nesse trabalho. Nesta seção estão expostos os resultados.

6.1 Método com Malhas Retangulares


Neste exemplo foi considerada uma viga em balanço 30 × 60 com 1800 elemen-
tos finitos retangulares, tendo seu volume final restrito a 40% do volume total de
material. Considerando a estrutura fixada em toda lateral esquerda e submetida a
uma força de 30000N aplicada no ponto médio da aresta lateral direita, variando-se
o valor do parâmetro p foram obtidos os seguintes resultados:

Figura 15: Domı́nio da estrutura a ser otimizada.

6.1.1 Sem Aplicação de Filtros

Figura 16: Estrutura ótima para p = 1.

31
Figura 17: Estrutura ótima para p = 2.

Figura 18: Estrutura ótima para p = 3.

Nas Figuras 16,17 e 18, os tons de cinza representam densidades intermediárias


de material nos respectivos elementos finitos. A grande quantidade destes tons na
Figura 16 é devida ao baixo valor de p utilizado, p = 1. Quando é utilizado p igual
a dois e três, nas Figuras 17 e 18 respectivamente, é notável a redução de densidades
intermediárias, sendo que quando p = 3 obtemos o melhor resultado. No entanto,
por conta da ocorrência de tabuleiros de xadrez, a construção dessa estrutura não
é factı́vel na prática.

6.1.2 Aplicação do Filtro da Média Ponderada das Densidades


Para a mesma estrutura os testes foram refeitos com a utilização de filtro com
um raio r = 5.

Figura 19: Estrutura ótima para p = 1.

32
Figura 20: Estrutura ótima para p = 2.

Figura 21: Estrutura ótima para p = 3.

Percebe-se que de fato o filtro corrige a instabilidade do tabuleiro de xadrez, não


havendo ocorrência do mesmo nestes casos.

6.2 Método com Malhas Triangulares Irregulares e Fil-


tro
Neste exemplo foi considerada uma viga em balanço 30 × 60 com 6152 elementos
finitos retangulares, tendo seu volume final restrito a 30% do volume total de ma-
terial. Considerando a estrutura fixada em toda lateral esquerda e com uma força
aplicada no ponto médio da aresta lateral direita e, utilizando filtro com raio r = 3
e variando o valor do parâmetro p foram obtidos os seguintes resultados:

33
Figura 22: Estrutura ótima para p = 1.

Figura 23: Estrutura ótima para p = 2.

Figura 24: Estrutura ótima para p = 3.

Nota-se que os resultados obtidos para malhas triangulares irregulares se apro-


xima dos resultados obtidos com malhas retangulares, conforme esperado.

34
6.2.1 Aplicação no Setor Aeroespacial
Neste exemplo foi considerada uma estrutura representando o corte transversal
de uma asa de avião com 3009 elementos finitos com uma malha triangular irregular,
tendo seu volume final restrito a 50% do volume total de material, com forças
aplicadas em todo o contorno da estrutura, variando-se o valor do parâmetro p e
utilizando filtro com raio r = 0.1 foram obtidos os seguintes resultados:

Figura 25: Domı́nio da estrutura a ser otimizada.

Figura 26: Estrutura ótima para p = 1.

Figura 27: Estrutura ótima para p = 2.

Figura 28: Estrutura ótima para p = 3.

35
7 Conclusão
Neste trabalho foram estudados os fundamentos da Otimização Linear, Oti-
mização Não Linear e Otimização Topológica bem como as formulações desses pro-
blemas. Foi estudado o método de PLS para Otimização Topológica proposto em
[12] e sua adaptação para discretização do domı́nio com elementos finitos triangu-
lares irregulares proposto em [5], após esse estudo foi proposto um novo método
de globalização para PLS com Restauração Inexata. Para lidar com o tabuleiro de
xadrez foi utilizado o filtro de média ponderada das densidades e o método SIMP
para lidar com o surgimento de densidades intermediárias.
Após o estudo dessas formulações, a fim de se obter a validação do Algoritmo
3.3, foram realizados testes de problemas de Otimização Topológica para os casos de
malhas com elementos retangulares e malhas com elementos triangulares irregulares.
Os resultados computacionais obtidos foram satisfatórios, dado que as estruturas
ótimas obtidas por meio do método de PLS com Restauração Inexata se aproximam
das estruturas obtidas pelo método estudado em [12].

36
Referências Bibliográficas
[1] Alvaro F. M. Azevedo. Método dos Elementos Finitos. Faculdade de Engenha-
ria da Universidade do Porto, Portugal, 2003.

[2] Martin Philip Bendsøe. Optimal shape design as a material distribution pro-
blem. Structural Optimization, 1(4):193–202, 5 1989.

[3] Martin Philip Bendsoe and Ole Sigmund. Material interpolation schemes in
topology optimization. Archive of Applied Mechanics, 69:635–654, nov 1999.

[4] D. A. Bruns, T. E.; Tortorelli. Topology optimization of non-linear elastic


structures and compliant mechanisms. Computer Methods in Applied Mecha-
nics and Engineering, 190(26-27):3443–3459, 3 1989.

[5] Marila Torres de Aguiar. Uso de malhas triangulares em métodos de pro-


gramação linear sequencial aplicados a otimização topológica. Programa de
pós-graduação em engenharia de produção, Área de pesquisa operacional, Uni-
versidade Federal de São Paulo, UNIFESP, São José dos Campos, 2018.

[6] Ana Friedlander and Francisco Gomes. Solution of a truss topology bilevel pro-
gramming problem by means of an inexact restoration method. Computational
& Applied Mathematics, 30:109–125, 2011.

[7] Roberto H. GOMES, F. A. M.; Bielschowsky. Dynamic control of infeasibility


in equality constrained optimization. SIAM Journal on Optimization, 19:1299–
1325, 2008.

[8] Igor Griva, Stephen Nash, and Ariela Sofer. Linear and Nonlinear Optimiza-
tion. SIAM, 2008.

[9] Krog Lars, Tucker Alastair, and Rollema Gerrit. Application of topology, sizing
and shape optimization methods to optimal design of aircraft components.
Proceedings of 3rd Altair UK Hyper-Works users conference, 2002.

[10] David G. Luenberger and Yinyu Ye. Linear and Nonlinear Programming. Sprin-
ger, 2008.

[11] José Mário Martinez. A note on the theoretical convergence properties of the
simp method. Structural and Multidisciplinary Optimization, 29(4):319–323,
2005.

[12] Thadeu A. Senne and Franscisco A.M. Gomes. An SLP algorithm and its
application to topology optimization. Computational & Applied Mathematics,
30:53–89, 2011.

[13] Thadeu Alves Senne. Otimização topológica de mecanismos flexı́veis. Mestrado


em matemática aplicada, Universidade Estadual de Campinas, UNICAMP,
Campinas, 2009.

[14] Ji-Hong Zhu, Wei-Hong Zhang, and Liang Xia. Topology optimization in air-
craft and aerospace structures design. Archives of Computational Methods in
Engineering, 23(4):595–622, abr 2015.

37

Você também pode gostar