otimizaÇÃo nÃo linear de grande porte tese … · no presente trabalho propõe-se uma nova...
TRANSCRIPT
MATRIZES QUASE-NEWTON ESPARSAS PARA PROBLEMAS DE OTIMIZAÇÃO NÃO LINEAR DE GRANDE PORTE
Evandro da Silveira Goulart
TESE SUBMETIDA AO CORPO DOCENTE DA COORDENAÇÃO DOS
PROGRAMAS DE PÓS-GRADUAÇÃO DE ENGENHARIA DA UNIVERSIDADE
FEDERAL DO RIO DE JANEIRO COMO PARTE DOS REQUISITOS
NECESSÁRIOS PARA A OBTENÇÃO DO GRAU DE DOUTOR EM CIÊNCIAS
EM ENGENHARIA MECÂNICA.
Aprovada por:
________________________________________________ Prof. José Herskovits Norman, D.Ing.
________________________________________________ Prof. Francisco José da Cunha Pires Soeiro, Ph.D.
________________________________________________ Prof. Susana Scheimberg de Makler, D.Sc.
________________________________________________ Prof. Anatoli Leontiev, Ph.D.
________________________________________________ Prof. Hélcio Rangel Barreto Orlande, Ph.D.
RIO DE JANEIRO, RJ – BRASIL
AGOSTO DE 2005
ii
GOULART, EVANDRO DA SILVEIRA
Matrizes Quase-Newton Esparsas para
Problemas de Otimização Não-Linear de
Grande Porte [Rio de Janeiro] 2005
VIII, 100 p. 29,7 cm (COPPE/UFRJ, D.Sc.,
Engenharia Mecânica, 2005)
Tese - Universidade Federal do Rio de
Janeiro, COPPE.
1. Otimização
2. Programação Não Linear
3. Matrizes Quase-Newton
I. COPPE/UFRJ II. Título (série)
iv
Agradecimentos
Ao professor Herskovits, pela orientação e pelo apoio, fundamentais para a
realização deste trabalho.
Aos colegas do laboratório Optimize (ainda estou devendo um churrasco).
À minha namorada Ana Paula sempre ao meu lado.
À minha família que sempre me apoiou. João Patrício, Vicente, Neida, Fátima,
Mariana, Antônio e Isabela.
À amiga Carmen Nilda por suas idéias mirabolantes (eu pretendo ir à praia este
ano).
Ao CNPq pelo suporte financeiro.
v
Resumo da Tese apresentada à COPPE/UFRJ como parte dos requisitos necessários
para a obtenção do grau de Doutor em Ciências (D. Sc.)
MATRIZES QUASE-NEWTON ESPARSAS PARA PROBLEMAS DE
OTIMIZAÇÃO NÃO-LINEAR DE GRANDE PORTE
Evandro da Silveira Goulart
Agosto /2005
Orientador: José Herskovits Norman
Programa: Engenharia Mecânica
Os métodos Quase-Newton em problemas não-lineares de otimização geram
uma aproximação da derivada segunda da função objetivo, nos casos sem restrições, e
da derivada segunda do lagrangeano, nos casos com restrições. As técnicas Quase-
Newton usualmente geram matrizes definidas positivas. Em problemas de otimização de
grande porte, torna-se inviável a utilização do método de atualização Quase-Newton na
sua forma clássica, pois este exige o armazenamento de uma matriz cheia e um grande
número de operações computacionais. As principais técnicas na literatura que ampliam
a atualização Quase-Newton para problemas grandes são o Método de Memória
Limitada e o Método de Atualização Esparsa. Em certos problemas de otimização, as
derivadas das restrições são esparsas, tornando interessante a utilização de uma
atualização Quase-Newton esparsa. Apresenta-se uma nova técnica de atualização
Quase-Newton esparsa através da minimização de uma função baseada na norma
quadrada de Frobenuis que obedece a condição secante e gera uma matriz definida
positiva. Esta atualização aumenta a esparsidade dos sistemas internos do FAIPA
ampliando a eficiência de solvers esparsos durante a resolução de problemas de grande
porte. Resultados numéricos mostram a boa performance dessa nova técnica associada
ao FAIPA.
vi
Abstract of Thesis presented to COPPE/UFRJ as a partial fulfillment of the
requirements for the degree of Doctor of Science (D. Sc.)
SPARSE QUASI-NEWTON MATRICES FOR LARGE-SCALE PROBLEMS
IN NON-LINEAR OPTIMIZATION
Evandro da Silveira Goulart
August /2005
Advisor: José Herskovits Norman
Department: Mechanical Engineering
Quasi-Newton methods for nonlinear optimization construct a matrix that is an
approximation of the second derivative of the function, in the unconstrained case, and of
the second derivative of the Lagrangian when constraints are considered. Usually, the
quasi-Newton matrix must be positive definite. Classic quasi-Newton updating rules get
full matrices, requiring a very large storage area and a great number of computations,
when the number of variables is large. Several techniques were developed to modify
and extend updating quasi-Newton rules in several ways, to make them suitable for
large problems, for instance, the Limited Memory and the Sparse Quasi-Newton
Updates. The Limited Memory method avoids the storage of the quasi-Newton matrix.
However, for several optimization problems, the constraints Jacobian is sparse, making
interesting the use of sparse quasi-Newton matrices. We present a new updating
technique to obtain positive definite sparse quasi-Newton matrices that minimize a
function based on a squared Frobenius norm. This update increases the sparsity of the
internal systems of FAIPA and allows the use of linear systems solvers for sparse
matrices improving the efficiency for very large-scale problems. We present numerical
results that show a good performance of this new technique when associated with the
internal sparse solver in FAIPA.
vii
ÍNDICE 1 – Introdução e Objetivos 1
1.1 – Considerações Gerais 1
1.1 – Organização dos Capítulos 3
2 – FAIPA: Algoritmo de Pontos Interiores por Arcos Viáveis 7
2.1 – Considerações Gerais 7
2.2 – Algoritmo do FAIPA 13
2.3 – Sistemas Simétricos no FAIPA 16
2.4 – Esparsidade dos Sistemas Internos do FAIPA 17
3 – Técnicas Quase-Newton para Problemas de Grandes Porte 20
3.1 – Introdução 20
3.2 – Introdução aos Métodos Quase-Newton 20
3.2.1 – Método Quase-Newton do tipo DFP 21
3.2.2 – Método Quase-Newton do tipo BFGS 23
3.3 – Métodos de Atualização da Matriz Quase-Newton em Problemas Grandes 24
3.3.1 – Método de Memória Limitada 24
3.3.1.1 – Produto vBk 28
3.3.1.2 – Produto vBu kt 29
3.3.2 – Método de Atualização Esparsa 30
3.3.2.1 – Atualização Esparsa de Toint (1977) 31
3.3.2.2 – Atualização Esparsa de Fletcher (1996) 36
4 – Técnica de Atualização Quase-Newton Diagonal 39
4.1 – Introdução 39
4.2 – Técnica de Atualização Diagonal 39
4.3 – Resolução do Problema 45
viii
5 – Métodos Diretos para Solução de Sistemas Lineares Esparsos 48
5.1 – Introdução 48
5.2 – Método Direto 49
5.3 – Método Direto para Sistemas Esparsos 50
5.4 – Esquemas de Armazenamento de Matrizes Esparsas 54
5.5 – Rotina MA27 (HSL) 57
5.6 – Rotina MA28 (HSL) 59
5.7 – Rotina SSTSTRF/S (CRAY SV1) 60
5.8 – Rotina SGETRF/S (LAPACK) 61
6 – Resultados Numéricos 62
6.1 – Introdução 62
6.2 – CUTEr 63
6.3 – Resultados Numéricos – Interface FAIPA_CUTEr 66
6.4 – Apresentação do Problema HS43_NF 69
6.5 – Comparação entre diferentes solvers internos ao FAIPA 70
6.6 – FAIPA Quase-Newton Esparso 72
6.7 – Problema HS43_NF para auxiliar na comparação entre as técnicas de Atualização
Diagonal, BFGS e Memória Limitada
82
6.8 – Problemas CUTEr para auxiliar na comparação entre as técnicas de Atualização
Diagonal e Memória Limitada
84
7 – Conclusões e Propostas 93
7.1 – Considerações Gerais 93
8 – Referências Bibliográficas 96
1
CAPÍTULO 1
Introdução e Objetivos
1.1– Considerações Gerais
A Otimização trata do problema da busca da melhor alocação de um conjunto
limitado de recursos, escolhendo a alternativa que maximize o lucro ou minimize o
custo, dentre todas aquelas que satisfazem um conjunto específico de restrições.
A otimização pode ser aplicada em numerosas áreas de conhecimento, incluindo:
gestão de cadeias de suprimento (planejamento, produção, distribuição); transporte
(roteiros, gestão de frotas e tripulação); indústria petroquímica (aquisição de materiais,
projeto e operação de refinarias, distribuição); aplicações militares (logística, alocação
de pessoal, operações de guerra); finanças (operação de carteiras, gestão de recursos
financeiros); otimização do projeto de estruturas, veículos terrestres, marítimos e
aeroespaciais, equipamentos para diversas indústrias de processamento em geral [10].
A busca de melhores soluções é um dos grandes objetivos da Engenharia. Desta
forma, a Engenharia tem, cada vez mais, investido na área de otimização para que seja
possível aplicar esta ferramenta em problemas de grande porte. Logo há um grande
interesse em se desenvolver algoritmos de otimização eficientes e robustos [32].
O presente trabalho terá como base o FAIPA (Feasible Arc Interior Point
Algorithm), desenvolvido por HERSKOVITS [24][25][26][27]. Este algoritmo é um
método de Pontos Interiores e Arcos Viáveis que resolve o problema geral de
otimização não-linear, fazendo iterações nas variáveis de projeto e nos multiplicadores
de Lagrange para resolver as condições de otimalidade de Karush-Kuhn-Tucker.
2
Em cada iteração o FAIPA resolve três sistemas lineares internos com a mesma
matriz de coeficientes. Nestes sistemas está incluída a derivada segunda da função
Lagrangiana, ),,( µλxH , ou uma aproximação Quase-Newton ( B ) da mesma.
O FAIPA tem se mostrado confiável e eficiente na solução de problemas de
médio e pequeno porte. Estas características o qualificam para servir como base em
nossos estudos, cujo objetivo é resolver problemas do tamanho requerido pelas
aplicações modernas. O FAIPA vem sendo utilizado em indústrias de primeira linha
assim como em universidades e centros de pesquisa [27].
Em linhas gerais, este trabalho tem como objetivo principal o desenvolvimento
teórico e computacional de técnicas para programação não-linear, baseadas no FAIPA,
para a solução de problemas de grande porte, aproveitando a esparsidade dos sistemas
internos ao FAIPA.
Uma questão que será amplamente abordada diz respeito à atualização da matriz
B no Método Quase-Newton, o qual substitui o cálculo da Hessiana do lagrangeano em
problemas com restrições. Os algoritmos modernos exigem que a matriz B seja definida
positiva, para garantir convergência.
Em problemas com muitas variáveis torna-se inviável a utilização desse método
na sua forma clássica (DFP ou BFGS, por exemplo), pois este exige o armazenamento e
manipulação de uma matriz cheia, de dimensão igual ao número de variáveis. Existem
várias técnicas na literatura que ampliam a atualização Quase-Newton para problemas
grandes. Serão abordadas algumas das principais técnicas: o Método de Memória
Limitada e o Método de Atualização Esparsa.
O Método de Memória Limitada foi desenvolvido inicialmente para problemas
sem restrições e posteriormente estendido para problemas com restrições de caixa. O
FAIPA apresenta uma adaptação para empregar essa técnica em problemas com
quaisquer tipos de restrições não-lineares [16].
Técnicas de atualização esparsas Quase-Newton presentes nos artigos de TOINT
[37][38][39] e FLETCHER [13][14], foram utilizadas como referência na concepção de
uma nova técnica esparsa.
No fim dos anos 70, Toint propôs uma técnica de atualização esparsa para
problemas de grande porte. A técnica Quase-Newton de Toint além de não produzir
uma matriz definida positiva, exige o armazenamento dessa matriz a cada iteração [35].
3
Nos anos 90, Fletcher publicou uma técnica esparsa que não exige o
armazenamento da matriz a cada iteração, pois as informações necessárias para a
atualização são guardadas do mesmo modo que no Método de Memória Limitada. No
entanto, essa técnica além de não gerar matrizes definidas positivas [14], não apresenta
bons resultados numéricos na resolução de problemas de grande porte [35].
No presente trabalho propõe-se uma nova técnica que aproveita o conceito de
memória limitada para armazenar informações do problema durante as iterações e obter
uma matriz B diagonal definida positiva com um reduzido custo computacional.
Essa nova técnica de atualização aumenta a esparsidade dos sistemas lineares
internos do FAIPA, permitindo um melhor aproveitamento de solvers que consideram a
esparsidade de matrizes visando a redução do custo computacional.
Comparou-se o novo método de atualização esparsa e o método de memória
limitada juntamente com o FAIPA.
A solução de problemas de grande porte implica na solução de sistemas lineares
internos ao FAIPA com elevado número de equações. Para resolver tais problemas
integraram-se ao FAIPA técnicas como a utilizada na rotina MA27, desenvolvida pelo
CSE Group [21], utilizada para resolver sistemas de equações lineares simétricos e
esparsos. Essa rotina utiliza o Método Direto baseado numa variante da eliminação
gaussiana para sistemas esparsos [7]. Já foram resolvidos sistemas, junto ao FAIPA,
com 20.000 equações.
Um melhor aproveitamento desses recursos pode ser obtido mediante a
utilização de técnicas de computação de alto desempenho. Uma das alternativas é a
implementação da rotina SSTSTRF/S escrita na linguagem Fortran que resolve sistemas
lineares com estrutura simétrica esparsa através do método direto em ambiente de
computação paralela e vetorial. Ela foi desenvolvida para o ambiente do sistema
operacional UNICOS [4] do computador CRAY SV1, disponível através do Núcleo de
Atendimento em Computação de Alto Desempenho (NACAD-COPPE/UFRJ). Essa
rotina auxiliou na obtenção de resultados importantes com o FAIPA em ambiente de
computação de alto desempenho.
Embora nosso objetivo esteja focado na solução de sistemas esparsos, a Técnica
de Memória Limitada junto ao FAIPA requer o uso de solvers para sistemas densos.
Nesse sentido, para um melhor desempenho da Técnica de Memória Limitada com o
4
FAIPA, foi necessária a implementação do solver para sistemas densos não simétricos
SGETRF/S pertencente ao conjunto de rotinas do LAPACK.
Para testar as novas idéias adicionadas no algoritmo FAIPA, utilizou-se uma
ferramenta computacional chamada CUTEr (Constrained and Unconstrained Testing
Environment revisited) que apresenta uma coleção de problemas testes amplamente
utilizados na literatura [17]. O CUTEr é uma ferramenta que auxilia no projeto e
desenvolvimento de softwares em otimização.
Para utilizar essa ferramenta são necessárias duas etapas: a decodificação e
criação da interface. A plataforma de decodificação CUTEr é disponível para sistemas
operacionais UNIX e LINUX. No presente trabalho utilizou-se o sistema operacional
LINUX durante a etapa de decodificação. A interface é um conjunto de rotinas escritas
em FORTRAN 77 e FORTRAN 90 que fornecem os dados referentes aos problemas
testes e devem ser adaptadas ao algoritmo de otimização (no nosso caso o FAIPA).
1.2 – Organização dos capítulos
O trabalho que segue está organizado em capítulos da seguinte forma:
Capítulo 2 – FAIPA: Algoritmo de Pontos Interiores e de Arcos Viáveis:
Está descrito o algoritmo FAIPA, base deste trabalho, e as alterações no FAIPA
Esparso. Essa alterações fazem parte da implementação de solvers que aproveitam a
esparsidade dos sistemas lineares no intuito de resolver problemas de grande porte.
Capítulo 3 – Técnicas Quase-Newton para Problemas de Grande Porte:
Inicialmente descreve-se o principal método Quase-Newton: o BFGS. Em seguida
são apresentadas algumas técnicas já existentes para solucionar o problema de
atualização da matriz Quase-Newton em problemas de grande porte, tais como o
Método de Memória Limitada e Método de Atualização Esparsa.
Nesse capítulo estão descritas as técnicas esparsas dos artigos de Toint e Fletcher
que foram utilizados como referência na concepção de uma nova técnica esparsa.
5
No entanto, o objetivo principal deste capítulo é mostrar como está inserida, nesse
contexto, uma nova técnica numérica para este tipo de atualização que aproveita a
esparsidade na busca de um melhor rendimento computacional em problemas
considerados de grande porte, além de gerar matrizes atualizadas simétricas positivas
definidas.
Capítulo 4 – Técnica de Atualização Quase-Newton Diagonal:
Detalhamento da nova técnica de atualização Quase-Newton diagonal. Com essa
atualização obtêm-se matrizes positivas definidas que apresentam um padrão esparso
que permite melhorar o desempenho do FAIPA na resolução de problemas com um
grande número de variáveis e de restrições.
Capítulo 5 – Técnicas para Solução de Sistemas de Equações Através de
Métodos Diretos:
São apresentados os fundamentos do método de resolução de sistemas esparsos de
equações lineares utilizado na rotina MA27, MA28 e na rotina SSTSTRF/S, sendo esta
última desenvolvida para o ambiente computacional do computador CRAY SV1.
No entanto, para um melhor desempenho da Técnica de Memória Limitada junto ao
FAIPA, foi necessário a implementação de um solver para sistemas densos. Optou-se
pelo solver SGETRF/S pertencente ao conjunto de rotinas do LAPACK.
Capítulo 6 – Testes Numéricos:
Nesse capítulo, inicialmente descreveu-se a ferramenta CUTEr utilizada para
auxiliar na realização de testes numéricos com o FAIPA e apresentou-se o problema
HS43_NF que também auxiliou na tarefa de realizar testes numéricos.
Em seguida, usando o problema HS43_NF, realizaram-se testes para verificação
do desempenho das rotinas MA27 e MA28 quando implementadas no FAIPA.
Logo depois estão os resultados da Nova Técnica de Atualização Quase-Newton
Esparsa. Comparou-se esta técnica com as atualizações BFGS e de Memória Limitada.
6
Mostraremos os gráficos com as iterações do FAIPA quando este usou cada uma das
técnicas.
Por fim, para a obtenção de resultados com problemas maiores através da
interface CUTEr ou com o problema HS43_NF, utilizou-se um computador AMD Atlon
1800 MHz com 1.5Gb de Memória RAM e, principalmente, o computador CRAY SV1
com 12 processadores e 16Gb de memória RAM para comparar o desempenho da
Técnica Esparsa Diagonal com a de Memória Limitada junto ao FAIPA.
Capítulo 7 – Conclusões e Propostas
Este capítulo apresenta as conclusões sobre os resultados obtidos no Capítulo 6
quando foram comparadas várias técnicas de atualização da matriz Quase-Newton (B),
quando associadas ao FAIPA.
Capítulo 8 – Referências Bibliográficas
7
CAPÍTULO 2
FAIPA: Algoritmo de Pontos Interiores por Arcos Viáveis.
2.1 – Considerações Gerais
O algoritmo de pontos interiores por arcos viáveis (FAIPA) é uma técnica nova
para otimização com restrições de desigualdade e restrições de igualdade. FAIPA requer
um ponto inicial no interior das restrições de desigualdades e gera uma seqüência de
pontos interiores. Quando o problema tem somente restrições de desigualdade a função
objetivo é reduzida em cada iteração. Uma função auxiliar é empregada quando existem
também restrições de igualdade.
O fato de fornecer pontos interiores, até mesmo quando as restrições são não-
lineares, torna o FAIPA uma ferramenta eficiente para projetos de otimização em
engenharia.
Considere o problema de programação não linear com restrições de igualdade e
desigualdade:
⎪⎪⎩
⎪⎪⎨
⎧
===≤
ℜ∈
pi xhemi xgsujeito a
xxfminimize
i
i
n
x
,...,1 ;0)( ,...,1 ;0)(
),(
(2.1)
8
onde: nx ℜ∈ são as variáveis do projeto, ℜ∈)(xf é a função objetivo, mxg ℜ∈)( são
as restrições de desigualdade e pxh ℜ∈)( são as restrições de igualdade.
Denotaremos nxmxg ℜ∈∇ )( e nxpxh ℜ∈∇ )( as matrizes dos gradientes de g e h,
respectivamente, e chamaremos de mℜ∈λ e pℜ∈µ os vetores com os multiplicadores
de Lagrange.
Em (2.2) temos o Lagrangeano do problema (2.1) e em (2.3) temos a Hessiana
do Lagrangeano.
)()()(),,( xhxgxfxl tt µλµλ ++= (2.2)
∑∑==
∇+∇+∇=p
iii
m
iii xhxgxfxL
1
2
1
22 )()()(),,( µλµλ (2.3)
Define-se mxmxG ℜ∈)( uma matriz diagonal tal que )()( xgxG iii = .
O algoritmo FAIPA (Feasible Arc Interior Point Algorithm), proposto por
HERSKOVITS [27], é um método de pontos interiores por arcos viáveis que resolve o
problema geral de otimização não-linear (2.1) fazendo iterações nas variáveis de projeto
x (variáveis primais) e nos multiplicadores de Lagrange (variáveis duais) para resolver
as condições de otimalidade de Karush-Kuhn-Tucker (KKT).
As condições de otimalidade de Karush-Kuhn-Tucker correspondentes ao
problema (2.1) podem ser escritas da seguinte forma:
0)(0
0)(0)(
0)()()(
≤≥
==
=∇+∇+∇
xg
xhxG
xhxgxf
λ
λµλ
(2.4) (2.5) (2.6) (2.7) (2.8)
Um ponto *x é dito estacionário se existe *λ e *µ tal que as igualdades (2.4),
(2.5) e (2.6) são verdadeiras e será um Ponto de KKT se todas as equações (2.4), (2.5),
(2.6), (2.7) e (2.8) são confirmadas.
As condições de KKT constituem um sistema não-linear de equações e
inequações com as incógnitas ),,( µλx . Esse sistema é resolvido considerando as
9
equações (2.4), (2.5) e (2.6) de tal forma que as desigualdades (2.7) e (2.8) sejam
respeitadas.
FAIPA faz iterações de Newton para resolver as equações não-lineares (2.4),
(2.5) e (2.6) nas variáveis primais e duais.
Com o objetivo de garantir convergência para pontos KKT, um sistema é
resolvido de tal forma que as desigualdades (2.7) e (2.8) sejam satisfeitas em cada
iteração.
Seja ),,( µλxLS = e mxmR∈Λ uma matriz diagonal com os termos iii λΛ = .
Com uma iteração de Newton para a resolução de (2.4), (2.5) e (2.6) obtém-se o
seguinte sistema linear:
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡ ∇+∇+∇=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−−−
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
∇∇Λ
∇∇
)()(
)()()( -
00)(0)()(
)()(
0
0
0
xhxG
xhxgxfxx
xhxGxg
xhxgS
t
t λµλ
µµλλ (2.9)
onde ),,( µλx se referem a iteração atual e ),,( 000 µλx se referem ao novo ponto que
será obtido. Podemos considerar BS ≡ , isto é, a uma aproximação Quase-Newton de
),,( µλxL ou considerar, também, IS ≡ , onde I é a identidade.
Considerando que um dos objetivos desse trabalho é propor uma nova técnica de
atualização Quase-Newton, a partir de agora em todos os sistemas do FAIPA que serão
apresentados teremos BS ≡ .
Seja nd ℜ∈0 tal que xxd −= 00 . Através de (2.9) temos:
⎪⎩
⎪⎨
⎧
−=∇
=+∇Λ
−∇=∇+∇+
)()(
0)()(
)()()(
0
00
000
xhdxh
xGdxg
xfxhxgBd
t
t λ
µλ
(2.10)
que independe do valor de 0µ . A resolução do sistema (2.10) fornece a direção 0d além
de uma nova estimativa dos multiplicadores de Lagrange.
10
Seja a função potencial
∑=
+=p
iii xhcxfcx
1)()(),(φ (2.11)
onde na iteração k, kic é tal que
0)()()(
01 <+ kki
i cxhxh µ , pi ,,2 , 1 K= (2.12)
Está provado [24][25] que kd0 é uma direção de descida de ),( kcxφ .
No entanto 0d não é sempre uma direção viável [27].
Para obter uma direção viável, um vetor negativo é adicionado ao lado direito de
(2.10).
⎪⎩
⎪⎨
⎧
=∇
−=+∇Λ
−∇=∇+∇+
0)()()(
)()()(
dxhxGdxg
xfxhxgBd
t
t ρλλ
µλ
(2.13)
onde ℜ∈ρ é positivo.
Agora, d é uma direção viável desde que 0)( <−=∇ ρdxgti para as restrições
ativas.
Para assegurar que d é também uma direção de descida, é preciso estabelecer
um critério para a obtenção de ρ de tal forma que:
( ) ( )cxdcxd tt ,, 0 φαφ ∇≤∇ (2.14)
com )1,0(∈α , então ( ) 0, <∇ cxd t φ .
Para obter ρ , resolve-se o seguinte sistema auxiliar:
11
⎪⎩
⎪⎨
⎧
=∇
−=+∇Λ
=∇+∇+
0)()()(
0)()(
1
11
111
dxh
xGdxg
xhxgBd
t
t λλ
µλ
(2.15)
Então, podemos considerar que:
10 ddd ρ+= (2.16)
onde temos que a desigualdade (2.14) é obedecida para qualquer 0>ρ se
( ) 0,1 <∇ cxd t φ .
Caso contrário, faz-se
),(),()1(
1
0
cxdcxd
t
t
φφαρ
∇∇−
< , (2.17)
que obedece (2.14).
O algoritmo de pontos interiores de direções viáveis (FDIPA) descrito em [24],
utiliza essa direção d como direção de descida. O procedimento de busca linear procura
um passo t que assegure que o novo ponto )( tdx + satisfaça as restrições de
desigualdade e com um razoável decréscimo na função potencial auxiliar ),,( 00 µλφ x .
No entanto, quando há restrições extremamente não lineares, o comprimento do
passo pode tornar-se muito pequeno acarretando uma convergência mais lenta. Esse fato
é similar ao Efeito Maratos [27].
Basicamente, a idéia para evitar esse problema consiste em fazer uma busca
linear através de um arco de segunda ordem, tangente à direção viável de descida ( d ) e
com curvatura próxima aquela da restrição ativa.
Sendo:
dxgxgdxg tiii
Ii )()()(~ ∇−−+=ω mi ,...,1= (2.18)
12
dxhxhdxh tiii
Ei )()()(~ ∇−−+=ω pj ,...,1= (2.19)
O arco em x é definido da seguinte forma:
dttdxxk~2
1 ++=+ (2.20)
onde d~ é obtido resolvido o sistema (2.21).
⎪⎪⎩
⎪⎪⎨
⎧
−=∇
Λ−=+∇Λ
=∇+∇+
Et
It
dxh
xGdxg
xhxgdB
ω
ωλ
µλ
~~)(
~~)(~)(
0~)(~)(~
(2.21)
O arco empregado no FAIPA é representado na Figura 2.1 onde a restrição
0)( ≤xgi é ativa na iteração kx . Uma vez que kd0 e kd são direções de descida da
função potencial )(xφ em kx , o ângulo com )( kxφ∇− é agudo.
A Figura 2.1 representa o arco viável no caso em que há uma restrição ativa, isto
é gi(xk)=0. HERSKOVITS et al. [27] prova que é possível caminhar a partir de xk ao
longo de um arco até um novo ponto viável com um valor mais baixo da função
objetivo.
Figura 2.1- Arco Viável.
d1
d0
−∇φ (x)
∇g (x)
d
d~Feasible arc
d1ρ
xk
gi(x) = 0
13
Em problemas que utilizam uma direção de busca e apresentam restrições
altamente não lineares, o grau de convergência dos algoritmos pode ser prejudicado, já
que o passo é muito pequeno. Todavia, o algoritmo FAIPA baseado no método de arcos
viáveis não apresenta este problema de convergência, pois ao definir-se o arco leva-se
em consideração a curvatura da restrição, aumentando assim a convergência do
problema para a solução ótima.
2.2 - Algoritmo do FAIPA
O algoritmo de pontos interiores e arcos viáveis para resolver o problema (2.1) será
descrito abaixo de forma resumida, a fim de se conhecer o seu funcionamento.
Parâmetros:
)1,0(∈α e 0>ϕ
Dados Iniciais: 0ax Ω∈ , onde 0
aΩ representa uma região viável.
0>λ , ,mR∈λ
0>µ , ,pR∈µ nxnRB ∈ simétrica definida positiva
0=ic , pRc ∈
Passo 1: Determinação da direção de descida.
(i) Resolva o sistema linear em ( 0d , 0λ , 0µ ), que chamaremos de Sistema (I):
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡∇=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
∇∇Λ
∇∇
)(0
)( -
00)(0)()(
)()(
0
0
0
xh
xfd
xhxGxg
xhxgB
t
t
µλ (2.22)
14
onde ,0nRd ∈ , 0
mR∈λ .0pR∈µ
Se 00 =d , Pare.
(ii) Resolva o sistema linear em ( 1d , 1λ , 1µ ), que chamaremos de Sistema (II)::
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
∇∇Λ
∇∇
0
0 -
00)(0)()(
)()(
1
1
1
λµλd
xhxGxg
xhxgB
t
t (2.23)
onde ,1nRd ∈ , 1
mR∈λ pR∈1µ , iii λ=Λ , sendo mi ,...,1= .
(iii) Seja a seguinte função potencial
∑=
+=p
iiic xhcxfx
1)()()(φ (2.24)
(iv) Se )(2.1 0 ici µ< , então )(2 0 ici µ−= , pi ,,2,1 K=
(iv) Se ( ) 01 >∇ xd ct φ então:
⎥⎦
⎤⎢⎣
⎡∇
∇−=
)()()1(;min
1
02
20 xdxdd
ct
ct
φφαϕρ (2.25)
Senão:
2
20dϕρ = (2.26)
(v) Determinação da direção de descida d.
10 ddd ρ+= (2.27)
Passo 2: Determinação da direção restaurada d~ .
15
(i) Seja:
dxgxgdxg tiii
Ii )()()(~ ∇−−+=ω mi ,...,1= (2.28)
dxhxhdxh tiii
Ei )()()(~ ∇−−+=ω pj ,...,1= (2.29)
(ii) Resolva o sistema linear em ( µλ ~,~,~d ), que chamaremos de Sistema (III):
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡Λ=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
∇∇Λ
∇∇
E
I
t
t
d
xhxGxg
xhxgB
ωω
µλ
~~0
- ~
~~
00)(0)()(
)()( (2.30)
Onde iii λ=Λ , sendo mi ,...,1= .
Passo 3: Busca no arco.
(i) Encontre um passo de comprimento t que satisfaça um de critério de busca
linear baseado na função potencial auxiliar )~( 2dttdxc ++φ
Passo 4: Atualização.
(i) Obter o novo ponto 1+kx :
dttdxxk~2
1 ++=+ (2.31)
(ii) Se o problema em 1+kx verifica o(s) critério(s) de parada do algoritmo:
Pare
Senão
Defina uma nova atualização de λ e B , considerando 0>λ e B simétrica
positiva definida. Então vá para o Passo 1.
16
Algumas alternativas para a atualização de λ e B são discutidos em [22]. Elas
conduzem a algoritmos com diferentes performances em termos da velocidade de
convergência local.
O tamanho dos sistemas lineares (2.22), (2.23) e (2.30) é igual à soma do
número das variáveis mais o número de restrições de desigualdade e de igualdade. Em
[27] prova-se que estes sistemas têm uma solução única.
É importante ressaltar que já foi provado que o algoritmo aqui apresentado tem
convergência global para toda matriz B, simétrica definida positiva, e para
qualquer 0 >λ [27].
2.3 – Sistemas Simétricos no FAIPA
Analisando os sistemas lineares (I), (II) e (III) descritos em (2.22), (2.23) e
(2.30), respectivamente, constata-se que todos são assimétricos. Tornar esses sistemas
simétricos é uma alternativa para obtermos uma redução no custo computacional,
considerando-se que o problema de otimização seja de grande porte e que o algoritmo
faça uso da esparsidade das matrizes.
Considerando a equação (2.32) parte do Sistema (I):
0)()( 00 =+∇Λ λxGdxgt (2.32)
Multiplicando (2.32) por 1−Λ
0)()( 01
0 =Λ+∇ − λxGdxgt (2.33)
Da multiplicação entre as matrizes diagonais 1−Λ e )(xG na verdade resultará
uma matriz )(xΨ também diagonal onde
iiii xgx λ/)()( =Ψ (2.34)
17
Então (2.34) pode ser escrita da seguinte maneira:
0)()( 00 =Ψ+∇ λxdxgt (2.35)
Substituindo (2.35) em (2.22) temos um novo Sistema (I), porém simétrico.
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡∇=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
∇Ψ∇
∇∇
)(0
)( -
00)(0)()(
)()(
0
0
0
xh
xfd
xhxxg
xhxgB
t
t
µλ (2.36)
O mesmo procedimento será feito nos demais sistemas (II) e (III).
O Sistema (II), agora simétrico é descrito em (2.37):
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
∇Ψ∇
∇∇
0
0 -
00)(0)()(
)()(
1
1
1
ed
xhxxg
xhxgB
t
t
µλ (2.37)
onde me ℜ∈ é um vetor com componentes unitárias, isto é, 1=ie , mi ,...,1= .
O Sistema (III), agora simétrico é descrito em (2.38):
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
∇Ψ∇
∇∇
E
I
t
t
d
xhxxg
xhxgB
ωω
µλ
~~0
- ~
~~
00)(0)()(
)()( (2.38)
Além do aproveitamento da simetria e da esparsidade, será proposta uma nova
alternativa de atualização da matriz B .
18
2.4 – Esparsidade dos Sistemas Internos do FAIPA
Uma matriz é considerada esparsa se muitos dos seus elementos são nulos. Uma
outra maneira de considerar se uma matriz é esparsa, é quando existe a possibilidade de
obter vantagens computacionais ao explorar apenas os elementos diferentes de zero
dessa matriz.
O interesse de aproveitar a esparsidade de matrizes tem se intensificado, cada
vez mais, pois esse tipo de estrutura matricial proporciona uma enorme redução do
custo computacional e também devido ao fato de muitos dos problemas em engenharia
serem esparsos [7].
Seja a matriz não simétrica (2.39) que compõem os sistemas (2.22), (2.23) e
(2.30).
00)(0)()(
)()(
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
∇∇Λ
∇∇
xhxGxg
xhxgB
t
t (2.39)
Para analisar a influência da relação entre o número de variáveis n e de
restrições )( pm + no número de elementos nulos da matriz (2.39), montou-se o Gráfico
2.1. No eixo das abscissas temos )/( pmn + e a porcentagem correspondente de
elementos nulos, no eixo das ordenadas.
Considerou-se dois casos no Gráfico (2.1). O primeiro que chamaremos de Caso
1, considera a matriz Quase-Newton nxnB ℜ∈ , a matriz dos gradientes das restrições de
desigualdade nxmxg ℜ∈∇ )( e a matriz com os gradientes de igualdade nxpxh ℜ∈∇ )(
todas elas densas.
No Caso 2 a matriz nxnB ℜ∈ é diagonal e mantém-se nxmxg ℜ∈∇ )( e nxpxh ℜ∈∇ )( densas.
Analisando as informações do Gráfico (2.1) podemos afirmar que no Caso 1 o
número de elementos nulos diminui quando há mais variáveis que restrições.
19
No Caso 2 a matriz (2.39) terá 50% de elementos nulos quando há igualdade
entre o número de variáveis e restrições. Para qualquer outra relação entre variáveis e
restrições haverá um aumento no número de elementos nulos na matriz (2.39).
0
10
20
30
40
50
60
70
80
0,20 0,25 0,33 0,50 1 2 3 4 5
Relação Variáveis/Restrições
Ele
men
tos N
ulos
(%)
Caso 1Caso 2
Gráfico 2.1- Influência da relação entre número de variáveis e de restrições
no número de elementos nulos da matriz (2.39).
No Capítulo 4 será apresentada uma técnica de atualização Quase-Newton que
gera matrizes diagonais. Através do Gráfico 2.1 percebemos que essa atualização irá
aumentar significativamente a esparsidade dos sistemas internos do FAIPA utilizados
em cada iteração e permitindo um melhor aproveitamento ao utilizar solvers que
exploram a estrutura da matriz na resolução de sistemas de equações, no intuito de
reduzir o custo computacional.
Serão implementadas no FAIPA alterações na maneira de armazenar as matrizes
dos sistemas esparsos. As estruturas de dados para armazenamento desse tipo de
matrizes consideram apenas os elementos não nulos. Esse assunto será abordado no
Capítulo 5.
20
CAPÍTULO 3
Técnicas Quase-Newton para Problemas
de Grande Porte
3.1 – Introdução
Antes de abordar o assunto principal desse capítulo, a atualização da matriz
Quase-Newton em problemas de grande porte, iniciaremos com uma breve abordagem
sobre os métodos Quase-Newton, do tipo DFP e do tipo BFGS, que obedecem a
condição secante e geram matrizes definida positiva.
Em seguida serão apresentados os métodos de atualização da matriz Quase-
Newton utilizados na resolução de problemas de otimização que apresentam um grande
número de variáveis de projeto. Por fim, será abordado o tema que trata de uma nova
técnica de atualização esparsa da matriz Quase-Newton.
3.2 – Introdução aos Métodos Quase-Newton
Seja o seguinte problema:
)( xfminimize (3.1)
onde a função 2Cf ∈ , nx ℜ∈ e nxnF ℜ∈ a Hessiana de f ( fF 2∇= ).
21
O método de Newton modificado consiste em encontrar um novo ponto a cada
iteração da seguinte forma:
)( - k1 kkkk xfStxx ∇=+ (3.2)
onde nxnS ℜ∈ é uma matriz simétrica, nf ℜ∈∇ o gradiente da função no ponto e kt é
escolhido de tal forma que minimize )( 1+kxf . Se 1−= FS for a inversa da Hessiana
temos o método de Newton e se IS = , onde I é a matriz identidade, nos temos o
steepest descent.
Através dos métodos Quase-Newton é possível obter uma aproximação nxnH ℜ∈ da inversa da matriz Hessiana, ao invés da exata exigida nos Métodos de
Newton. Essa aproximação é feita obedecendo a Condição Secante descrita em (3.3).
kkk syH =+1 (3.3)
Onde, de acordo com o problema sem restrições (3.1), temos os seguintes
vetores ks e ky :
1+−= kkk xxs (3.4)
)()( 1+∇−∇= kkk xfxfy (3.5)
3.2.1 – Método Quase-Newton do tipo DFP
Nos anos 50, a necessidade de um algoritmo que acelerasse as iterações durante
a resolução de problemas de minimização do tipo (3.1), isto é, que resolvesse
rapidamente com custo computacional reduzido fez com que Davidon [35]
desenvolvesse o primeiro algoritmo Quase-Newton que deu origem ao DFP.
O DFP (Davidon, Fletcher e Powell), um dos primeiros métodos a construir uma
aproximação da inversa da hessiana, foi originalmente proposto por Davidon em 1959, e
posteriormente desenvolvido por Fletcher e Powell em 1963 [35].
22
Seja nxnH ℜ∈ a aproximação da inversa da Hessiana. Então, em cada iteração
temos a seguinte atualização:
kktk
ktkkk
ktk
tkk
kk yHyHyyH
ysssHH −+=+1 (3.6)
Se consideramos a matriz B a aproximação da Hessiana de tal forma que 1−= HB ,
temos em (3.7) a seguinte Condição Secante, também conhecida como Condição Quase-
Newton.
kkk ysB =+1 (3.7)
Onde (3.3) e (3.7) são duais.
Dessa forma, podemos considerar a seguinte atualização da matriz B :
kTk
Tkk
Tkkk
kTkkk
kk syyy
sBsBssBBB +−=+ 1 (3.8)
A equação (3.8) é denominada atualização BFGS da matriz .B
Outra regra de atualização de H é a inversão de 1+kB apresentada na Equação
(3.9). Para isto utiliza-se a fórmula de Sherman-Morrison para se determinar :1+kH
ktk
tkkkk
tkk
ktk
tkk
ktk
kktk
kk sysyHHys
ysss
syyHyHH +
−⎟⎟⎠
⎞⎜⎜⎝
⎛++=+ 11 (3.9)
A equação (3.9) é denominada regra de atualização BFGS da matriz H .
23
3.2.2 – Método Quase-Newton do tipo BFGS
O mais popular dos métodos Quase-Newton é o BFGS, denominado dessa
maneira para referir-se aos idealizadores da técnica: Broyden, Fletcher, Goldfarb e
Shanno.
A atualização BFGS da matriz 1+kB é apresentada em (3.8), onde ks e ky são
descritos em (3.4) e (3.5), respectivamente.
Em problemas sem restrições, a atualização BFGS produzirá uma matriz 1+kB
simétrica definida positiva sempre que a matriz kB também seja definida positiva e que
se verifique, além da Condição Quase-Newton (3.7), a seguinte condição de curvatura:
0>kTk ys (3.20)
Em problemas com restrições, o vetor ky é obtido da seguinte maneira:
),,(),,( 111 kkkxkkkxk xlxly µλµλ ∇−∇= +++ (3.21)
onde l é o lagrangeano da função objetivo.
No entanto, em problemas com restrições, a Hessiana exata do problema não é
necessariamente definida positiva na solução. Portanto, nesses casos, nem sempre é
possível garantir que a matriz B obtida através da atualização BFGS seja definida
positiva. Para superar essa dificuldade, Powell propôs uma modificação da atualização
BFGS [24].
Ele sugeriu que se
kkTkk
Tk sBsys 2.0< (3.22)
então calcula-se φ para obter um novo ky , mantendo-se o mesmo ks .
kTkkk
Tk
kkTk
yssBssBs
−=
8.0φ (3.23)
24
O novo ky é obtido da seguinte maneira:
kkkk sByy )1( φφ −+= (3.24)
E, por fim, com novo vetor ky , além de ks e kB , através da mesma equação
(3.17) temos a atualização de 1+kB para o problema com restrições.
3.3 – Métodos de Atualização da Matriz Quase-Newton em Problemas Grandes
O Método Quase-Newton, na sua forma clássica (BFGS, por exemplo), não pode
ser usado para otimização de problemas grandes, pois gera e, por conseqüência,
manipula matrizes densas, o que torna o custo computacional elevado e inviável. É
possível, no entanto, modificar e estender esse método de diversas maneiras afim de
torná-lo eficiente para a resolução de problemas de grande porte [35].
As principais técnicas para esse tipo de atualização são as seguintes:
Método de Memória Limitada;
Método de Atualização Esparsa;
3.3.1 – Método de Memória Limitada
A técnica de memória limitada, concebida para resolução de problemas de
otimização não linear de grande porte, é baseada no método quase-Newton, permite
aproximar a inversa da matriz Hessiana da função que se deseja minimizar sem a
necessidade de armazenamento dessa matriz. As vantagens deste método estão na
economia no armazenamento em memória e na redução do número de operações [2].
25
Considerando inicialmente a aproximação BFGS da Hessiana apresentada na
equação (3.22).
kTk
Tkk
kkTk
kTkkk
kk syyy
sBsBssBBB +−=+1 (3.25)
Sendo B a aproximação da Hessiana e os vetores ks e ky descritos em (3.26) e
(3.27), respectivamente
kkk xxs −= +1 (3.26)
)()( 1 kkk xfxfy ∇−∇= + (3.27)
onde )( 1+∇ kxf e )( kxf∇ são os gradientes da função objetivo nos pontos 1+kx e kx
respectivamente.
Segundo [2], é possível representar de forma mais conveniente a regra de
atualização BFGS da equação (3.25). Esta nova forma é conhecida como uma
representação compacta da matriz BFGS e está descrita em (3.28).
Seja 0B uma matriz simétrica positiva definida e assumido-se que os k pares
11 −
=kiii ys satisfazem .0>i
ti ys Seja kB obtida na ésimak atualização de 0B pela fórmula
direta BFGS (3.25), ao tomarmos os pares 11 −
=kiii ys podemos então escrever
[ ] ⎥⎦
⎤⎢⎣
⎡⎥⎦
⎤⎢⎣
⎡
−−=
−
tk
tk
ktk
kktk
kkk YBS
DLLSBS
YSBBB 0
1
000 (3.28)
sendo
],....,[ 0 kk ssS = (3.29)
],....,[ 0 kk yyY = (3.30)
onde kS e kY são matrizes );( kn×
26
⎩⎨⎧ >
= −−
contrário caso 0 se
)( 11 jiysL j
ti
ijk (3.31)
ijkL )( é uma matriz triangular )( kk ×
],...,[diag 1100 −−= ktk
tk ysysD (3.32)
kD é uma matriz diagonal )( kk × .
Usando o esquema apresentado em [2], ao invés de se considerar os k pares 11 −
=kiii ys para atualizar a matriz ,B é possível tomar somente os m últimos pares.
Durante as primeiras k iterações, quando mk ≤ , as matrizes kS e kY armazenarão os
k pares de vetores s e y . Nas iterações subseqüentes quando mk > , o procedimento
de atualização de kS e kY é alterado de tal forma que sejam removidos os pares s e y
mais antigos e adicionados pares mais novos.
Além disso, assume-se que IB kε=0 , e reformula-se a equação (3.28):
[ ] ⎥⎦
⎤⎢⎣
⎡⎥⎦
⎤⎢⎣
⎡
−−=
−
tk
tkk
ktk
kktkk
kkkkk YS
DLLSS
YSIBεε
εε1
(3.33)
onde:
],....,[ 1−−= kmkk ssS (3.34)
],....,[ 1−−= kmkk yyY (3.35)
são matrizes );( kn×
⎩⎨⎧ >
= +−−+−−
contrário caso 0 se
)( 11 jiysL jmk
timk
ijk (3.36)
ijkL )( é uma matriz triangular );( kk ×
27
],...,[ 11 −−−−= ktkmk
tmkk ysysdiagD (3.37)
kD é uma matriz diagonal e kε um escalar positivo qualquer. Em [3], recomenda-se:
11
11
−−
−−=k
tk
ktk
k sssyε (3.38)
No entanto, em [16], recomenda-se .1=kε
Nesta última formulação as matrizes têm a dimensão relacionada aos últimos m
pares de vetores s e y [(3.34) e (3.35)] e não mais ao total de k iterações como mostrado
em (3.29) e (3.30). A matriz Quase-Newton, ,B continua com a mesma dimensão
).( nn×
Observa-se que a matriz
⎥⎦
⎤⎢⎣
⎡
− ktk
kktk
DLLSBS 0 (3.39)
da equação (3.28) é indefinida.
Porém, sua inversão pode ser feita, utilizando-se o método de fatorização de
Cholesky, da seguinte maneira:
0
0 21
21
21
21
0 ⎥⎥
⎦
⎤
⎢⎢
⎣
⎡−−
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−=⎥
⎦
⎤⎢⎣
⎡−t
k
kkk
kkk
k
ktkk
tkk
VDLD
VDL
DSBSL
LD (3.40)
onde kV é uma matriz triangular inferior que satisfaz
, 10
tkkkk
tk
tkk LDL SBS VV −+= (3.41)
Se 0B é positiva definida e ,1,...,1 ,0 −=≥ kiys iti então kV existe e não é
singular.
28
Logo, tem-se uma nova forma de representar a atualização da matriz Quase-
Newton dada por:
[ ] ⎥⎦
⎤⎢⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−⎥⎥
⎦
⎤
⎢⎢
⎣
⎡−−=
−
tkk
tk
kkk
k
tk
tkkkkkkkk S
Y
VDL
D
VLDDSYIB
εεε 0
0
-1
21
211-
21
21
(3.42)
Nesta última formulação as matrizes têm a dimensão relacionada com os últimos
m pares de vetores s e y, e não mais ao total de k iterações. A matriz Quase-Newton,
,kB continua com a mesma dimensão )( nn × . Na prática sugere-se que 7≤m [2].
A técnica de memória limitada na realidade não armazena a matriz B da iteração
anterior e as informações necessárias estão armazenadas nos vetores S e Y. Como não
há armazenamento, faz-se uso de artifícios para obtenção de produtos entre vetores e a
matriz B.
Usando-se a equação (3.42) serão apresentadas algumas operações envolvendo a
matriz kB . Tais operações serão úteis quando for utilizada a técnica de memória
limitada junto ao algoritmo do FAIPA [10].
As operações destacadas são as seguintes: produto de kB por um vetor v e
produto vBu kt , onde u e v são vetores de dimensão n.
3.3.1.1 - Produto vBk
O produto de kB por um vetor v é determinado da seguinte forma:
- dados: kx , kS , kY , ,kL kD e ;kε
- efetuar a fatorização de Cholesky de tkkkk
tkk LDL SS 1−+ε para se obter . kV
- resolver a equação (3.43):
⎥⎦
⎤⎢⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−⎥⎥
⎦
⎤
⎢⎢
⎣
⎡−=
−
vSvY
VDL
D
VLDDp t
kk
tk
kkk
k
tk
tkkk
ε 0
0
-1
21
211-
21
21
(3.43)
29
- efetuar o produto
[ ]pSY-vεvB kkkkk ε = (3.44)
3.3.1.2 - Produto vBu kt
O produto de vBu kt , onde u e v são vetores de dimensão n é determinado da
seguinte forma:
- dados kS , kY , kL e kD
- define-se kW
[ ]kkkk SYW ε= (3.45)
- calcular ktYu , kk
t Su ε , vY tk e vS t
kkε
- determinar ktWu e vW t
k
- efetuar a decomposição de Cholesky de tkkkk
tk LDL SS 1−+ para obter ; kV
- calcular tk uvε .
- resolver (3.46)
vWVDL
D
VLDD Wu-vuεvBu t
k
kkk
k
tk
tkkkk
ttkk
t 0 0
-1
21
211-
21
21
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−⎥⎥
⎦
⎤
⎢⎢
⎣
⎡−=
−
(3.46)
30
3.3.2 – Método de Atualização Esparsa
É um assunto que foi explorado e abandonado no fim dos anos 70 com Toint
[37][38][39] e ressurgiu no meio da década de 90 com Fletcher [13][14]. Consiste
basicamente no desenvolvimento da atualização Quase-Newton adotando um
determinado padrão de esparsidade para a matriz Hessiana ( 2f∇ ).
Antes de descrevermos as técnicas esparsas de Toint e Fletcher, é necessário
definir a norma de Frobenius, que será utilizada para resolver tais problemas de
atualização.
A norma de Frobenius F
. de uma matriz é definida da seguinte maneira.
Seja M a matriz:
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
nnn
n
MM
MMM
L
MOM
L
1
111
(3.47)
Onde ℜ∈ijM , sendo ni ,...,1= e nj ,...,1= .
Então:
∑∑= =
=n
i
n
jijF
MM1 1
2 (3.48)
ou
∑∑= =
=n
i
n
jijF
MM1 1
22 (3.49)
31
3.3.2.1 – Atualização Esparsa de Toint (1977)
Toint apresenta o problema de atualização esparsa considerando que a matriz
1+kB é a solução do seguinte problema quadrático descrito abaixo:
⎪⎪⎪
⎭
⎪⎪⎪
⎬
⎫
∈∀==
=
−=−
+
++
+
∈++ ∑
+
I i,j0 B eBB
ysBsujeito a
BBBB minimize
ij1k
tkk
kkk
I(i,j)
2ijkijk
2
FkkB 1k
)()(
])()[(
11
1
11
(3.50)
onde
F
⋅ denota a norma de Frobenius;
os vetores ks e ky são 1−−= kkk xxs e )()( 1−∇−∇= kkk xfxfy
0)]([|),( 2 =∇= ijxfjiI
( ) 0][|),( 2 ≠∇= ijxfjiJ
A solução kB é obtida resolvendo um sistema linear com n equações e
conservando o mesmo padrão de esparsidade I .
Em [37], Toint apresenta, além da formulação do problema, o procedimento de
atualização assumindo que a matriz B possui dimensões nn× , esparsa e simétrica onde
seus elementos são números reais. As condições de esparsidade não são aplicadas aos
elementos da diagonal, isto é, eles não podem ser nulos.
O objetivo, então, é obter a matriz 1+kB ( 11 ++ = ktk BB )
EBB kk +=+1 (3.51)
que satisfaça a seguinte condição secante
kkk ysB =+1 (3.52)
onde ks e nk Ry ∈ , e o padrão de esparsidade de kB é mantido em 1+kB .
32
A matriz E é chamada de Matriz de Correção.
As condições de esparsidade podem ser descritas da seguinte maneira:
0)()( 1 == + ijkijk BB (3.53)
desde que os pares ( i , j ) I∈ , sendo I um conjunto de pares inteiros.
Há também um conjunto J que contém os pares não pertencentes a I e
0)( e 0)( 1 ≠≠ + ijkijk BB (3.54)
desde que os pares ( i , j ) J∈ , sendo J um conjunto de pares inteiros. Considera-se
(i,i) J∈ , para todo i.
Para resolver o problema, Toint sugere o seguinte procedimento descrito a seguir
cujo objetivo final é obter a Matriz de Correção.
Considerando a equação (3.51) e a equação secante (3.52) temos:
kkk ysEB =+ )( (3.55)
kkkk sByEs −= (3.56)
Fazendo:
kkk sByr −= (3.57)
Então:
kEsr = (3.58)
Toint sugere a criação de uma matriz descrita em (3.59) que permite reescrever a
equação (3.58).
⎩⎨⎧
∈∀
∈∀=
Iji
JjisjiX j
), ( ,0
), ( , ),( (3.59)
33
Reescrevendo (3.58) temos:
∑=
=n
jijiji XEr
1
, onde ni ,...,1= (3.60)
Seja uma matriz C, podemos considerar a matriz de correção da seguinte forma:
)(5.0 TCCE += (3.61)
O problema pode ser considerado da seguinte forma:
⎪⎪⎪
⎭
⎪⎪⎪
⎬
⎫
=
=+
+
∑=
,...,nionde
rXCCsujeito a
minimize
iijjiij
FE
1
2] )( [
CC 81
n
1j
2T
(3.62)
Da mesma forma que em [19], o lagrangeano da função do problema (3.62) é o
seguinte:
2-] )( [( )2(81),(
1 11 1
22 ∑ ∑∑∑= == =
+−++=Φn
iiij
n
jjiiji
n
i
n
jjiijjiij rXCCCCCCC λλ (3.63)
Diferenciando em relação a ijC temos:
0)(0.5),(=−−+=
∂Φ∂
jijijijiijij
XXCCCC λλλ (3.64)
Sendo ni ,...,1= e nj ,...,1= .
Podemos usar a equação (3.61) para reescrever a (3.64):
0=−− jijijiij XXE λλ (3.65)
34
jijijiij XXE λλ += (3.66)
Substituindo (3.66) em (3.60):
∑=
+=n
jijjijijii XXXr
1])[( λλ , onde ni ,...,1= (3.67)
Que pode ser reescrita:
∑∑==
+=n
jijjij
n
jijii XXXr
11
2 )()( λλ , onde ni ,...,1= (3.68)
Podemos transformar ainda mais a equação (3.68) ao criar a matriz Q da
seguinte forma:
∑=
+=n
kijikijijij XXXQ
1
2 )( δ , onde ni ,...,1= e nj ,...,1= (3.69)
Então temos o seguinte sistema de equações onde a incógnita é λ .
rQ =λ (3.70)
Por fim, com λ , o vetor solução de (3.70), junto a equação (3.66), obtém-se a
matriz de correção.
É possível reescrever resumidamente o processo descrito acima para a resolução
do problema que consiste em encontrar a matriz de correção segundo a técnica esparsa
de Toint:
⎪⎪
⎭
⎪⎪
⎬
⎫
∈∀==
−=
IjiEeEE
sByEssujeito a
E .minimize
ij
tkkkk
FE
), ( 0
50 2
(3.71)
35
Para a resolução de (3.71) define-se a matriz X de dimensões n x n:
⎩⎨⎧
∈∀
∈∀=
Iji
JjisjiX j
), ( ,0
), ( , ),( (3.72)
Em seguida obtém-se a matriz Q da seguinte forma:
ijjiijij iXXXQ δ2:),(+= (3.73)
onde δ é o delta de Kronecker descrito em (3.74).
⎩⎨⎧
≠=
=jiji
ij ,0 ,1
δ (3.74)
De posse da matriz Q é possível resolver o sistema (3.75) e obter o vetor λ para
utilizá-lo em (3.76) e encontrar a matriz de correção E .
kkk sByQ −=λ (3.75)
Então, obtém-se a matriz de correção:
⎩⎨⎧
∈∀+∈∀
=JjiXX
IjiE
jiijij ), ( ,
), ( ,0
ji λλ (3.76)
Agora é possível encontrar a matriz 1+kB definido na equação (3.51).
Dentre as várias desvantagens dessa técnica é que, além de não garantir que 1+kB
seja definida positiva, exige a resolução de um sistema de equações (3.75) com muitas
variáveis [31]. Além disso, é necessário o armazenamento da matriz B a cada iteração.
36
3.3.2.2 – Atualização Esparsa de Fletcher (1996)
Em [14], Fletcher apresenta uma outra maneira para descrever o método de
atualização esparsa. Ele considera, agora, que a matriz 1+kB é a solução do seguinte
problema quadrático:
⎪⎪
⎭
⎪⎪
⎬
⎫
∉∀==
−
+
++
++
JjiBeBBsujeito a
YSBminimize
ijk
tkk
FkkkBK
), ( 0)(
1
11
21
1
(3.77)
onde
F
⋅ denota a norma de Frobenius;
as matrizes kS e kY contém os m diferentes pares is e iy , mi ,...,1= .
],...,[ 1 kmkk ssS +−= (3.78)
],...,[ 1 kmkk yyY +−= (3.79)
os vetores ks e ky são 1−−= kkk xxs e )()( 1−∇−∇= kkk xfxfy
=J 0)]([|),( 2 ≠∇ ijxfji
Ainda em [12], Fletcher mostra que o problema apresenta solução única se kS
satisfaz a condição de independência linear entre as colunas da matriz. Considerando-se
isso, 1+kB pode ser obtida através da solução de um sistema definido positivo, porém
não é garantido, também, que 1+kB seja positiva definida [31].
O sistema (3.80) é proposto por Fletcher em [12] para auxiliar na resolução do
problema (3.77).
wbKPPt = (3.80)
Antes de descrever esse sistema, é preciso apresentar alguns conjuntos, matrizes
e vetores necessários para uma melhor compreensão. Além disso, será introduzido o
operador vec que será utilizado para transformar matrizes em vetores.
37
O conjunto L é definido como aquele que contém os pares que indicam os
elementos da parte triangular inferior de B e que pertencem a J .
JLjiJjiL ⊂≥∈= , ,),( (3.81)
A variável nti representa o número de pares que estão contidas no conjunto L .
O vetor b , de dimensão nti , é a solução do problema, pois nele estão
armazenados os elementos de 1+kB , cujos pares ),( ji pertencem a L .
A matriz Z , de dimensões nn× , é descrita em (3.82)
tkk
tkk SYYSZ += (3.82)
O vetor w , de dimensão nti , é montado a partir da matriz Z da seguinte forma:
LiiZw
LjiZZw
iir
jiijr
∈∀=
∈∀+=
),( ),(
),( ),( (3.83)
onde ntir ,...,1= .
A maneira de obter as matrizes E , de dimensões nn× e que servirão para a
montagem da matriz P , é descrita em (3.84). Para cada par Jji ∈ ), ( , há uma matriz
ijE que possui elemento de valor 1 na posição ), ( ji e zero nas demais posições.
⎩⎨⎧ ∈
=contrário caso ,0 ), ( ,1 Jji
Eij (3.84)
A matriz P , de ordem ntin ×2 , é montada por colunas da seguinte forma:
38
LiiEvec
LjiEEvec
ii
jiij
∈∀
∈∀+
),( ),(
),( ),( (3.85)
Finalmente, a matriz K é formada a partir da soma dos produtos de Kronecker
entre a matriz tkk SS e a matriz identidade Ι . Esse produto está representado em (3.86).
)()( tkk
tkk SSSSK ⊗Ι+Ι⊗= (3.86)
O produto de Kronecker, também conhecido como produto direto ou produto
tensor, é definido em (3.87). Por exemplo, A é uma matriz pn× e C uma matriz
qm× , então o produto de Kronecker de A e C será:
⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢
⎣
⎡
=⊗
CaCaCa
CaCaCaCaCaCa
CA
npnn
p
p
L
MMMM
L
L
21
22221
11211
(3.87)
Ao resolver o sistema (3.80), de posse dos valores do vetor b efetua-se a
montagem da matriz 1+kB .
Essa atualização não exige o armazenamento da matriz kB em cada iteração para
obter a matriz 1+kB , uma vez que as informações das iterações anteriores contidas nos
vetores S e Y são suficientes.
O fato de ter que resolver um sistema para se obter a nova matriz 1+kB pode ser
considerado uma desvantagem desse método, pois a dimensão desse sistema é igual ao
número de não zeros ( nti ) contidos na parte triangular inferior da Hessiana que
forneceu o padrão de esparsidade.
No entanto, a grande desvantagem está no fato de que essa atualização não
garante aproximações definidas positivas [14]. Outra desvantagem está no fato de que o
método não apresenta bons resultados na resolução de problemas de grande porte [35].
39
CAPÍTULO 4
Técnica de Atualização
Quase-Newton Diagonal
4.1 – Introdução
No capítulo anterior apresentaram-se algumas técnicas para a obtenção de
matrizes Quase-Newton em problemas grandes. Dentre essas técnicas está a atualização
esparsa, que serviu de inspiração para a concepção de uma técnica nova, a qual
chamaremos de Técnica de Atualização Quase-Newton Diagonal.
Os objetivos dessa nova técnica são:
- Obter uma atualização que gere matrizes definidas positivas;
- Evitar o armazenamento da matriz B a cada iteração;
- Aumentar a esparsidade dos sistemas usados na resolução de problemas de
otimização, reduzindo o custo computacional em problemas de grande porte.
4.2 – Técnica de Atualização Diagonal
Modificando algumas restrições em relação à proposta de Fletcher descrito em
(3.77) no capítulo anterior, temos um novo problema descrito em (4.1), onde 1+kB é a
solução do problema quadrático
40
⎪⎪⎭
⎪⎪⎬
⎫
≠∀==>>
−
+
+
++
jiBeniBsujeito a
YSBminimize
ijk
iik
FkkkBk
0)( ,...,1 0, , )(
1
1
21
1
δδ (4.1)
Onde:
F
⋅ representa a norma de Frobenius;
as matrizes kS e kY contém os q diferentes pares is e iy , qi ,...,1= e em
cada iteração elas são atualizadas de forma semelhante ao Método de
Memória Limitada.
],...,[ 1 kqkk ssS +−= (4.2)
],...,[ 1 kqkk yyY +−= (4.3)
os vetores ky e ks são ),,(),,( 1 kkkxkkkxk xlxly µλµλ −∇−∇= e
1−−= kkk xxs , onde l é o lagrangeano da função objetivo em problemas com
restrições.
n representa a dimensão de 1+kB .
A seguir apresentaremos a nova técnica de atualização esparsa. Sejam as
matrizes B, S e Y descritas em (4.7), (4,8) e (4.9), respectivamente.
Seja B uma matriz diagonal n x n.
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
nv
vv
B
L
MOM
L
0
000
2
1
(4.7)
As matrizes S e Y armazenam q pares de vetores s e y, respectivamente.
41
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
=
nqn
q
ss
ssS
L
MOM
L
1
111
(4.8)
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
=
nqn
q
yy
yyY
L
MOM
L
1
111
(4.9)
A função que será minimizada é a seguinte:
2 F
YBS −=Φ (4.10)
Substituindo (4.7), (4.8) e (4.9) em (4.10) temos:
2
1
111
1
1111
0
0
Fnqn
q
nqn
q
n yy
yy
ss
ss
v
v
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=Φ
L
MOM
L
L
MOM
L
O (4.11)
Realizando a multiplicação seguida da subtração das matrizes em (4.11) temos:
2
11
11111111
Fnqnqnnnn
ysvysv
ysvysv
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−−
−−=Φ
L
MOM
L
(4.12)
A norma de Frobenius da matriz em (4.12) será, então:
22111
211
211111
)( )(
)( )(
nqnqnnn
nnn
ysvysv
ysvysv
−++−+
+−++−=Φ
L
MM
L
(4.13)
42
Logo:
22221111
21
21
2111
21
221111111
211
21
2 2
2 2
nqnqnqnnqnqqqq
nnnnnn
yysvsvyysvsv
yysvsvyysvsv
+−+++−+
++−+++−=Φ
L
MM
L
(4.14)
Sob a forma matricial, a equação (4.14) é reescrita em (4.15):
[ ]
[ ]
[ ]
[ ]
[ ] [ ]
0
0 2
0
0 2
0
0
0
0
0
0
0
0
1
1
1
11
111
11
1
1
11
1
11
1
111
1
1
1
11
1
11
1
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
++⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡+
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−
−⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡−
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
+
+⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=Φ
nq
q
nqq
n
n
nq
q
nq
q
n
nn
n
nnq
q
nq
q
n
nnn
n
y
yyy
y
yyy
y
y
s
svv
y
y
s
svv
v
v
s
s
s
svv
v
v
s
s
s
svv
MLLML
MOL
LMOL
MOOL
LMOOL
(4.15)
Se considerarmos o vetor v, as matrizes jD e os vetores jY , onde qj ,...,1= ,
poderemos reescrever a equação (4.15):
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
nv
vv M
1
(4.16)
43
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
=
nj
j
s
sD
0
01
j O (4.17)
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
=
qj
j
y
yY M
1
j (4.18)
Reescrevendo (4.15) considerando (4.16), (4.17) e (4.18), então:
q11
qq11
qq11
2 2
YYYY
YDvYDv
vDDvvDDv
Tq
T
TT
TT
+++
−−−
++=Φ
L
L
L
(4.19)
Se considerarmos agora a matriz Q , o vetor b e o escalar c, descritos em (4.20),
(4.21) e (4.22), respectivamente, podemos reescrever (4.19).
∑=
×=q
jjDQ
1
22 (4.20)
∑=
×=q
jjjYDb
12 (4.21)
∑=
=q
jj
tj YYc
1 (4.22)
Por fim, reescrevendo (4.19), obtemos a seguinte função quadrática:
cbvQvvv TT 0.5 )( +−=Φ (4.23)
44
Podemos afirmar que o problema (4.1) é equivalente ao de minimizar uma
função quadrática, como a que temos apresentada na equação (4.23), com restrições na
variável v , onde δ≥iv , 0>δ e ni ,...,1= .
Então, podemos reescrever o problema (4.1) da seguinte maneira:
⎪⎭
⎪⎬⎫
=>≥
+−=Φ
nivsujeito a
cbvQvvvminimize
i
tt
v
,...,1 0
5.0 )(
δ (4.24)
onde
a nova matriz atualizada é diagonal, onde nivB iii ,...,1 == ;
n representa a dimensão de B , isto é, o número de variáveis do problema
original .
δ é uma constante;
a matriz Q
∑=
×=m
jjDQ
1
22 (4.25)
onde jD uma matriz diagonal:
⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢
⎣
⎡
=
nj
j
j
j
S
SS
D
L
MOM
L
0
0
2
1
(4.26)
o vetor b
∑=
×=m
jjjYDb
12 (4.27)
45
onde jY é o seguinte vetor:
⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢
⎣
⎡
=
nj
j
j
j
y
yy
YM2
1
(4.28)
o vetor c
∑=
=m
jj
tj YYc
1 (4.29)
Sendo qj ,...,1= , onde q é o número de pares de vetores ks e ky armazenados
nas matrizes kS e kY respectivamente descritas em (4.2) e (4.3), onde ambas possuem
dimensão qn× .
As matrizes kS e kY são atualizadas de modo semelhante ao Método de
Memória Limitada, onde são armazenados os vetores ks e ky , sendo calculados da
seguinte forma (nos problemas com restrições): 1−−= kkk xxs e
),,(),,( 1 kkkx
kkkx
k xlxly µλµλ −∇−∇= , onde l é o lagrangeano da função objetivo.
4.3 – Resolução do Problema
Para a resolução do problema através das condições de otimalidade de KKT é
necessário ter o gradiente da função objetivo e o gradiente das restrições.
O gradiente da função )(vΦ é obtido facilmente:
bQvv )( −=Φ∇ (4.30)
Para obtenção do gradiente das restrições, temos que:
46
ii vg −= δ , ni , ... ,1= (4.31)
então
[ ]nk ggvg ∇⋅⋅⋅∇=∇ 1)( (4.32)
onde i
i vgg
∂∂
=∇ , ni ,...,1= .
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
−
=∇
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡−
=∇
1
00
, ,
0
01
1M
LM
ngg (4.33)
O gradiente das restrições será:
Ivg k -)( =∇ (4.34)
A partir das condições de otimalidade de Karush-Kuhn-Tucker para o problema
(4.24) temos as equações (4.35) e (4.36)
0)(1
=∇+Φ∇ ∑=
n
iiik gv λ (4.35)
0)( =ikT vg λ (4.36)
Considerando a equação (4.35) temos:
0 =−− iiiii bvQ λ , ni , ... ,1= (4.37)
A partir da equação (4.36) temos:
47
0)-( =iiv λδ , ni , ... ,1= (4.38)
Através da análise das informações de (4.37) e (4.38), podemos considerar as
seguintes situações:
1) Se 0 =iλ , então
0 =− iiii bvQ , ni , ... ,1= (4.39)
ii
ii Q
bv = , ni , ... ,1= (4.40)
2) Se 0 >iλ
δ=iv , ni , ... ,1= (4.41)
Portanto, o vetor solução do problema (4.24) pode ser obtido a partir da equação
(4.40) considerando-se δ>iv . Caso contrário, se δ≤iv faz-se δ=iv .
48
CAPÍTULO 5
Métodos Diretos para Solução de
Sistemas Lineares Esparsos
5.1 – Introdução
No presente capítulo são abordados alguns conceitos sobre Métodos Diretos e
como eles podem ser utilizados em situações nas quais o problema é considerado
esparso.
Descreve-se de maneira sucinta, como as rotinas MA27, MA28 e SSTSTRF/S
utilizam o conhecimento da esparsidade para obter a solução, através do Método Direto,
em sistemas simétricos e não simétricos. A MA27 e a MA28 são utilizadas em
computadores seqüenciais. A SSTSTRF/S é parte da biblioteca de rotinas disponíveis
no computador CRAY SV1 e permite o uso de processamento em paralelo.
No entanto, o Método de Memória Limitada junto ao FAIPA efetua a resolução
de sistemas lineares densos, o que torna inviável o uso de solvers específicos para
sistemas esparsos. Por isso fez-se a implementação da rotina SGETRF/S que resolve
sistemas densos pelo método direto e pertencente ao LAPACK. Além disso, essa rotina
poderia ser utilizada tanto em computadores seqüenciais como em ambiente de alto
desempenho com o computador CRAY SV1.
49
5.2 – Método Direto
Consideremos o sistema
cAx = (5.1)
em que A é uma matriz quadrada de dimensão n não singular, nRx ∈ é a variável do
problema e nRb∈ .
Métodos Diretos usam uma fatoração dos coeficientes da matriz A para facilitar
a obtenção da solução de sistemas do tipo (5.1).
A fatoração mais comum para sistemas não simétricos é a do tipo LU , onde a
matriz A (ou uma permutação dela) é expressa como o produto das matrizes L e U ,
onde L é triangular inferior e U é triangular superior.
Desse modo, podemos ter:
LUPAQ = (5.2)
onde P e Q são matrizes de permutação obtidas de tal forma a manter a estabilidade
numérica.
Após a fatoração, a solução pode ser apresentada de uma maneira sucinta
observando duas etapas principais: uma substituição direta (5.3) e outra de substituição
inversa (5.4).
PcLy = (5.3)
yUz = (5.4)
A solução x é obtida em (5.5) realizando-se a permutação de z .
Qzx = (5.5)
O uso dessa fatoração LU para resolver sistemas de equações é usualmente
chamada de Eliminação Gaussiana.
50
Se a matriz A é simétrica positiva definida, é normal usar uma fatoração (5.6)
conhecida como Fatoração de Cholesky.
tt LLPAP = (5.6)
Para o caso de matrizes simétricas em geral é usada a fatoração (5.7).
tt LDLPAP = (5.7)
Se em (5.7) a matriz A é indefinida, para que a decomposição seja estável, é
preciso que a matriz D seja diagonal com blocos, onde cada bloco possui ordem 1 ou 2,
e L é triangular inferior unitária [15].
5.3 – Método Direto para Sistemas Esparsos
A utilização da esparsidade no intuito de viabilizar a resolução de sistemas com
grande número de variáveis requer o aumento dos cuidados no momento da
manipulação dos elementos da matriz desse sistema [7]. Dentre esses cuidados podemos
citar alguns destaques:
Controle do número de elementos nulos que passam a ser não nulos após a
fatoração (Ordenamento).
Predição da localização dos elementos não nulos e também daqueles elementos
nulos que poderão vir a ser não nulos (Fatoração Simbólica).
Esquema de armazenamento que faz uso somente dos elementos não nulos.
Manipular, durante a fatoração, apenas os elementos não nulos.
O processo da Eliminação Gaussiana quando utilizado em sistemas esparsos
pode provocar a perda do padrão de esparsidade, isto é, permitir a inserção de elementos
não nulos em posições antes ocupadas por elementos nulos [29]. Um exemplo clássico é
o das matrizes apresentadas em (5.9) e (5.11) onde o ordenamento das linhas e das
51
colunas é extremamente efetivo para a manutenção da esparsidade da matriz durante a
Eliminação Gaussiana [9].
Considerando:
LUA = (5.8)
Se o padrão de esparsidade da matriz A for considerada como em (5.9)
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
××××
××××××
=A (5.9)
então, após a fatoração, a matriz que contém LU terá o padrão de esparsidade alterado
como em (5.10). Os símbolos ⊗ representam os não nulos inseridos no lugar de
elementos nulos no padrão original.
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
×⊗⊗×⊗×⊗×⊗⊗××××××
=LU (5.10)
No entanto, se for feito um reordenamento de linhas e colunas de tal forma que a
matriz reordenada passe a ter o padrão apresentado em (5.11) a fatoração preservará o
padrão de esparsidade de tal forma que não haverá inserção de elementos não nulos
como em (5.10).
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
××××××××××
=A (5.11)
52
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
××××××××××
=LU (5.12)
A etapa de Fatoração Simbólica consiste em determinar a localização dos não
nulos em L e U , além de preparar a estrutura de dados para armazenagem e alocação
de memória para esses não nulos.
A Fatoração Numérica utiliza os valores numéricos dos elementos e realiza a
fatoração LU com pivoteamento que garanta a estabilidade numérica do processo.
Para matrizes simétricas definidas positivas, na etapa de Ordenamento utiliza-se
o algoritmo de Grau Mínimo. Para matrizes não simétricas ou simétricas indefinidas é
comum utilizar-se o Critério de Markovitz.
O algoritmo de Grau Mínimo escolhe o elemento i da diagonal de tal forma que
o número de não zeros na linha e coluna i é minimizado.
O Critério de Markowitz escolhe o elemento kija ( k indica a iteração) de tal
forma a minimizar a expressão (5.13), na qual temos kir representando o número de não
zeros na linha i e kjc representando o número de não zeros na coluna j .
)1min()1min( −− kj
ki cr (5.13)
Além disso, o Critério de Markowitz exige um controle da estabilidade
numérica, chamada Escolha Limite de Pivô que consiste em aceitar para pivô da
iteração k qualquer elemento kija que satisfaça o critério descrito pela desigualdade
(5.14), onde u ( 10 ≤< u ) é o parâmetro limite [7].
kik
kkk aua ≥ (5.14)
Na prática, o valor 1.0=u e considerado satisfatório e dá bastante liberdade
para se escolher o pivô em termos da esparsidade da matriz [7].
Em linhas gerais, a solução de (5.1) pode ser dividida em quatro fases [15]:
53
1) Fase de Pré-Ordenamento: que explora a estrutura;
2) Fase de Análise: onde a estrutura da matriz é analisada para produzir um
ordenamento e uma estrutura de dados satisfatórios para uma fatoração eficiente. Nessa
etapa é determinada a seqüência de pivoteamento. Muitas vezes referem-se a essa fase
com Fatoração Simbólica ou também de Ordenamento;
3) Fase de Fatoração: onde é efetuada a fatoração numérica, isto é, são
computados os fatores, baseada na seqüência de pivoteamento definida na fase de
Análise;
4) Fase de Solução: onde os fatores são usados para resolver o sistema através de
substituição direta e seguida de uma substituição inversa.
Quando o sistema (5.1) é simétrico, as Fases 2 e 3 terão comportamentos
diferenciados para os casos em que a matriz A é definida positiva ou indefinida.
Para matrizes simétricas definidas positivas, a seqüência de pivoteamento pode
ser obtida usando somente o padrão de esparsidade, isto é, durante a fase de análise não
há manipulação computacional de números reais e na fase de fatoração a seqüência de
pivoteamento pode ser usada sem modificações.
Em problemas onde a matriz é simétrica indefinida, é possível alterar a
seqüência de pivoteamento, caso seja necessário durante a fatoração, para manter a
estabilidade numérica. Isso quer dizer que as Fase 2 e 3 são realizadas conjuntamente,
podendo ser consideradas uma fase só.
Se o sistema for não simétrico as Fase 2 e 3 são realizadas conjuntamente, e
também podem ser consideradas uma fase só.
Há rotinas que utilizam o Método Direto onde a Fase 4 permite resolver
repetidamente várias vezes o sistema para diferentes vetores c , obtendo dessa forma
uma maior eficiência computacional.
A Fase 3 (ou uma combinação das Fases 2 e 3) normalmente requer mais tempo
computacional. A fase mais rápida é a Fase 4. Em sistemas densos, a Fase 1 não é
utilizada [15].
Dentre os Métodos Diretos para sistemas esparsos podemos destacar o Método
Multifrontal, que é uma generalização do Método Frontal, pois faz uso de múltiplas
54
matrizes frontais. O método foi implementado por Duff e Reid em 1982 e representa um
avanço significativo na solução direta de sistemas esparsos [6].
O Método Frontal tem suas origens na solução de problemas de análise
estrutural através do Método dos Elementos Finitos. Inicialmente considerava sistemas
simétricos definidos positivos e posteriormente foi estendido para sistemas não
simétricos [6].
O Método Multifrontal pode ser usado tanto em sistemas indefinidos não
simétricos como também em sistemas indefinidos simétricos. Além disso, o método
aplica-se também em sistemas com matrizes que são simétricas quanto a sua estrutura,
mas não quanto aos seus valores [6].
5.4 – Esquemas de Armazenamento de Matrizes Esparsas
Existe uma grande variedade de tipos de armazenamento de matrizes esparsas
dentre os quais podemos citar:
- Esquema Coordenado
- Esquema CSC (Compressed Sparse Column)
O Esquema Coordenado tem como característica apresentar dois tipos de
armazenagem: uma Parte Primária e uma Parte Secundária. A Parte Primária é
constituída por um vetor de reais contendo todos os elementos não nulos da matriz (que
chamaremos de AC). A Parte Secundária corresponde a dois vetores de inteiros que
contém os índices de linha (IRN) e de coluna (ICN) dos elementos não nulos.
Quando comparado com outros esquemas, o coordenado necessita de um espaço
de armazenagem relativamente elevado e, além disso, operações com matrizes esparsas
não são implementadas de uma forma eficiente usando este esquema. Por essa razão o
Esquema Coordenado é habitualmente usado apenas como input/output entre rotinas de
manipulação de matrizes esparsas e o usuário.
55
O Esquema Coordenado é o tipo de armazenagem usado como interface das
rotinas MA28 e MA27 para resolução de sistemas de equações lineares com matrizes
esparsas [21].
O Esquema CSC (Compressed Sparse Column) armazena as informações da
matriz também em três vetores que chamaremos de AMAT, ROWIND e COLSTR.
O vetor AMAT armazena os elementos diferentes de zero da matriz. O vetor
ROWIND contém os índices da coluna de cada elemento armazenado no vetor AMAT.
O vetor COLSTR contém informações referentes ao número de elementos diferentes de
zero contidos em cada coluna da matriz que se deseja armazenar.
Por exemplo, seja uma matriz A de dimensões n x n, com nz elementos
diferentes de zero.
Os vetores AMAT e ROWIND terão dimensão nz. O vetor COLSTR terá
dimensão n+1.
Para entender o armazenamento das informações contidas em COLSTR vamos
considerar o valor da posição i nesse vetor e seja nzci o número de não zeros da coluna
i-1 da matriz A. Então o valor na posição i do vetor COLSTR será (nzci+1).
Convenciona-se que sempre a primeira posição desse vetor será igual a 1 e a última
posição tenha o valor nz+1.
O Esquema CSC é muito usado por muitos solvers esparsos [4], dentre os quais
está o SSTSTRF/S disponível no computador CRAY SV1.
O Esquema CSC, em relação ao Coordenado, geralmente necessita um espaço
menor para o armazenamento das informações de uma mesma matriz não simétrica de
dimensões nxn .
Por exemplo, se considerarmos nz o número de elementos diferentes de zero
dessa matriz, os vetores AMAT e ROWIND teriam dimensão nz e o terceiro vetor
(COLSTR) apresentaria dimensão n+1. Enquanto isso, no Esquema Coordenado todos
os vetores teriam dimensão nz.
56
Seja, por exemplo, a seguinte matriz:
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
dgecf
gfbea
A
000
000
22
2
11
1
(5.15)
Se o armazenamento for feito através do Esquema Coordenado teremos os
seguintes vetores: AC, IRN e ICN. O vetor AC contém os elementos da matriz que são
diferentes de zero. Os vetores IRN e ICN contém os índices das linhas e das colunas,
respectivamente, de cada um dos elementos diferentes de zero da matriz A.
Então o esquema de armazenamento coordenado para a matriz não simétrica
(5.15) será:
[ ]222111 gfegfedcbaAC = (5.16)
[ ] 4342214321IRN = (5.17)
[ ] 2214344321ICN = (5.18)
Se considerarmos a matriz descrita em (5.15) simétrica, isto é, 21 ee = , 21 ff = e
21 gg = , então o esquema de armazenamento coordenado será o seguinte :
[ ]111 gfedcbaAC = (5.19)
[ ] 2214321IRN = (5.20)
[ ] 4344321ICN = (5.21)
57
Seja o armazenamento da matriz não simétrica (2.15) seguindo o Esquema CSC.
Então teremos:
[ ]dgecfgfbeaAMAT 211222= (5.22)
[ ] 4213243241 ROWIND = (5.23)
[ ] 118631COLSTR = (5.24)
5.5 – Rotina MA27 (HSL)
A Harwell Subroutine Library (HSL) [21] apresenta uma coleção de rotinas
escritas na linguagem Fortran para computação científica de grande porte. A rotina
MA27, que integra essa coleção, resolve sistemas de equações lineares simétricos e
esparsos do tipo:
RHSAX = (5.25)
onde:
A é uma matriz quadrada de ordem n , esparsa, simétrica e não
necessariamente definida.
RHS matriz que contém os nrhs vetores c que compõem o lado direito.
X é a matriz que contém as nrhs soluções.
1≥nrhs .
A rotina MA27, desenvolvida a partir da MA17 e escrita na linguagem Fortran,
foi implementada em 1982 por Duff e Reid, e foi o primeiro código a utilizar a técnica
multifrontal. Em 1993 os mesmos autores da MA27 desenvolveram a MA47 também
baseada no Método Multifrontal, porém a MA47 não apresentava um bom desempenho
em determinadas situações. Por este motivo nunca foi considerada sucessora da MA27
[18].
58
Em 2000, Duff anuncia o desenvolvimento da MA57, a rotina sucessora da
MA27. Dentre as atualizações dessa nova rotina podem ser citadas a utilização das
rotinas BLAS Nível 3 (Basic Linear Álgebra Program) e o fim do uso de blocos
COMMON da linguagem FORTRAN [18].
Durante a fase de análise na MA27, os pivôs poderão ser selecionados
considerando-se apenas o padrão de esparsidade caso a matriz seja definida positiva. Se
a matriz for indefinida, a ordem de pivoteamento pode ser modificada durante a
fatoração de tal forma que obedeça a um critério de estabilidade.
Para a seleção da seqüência de pivoteamento que assegure a preservação da
esparsidade é utilizado o algoritmo de grau mínimo.
A MA27 permite que, após a realização das etapas de análise e de fatoração, a
etapa de solução possa ser chamada repetidamente para resolver o sistema usando
diferentes vetores c .
Vejamos três esquemas possíveis para utilizar a MA27:
1) Apenas um tipo de matriz A e somente um vetor b . Nesse caso para resolver
o problema a rotina utiliza apenas uma etapa de análise (representado por An ), uma
etapa de fatoração (representado por Ft ) e uma etapa de solução (representado por
Sol ).
cAx = SolFtAn || (5.26)
2) Diferentes matrizes A , porém apresentando o mesmo padrão de esparsidade.
A rotina utiliza apenas uma etapa de análise ( An ), e sucessivas etapas de fatoração e
solução.
111 cxA =
222 cxA =
333 cxA =
SolFtSolFtSolFtAn |||||| (5.27)
59
3) Mesma matriz A e diferentes vetores b . Apenas uma etapa de análise, uma
etapa de fatoração e sucessivas etapas de solução.
11 cAx =
22 cAx =
33 cAx =
SolSolSolFtAn |||| (5.28)
O sistema gerado pelo FAIPA e que é descrito no Capítulo 2, pode ser
considerado simétrico. O esquema (5.28) será utilizado para a solução dos sistemas
internos ao FAIPA.
A implementação da rotina MA27 fez-se necessário para que o FAIPA pudesse
resolver sistemas com um número elevado de variáveis com o aproveitamento da
esparsidade.
5.6 – Rotina MA28 (HSL)
A MA28 integra também a coleção de rotinas escritas na linguagem Fortran para
computação científica de grande porte da Harwell Subroutine Library (HSL) [21]. A
rotina MA28 difere da MA27 no fato de ter sido desenvolvida para resolver sistemas de
equações não lineares assimétricos e esparsos. Esses sistemas são do tipo:
RHSAX = (5.29)
Onde:
A é uma matriz quadrada de ordem n , esparsa, não simétrica.
RHS contém os nrhs vetores c que compõem o lado direito.
X é a matriz que contém as nrhs soluções.
1≥nrhs .
60
A MA28 também permite que, após a realização das etapas de análise e de
fatoração, a etapa de solução possa ser chamada repetidamente para resolver o sistema
usando diferentes vetores c .
O sistema gerado pelo FAIPA, descrito no Capítulo 2, é originalmente
assimétrico. O esquema (5.26) será utilizado para a solução dos sistemas internos ao
FAIPA.
A implementação da rotina MA28 fez-se necessário para que o FAIPA pudesse
resolver sistemas não simétricos com um número elevado de variáveis com o
aproveitamento da esparsidade.
5.7 – Rotina SSTSTRF/S (CRAY SV1)
Desenvolvida para o sistema operacional UNICOS (derivado do sistema
operacional UNIX System V) do CRAY SV1, a rotina SSTSTRF/S é formada por duas
subrotinas principais: a SSTSTRF e a SSTSTRS [4].
Considerando o sistema descrito em (5.29), a rotina SSTSTRF/S realiza através
do método direto a resolução dos sistemas considerando as matrizes esparsas com
simetria de posição. Essa rotina apresenta, basicamente, quatro fases de execução [4]:
1) Reordenamento;
2) Fatoração Simbólica;
3) Determinação da seqüência de execução dos nós e do armazenamento exigido
para as matrizes frontais;
4) Fatoração numérica.
A rotina SSTSTRS resolve o sistema após a fatoração realizada pela SSTSTRF.
Na etapa de solução é possível resolver o sistema utilizando diferentes vetores que
compõem a matriz RHS , descrita em (5.29).
A implementação dessa rotina foi realizada para um melhor desempenho do
FAIPA em ambiente de alto desempenho, pois a SSTSTRF/S foi desenvolvida para
aproveitar ao máximo o ambiente de computação paralela e vetorial do CRAY SV1.
61
5.7 – Rotina SGETRF/S (LAPACK)
As rotinas LAPACK estão escritas em linguagem Fortran77 e permitem resolver
sistemas de equações lineares. Estão disponíveis rotinas para matrizes densas e de
banda, porém não existem opções para matrizes esparsas [4].
A rotina SGETRF/S é formada por duas subrotinas principais: a SGETRF e a
SGETRS.
Considerando o sistema:
RHSAX = (5.30)
Onde:
A é uma matriz densa quadrada de ordem n .
RHS contém os nrhs vetores c que compõem o lado direito.
X é a matriz que contém as nrhs soluções.
1≥nrhs .
Considerando o sistema descrito em (5.30), a rotina SGETRF realiza uma
fatoração LU utilizando pivoteamento com permutação de linhas.
A rotina SGETRS resolve o sistema após a fatoração realizada pela SGETRF.
Nessa etapa é possível resolver o sistema utilizando diferentes vetores que compõem a
matriz RHS .
O fato de poder ser utilizada tanto em máquinas seqüenciais como em um
computador de alto desempenho, como o CRAY SV1, tornou essa rotina muito mais
interessante, pois permitiu um melhor desempenho do FAIPA, ao resolver sistemas
densos, nos dois tipos de ambiente computacional.
62
CAPÍTULO 6
Resultados Numéricos
6.1 – Introdução
No presente capítulo, inicialmente é descrita a ferramenta CUTEr utilizada para
auxiliar na realização de testes numéricos com o FAIPA. Foram resolvidos alguns
problemas sem restrições e com restrições que indicam a funcionalidade da interface
CUTEr junto ao FAIPA.
Em seguida é feita a apresentação do problema HS43_NF que também auxiliará
na tarefa de realizar testes numéricos e foi escrito na linguagem FORTRAN 90.
Na etapa seguinte, através do problema HS43_NF, realizaram-se testes para
verificação do desempenho das rotinas MA27 e MA28 quando implementadas no
FAIPA. Essas rotinas permitem a resolução de sistemas lineares esparsos de grande
porte.
Logo depois, estão os resultados da Nova Técnica de Atualização Quase-Newton
Diagonal. Foram feitas comparações com as atualizações BFGS e de Memória
Limitada. Mostraremos os gráficos com as iterações do FAIPA quando este usou cada
uma das técnicas. Nessa etapa foram utilizados problemas de Hock e Schittkowski [28]
escritos na Linguagem Matlab.
Por fim, para a obtenção de resultados com problemas maiores através da
interface CUTEr ou com o HS43_NF, utilizou-se um computador AMD Atlon 1800
MHz com 1.5Gb de Memória RAM e, principalmente, o computador CRAY SV1 com
12 processadores e 16Gb de memória RAM. O acesso ao computador CRAY SV1 foi
63
feito através do NACAD-COPPE/UFRJ (Núcleo de Atendimento em Computação de
Alto Desempenho).
6.2 – CUTEr
O CUTEr (Constrained and Unconstrained Testing Environment revisited) [17]
é uma ferramenta que auxilia no projeto e desenvolvimento de softwares em otimização.
Para utilizar essa ferramenta são necessárias duas etapas: a decodificação e
criação da interface.
A plataforma de decodificação CUTEr é disponível para sistemas operacionais
UNIX e LINUX. No presente trabalho utilizou-se o sistema operacional LINUX durante
a etapa de decodificação.
A interface é um conjunto de rotinas escritas em FORTRAN 77 e FORTRAN 90
que devem ser adaptadas ao algoritmo de otimização para fornecer os dados referentes
aos problemas testes.
Os problemas testes disponíveis para a utilização na plataforma CUTEr durante
a etapa de decodificação estão escritos na linguagem SIF (Standard Input Format). A
plataforma CUTEr decodifica os arquivos SIF. O formato SIF é baseado na estrutura
chamada Separabilidade Parcial em Grupo. Uma função é dita parcialmente separável
em grupos se:
1) Puder ser escrita sob a forma:
( ) ( )( )∑=
=ng
iii xgxf
1
α (6.1)
onde ng é o número de grupos.
2) Cada função de grupo ( )αig for duas vezes continuamente diferenciável na
variável α .
64
3) A função
( ) [ ]( )∑∈
−+=ij
iti
jjjii bxaxyx
τ
ωα , (6.2)
é conhecida como i-ésimo grupo.
4) Cada um dos índices iτ é um subconjunto de ,,1 neK , onde ne é o número
de funções elemento não linear.
5) Cada função elemento não linear jy for duas vezes continuamente
diferenciável na variável [ ]jx .
6) O gradiente ia de cada função elemento linear iti bxa − é, em geral, esparsa.
7) Os ji,ω são conhecidos como peso.
O decodificador do CUTEr é utilizado para realizar a conversão do arquivo,
relativo a cada problema que está no formato SIF, para um conjunto de arquivos no
formato de dados (.dat) e Fortran77 (.f).
Uma interface entre o FAIPA e os arquivos gerados após a decodificação foi
escrita para que os problemas disponíveis na biblioteca CUTEr pudessem ser
otimizados.
A interface consiste em dois conjuntos distintos de arquivos. Um dos conjuntos
apresenta arquivos fixos, escritos na linguagem Fortran 77, que farão a manipulação dos
dados relativos a cada problema de otimização com restrições ou sem restrições. O
outro conjunto de arquivos será alterado para cada problema e depende do processo de
decodificação. Neste último conjunto, além dos arquivos em Fortran 77 há também um
arquivo dat que contém dados do problema, por exemplo, o ponto x inicial.
65
Para problemas sem restrições os arquivos fixos utilizados são os seguintes:
unames.f Obtêm o nome do problema e suas variáveis.
usetup.f Obtêm do arquivo dat os dados do problema que será minimização.
ufn.f Fornece o valor da função.
ugr.f Fornece o valor do gradiente da função.
Para problemas com restrições os arquivos fixos utilizados são os seguintes:
cnames.f Obtêm o nome do problema e suas variáveis.
csetup.f Obtêm do arquivo dat os dados do problema que será minimização.
cfn.f Fornece o valor da função e das restrições.
cgr.f Fornece o valor do gradiente da função e das restrições.
Para cada problemas, os arquivos gerados após a decodificação são os seguintes:
elfun.f Fornece valores das funções elemento não linear e respectivas derivadas.
group.f Fornece valores das funções de grupo e respectivas derivadas.
range.f Transforma variáveis elementares em internas.
outsdif.dat Contêm os dados do problema que será minimização.
66
6.3 – Resultados Numéricos – Interface FAIPA_CUTEr
Para verificar a funcionalidade da interface FAIPA_CUTEr foram
disponibilizados vários problemas sem restrições e com restrições.
Serão apresentados inicialmente nas Tabelas 6.1(a), 6.1(b) e 6.1(c) os resultados
de problemas resolvidos através do FAIPA com a interface de problemas teste CUTEr.
Nessa etapa a configuração do FAIPA utilizada foi a seguinte: atualização BFGS e
LAPACK Denso. A coluna nprob indica o número do problema na interface.
nprob nome variáveis restrições nbox )( xf iterações f eval.
101 HS01 2 0 1 1.24518E-05 37 69
103 HS03 2 0 1 4.65462E-10 17 18
104 HS04 2 0 2 2.6667E+00 6 7
105 HS05 2 0 4 -1.9232E+00 6 8
106 HS06 2 1 0 7.8888E-29 10 12
107 HS07 2 1 0 -1.7321E+00 15 35
108 HS08 2 2 0 -1.0000E+00 7 9
109 HS09 2 1 0 -5.0000E-01 6 7
110 HS10 2 1 0 -1.0000E+00 8 9
111 HS11 2 1 0 -8.4984E+00 11 13
112 HS12 2 1 0 -3.0000E+01 8 12
113 HS13 2 1 2 1.0010E+00 28 30
115 HS15 2 2 1 3.6038E+02 10 11
117 HS17 2 2 3 1.0000E+00 11 12
118 HS18 2 2 4 5.0000E+00 10 11
119 HS19 2 2 4 -6.9618E+03 16 22
121 HS21 2 1 4 -9.9960E+01 11 13
122 HS22 2 2 0 1.0000E+00 8 10
123 HS23 2 5 4 2.000E+00 11 12
124 HS24 2 3 2 -1.000E+00 15 18
126 HS26 3 1 0 2.8124E-07 20 45
127 HS27 3 1 0 4.0000E-02 20 30
Tabela 6.1(a): Problemas HS – FAIPA_CUTEr.
67
nprob nome variáveis restrições nbox )( xf iterações f eval.
128 HS28 3 1 0 0.0000E+00 4 6
129 HS29 3 1 0 -2.2627E+00 11 12
130 HS30 3 1 6 1.0000E+00 10 12
131 HS31 3 1 6 6.0000E+00 10 12
132 HS32 3 2 3 1.0000E+00 8 9
133 HS33 3 2 4 -4.5857E+00 14 17
134 HS34 3 2 6 -8.34032E-01 13 16
135 HS35 3 1 3 1.1111E-01 8 10
136 HS36 3 1 6 -3.3000E+03 14 18
137 HS37 3 2 6 -3.4560E+03 17 20
138 HS38 4 0 8 1.0357E-10 19 32
139 HS39 4 2 0 -1.0000E+00 14 14
140 HS40 4 3 0 -2.5000E-01 7 8
141 HS41 4 1 8 1.9259E+00 14 15
142 HS42 4 2 0 1.3858E+01 9 12
143 HS43 4 3 0 -4.4000E+01 12 16
144 HS44 4 6 4 -1.5000E+01 21 27
145 HS45 5 0 10 1.000E+01 24 25
147 HS47 5 3 0 1.36007E-10 29 72
148 HS48 5 2 0 1.60237E-29 4 11
149 HS49 5 2 0 7.0712E-06 17 23
150 HS50 5 3 0 3.23904E-12 17 32
151 HS51 5 3 0 0.0000E+00 3 7
152 HS52 5 3 0 5.3266E+00 6 9
153 HS53 5 3 10 4.0930E+00 7 9
156 HS56 7 4 0 -3.4560E+00 15 22
159 HS59 2 3 4 -6.7495E+00 17 18
160 HS60 3 1 6 3.2568E-02 10 13
163 HS63 3 2 3 9.6172E+02 11 14
164 HS64 3 1 3 6.2998E+03 21 23
165 HS65 4 2 6 9.5353E-01 14 15
166 HS66 4 2 6 5.18163E-01 9 10
171 HS71 4 2 8 1.7014E+01 11 13
172 HS72 4 2 8 7.2767E+02 34 40
173 HS73 4 3 4 2.9894E+01 17 19
Tabela 6.1(b): Problemas HS - FAIPA_CUTEr.
68
nprob nome variáveis restrições nbox )( xf iterações f eval.
174 HS74 4 5 8 5.1265E+03 13 14
175 HS75 4 5 8 5.1744E+03 32 37
176 HS76 4 3 4 -4.6818E+00 10 11
177 HS77 5 2 0 2.4151E-01 16 24
178 HS78 5 3 0 -2.9197E+00 8 10
179 HS79 5 3 0 7.8777E-02 12 14
180 HS80 5 3 10 5.3950E-02 8 9
181 HS81 5 3 10 5.3950E-02 10 12
183 HS83 5 6 10 -3.0665E+04 15 18
184 HS84 5 6 10 -5.2803E+06 21 22
186 HS86 5 10 5 -3.2349E+01 18 24
193 HS93 6 2 6 1.3508E+02 12 14
195 HS95 6 4 12 1.5619E-02 8 10
196 HS96 6 4 12 1.5619E-02 8 10
197 HS97 6 4 12 3.1358E+00 18 21
198 HS98 6 4 12 3.1358E+00 28 35
199 HS99 7 2 14 -8.3108E+08 13 27
200 HS100 7 4 0 6.8063E+02 15 17
204 HS104 8 6 16 3.9511E+00 28 29
207 HS107 9 6 8 5.0550E+03 16 21
208 HS108 9 13 1 5.0000E-01 14 17
210 HS110 10 0 20 -4.5778E+01 7 8
212 HS112 10 3 10 -4.6414E+01 19 20
218 HS118 15 29 30 6.6270E+02 45 54
Tabela 6.1(c): Problemas HS - FAIPA_CUTEr.
69
6.4 - Apresentação do Problema HS43_NF
Para testar as implementações no FAIPA, alterou-se o problema HS43 [28] para
permitir a mudança do número de variáveis e de restrições de tal forma a obtermos um
problema com um número elevado de variáveis.
O problema HS43 original tem 4 variáveis e 3 restrições. O novo problema, que
denominamos de HS43_NF, poderá ter o seu número de variáveis e de restrições
expandido por um valor nf definido pelo usuário.
Seja o problema HS43 original com restrições:
432124
23
22
21 721552)( xxxxxxxxxf +−+−+++= (6.3)
)8()( 432124
23
22
211 xxxxxxxxxg +−+−−−−−−= (6.4)
)2210()( 4124
23
22
212 xxxxxxxg ++−−−−−= (6.5)
)225()( 42123
22
213 xxxxxxxg ++−−−−−= (6.6)
Então, o problema HS43_NF pode ser definido da seguinte maneira:
( ) ∑=
−−−−−− +−+−+++=nf
iiiiiiiii xxxxxxxxxf
14142434
24
214
224
234 721552 (6.3)
Com restrições:
( ) )8( 414243424
214
224
23423 jjjjjjjjj xxxxxxxxxg +−+−−−−−−= −−−−−−− (6.4)
( ) )2210( 43424
214
224
23413 jjjjjjj xxxxxxxg ++−−−−−= −−−−− (6.5)
( ) )225( 424342
142
242
343 jjjjjjj xxxxxxxg ++−−−−−= −−−−− (6.6)
onde j = 1, ... nf .
70
6.5 – Resultados Numéricos – Comparação entre diferentes resolvedores internos
ao FAIPA.
Utilizou-se o problema HS43_NF para auxiliar na comparação entre os solvers
que resolvem em cada iteração os sistemas internos ao FAIPA. O solver, que
chamaremos de Denso Original, foi programado inicialmente no FAIPA e utiliza o
Método Direto para resolver sistemas densos não simétricos. Foi feita uma comparação
deste com os solvers MA27 e MA28.
Os resultados obtidos foram os seguintes:
FAIPA nf variáveis restrições tempo (s) ordem do sistemaDenso Original 174
MA28 59 MA27
100 400 300 17
700
Denso Original 770
MA28 210 MA27
150 600 450 62
1050
Denso Original 2334
MA28 545 MA27
200 800 600 141
1400
Denso Original 9158
MA28 1980 MA27
300 1200 900 464
2100
Denso Original 97215
MA28 9826 MA27
500 2000 1500 2238
3500
Denso Original -
MA28 84240 MA27
1000 4000 3000 19372
7000
Tabela 6.2: Problemas HS43_NF
De posse desses valores, foi possível obter os gráficos 6.1 e 6.2. No gráfico 6.1
estão plotados os tempos para a resolução de cada problema de acordo com o valor de nf
escolhido considerando os diferentes resolvedores implementados no FAIPA. O gráfico
71
6.2 indica o número de vezes em que a solução do problema com a MA27 é mais rápida
em relação aos outros resolvedores considerando a resolução, através do FAIPA, do
problema HS43_NF.
Com o solver Denso Original não foi possível resolver o problema com nf 1000.
HS43_NF
10
100
1000
10000
100000
0 100 200 300 400 500 600 700 800 900 1000 1100
NF
tem
po (s
)
OriginalMA28MA27
Gráfico 6.1
05
10
15202530
354045
0 100 200 300 400 500 600 700 800 900 1000 1100
NF
Original / MA27
MA28 / MA27
Gráfico 6.2
72
6.6 – Resultados Numéricos – FAIPA Quase-Newton Esparso.
Com a implementação da nova técnica de atualização esparsa feita na linguagem
Matlab, os resultados obtidos foram comparados com o FAIPA nas opções de
atualização de B através dos métodos Esparso, Memória Limitada, Quase-Newton, e
também considerando B sempre igual a matriz Identidade. Foram utilizados problemas
de Schittkowski [28]. Considerou-se igual a 7 a variável m que indica o número de
pares de vetores ks e ky utilizados na técnica de Memória Limitada. No entanto, na
técnica de atualização esparsa, considerou-se a variável m igual a 5.
Diagonal Mem. Lim. BFGS B=Identidade Prob. nvar ncstr Função iter. Função iter. Função iter. Função iter.HS01 2 0 7,1224E+00 300 1,3833E-05 37 2,0060E-07 36 8,3188E+00 300HS02 2 0 8,1451E-01 300 5,0427E-02 15 5,0428E-02 16 9,5098E-01 300HS03 2 0 3,0579E-04 300 3,6499E-04 14 3,5879E-04 15 9,8812E-04 300HS04 2 0 2,6667E+00 4 2,6667E+00 4 2,6667E+00 4 2,6667E+00 5 HS05 2 0 -1,913E+00 6 -1,913E+00 4 -1,913E+00 4 -1,913E+00 6 HS06 2 1 1,6798E-15 14 7,1808E-13 10 2,3268E-07 9 1,4402E-06 14 HS07 2 1 -1,732E+00 12 -1,732E+00 11 -1,732E+00 11 -1,732E+00 23 HS08 2 2 -1,000E+00 9 -1,000E+00 9 -1,000E+00 9 -1,000E+00 9 HS09 2 1 -4,999E-01 6 -5,000E-01 5 -5,000E-01 5 -4,999E-01 92 HS10 2 1 -1,000E+00 9 -1,000E+00 7 -1,000E+00 7 -1,000E+00 9 HS11 2 1 -8,498E+00 6 -8,498E+00 6 -8,498E+00 6 -8,498E+00 13 HS12 2 1 -2,999E+01 4 -3,000E+01 4 -3,000E+01 4 -2,998E+01 4 HS13 2 1 1,0021E+00 21 - - 1,0004E+00 14 - - HS14 2 2 1,3935E+00 6 1,3935E+00 7 1,3935E+00 7 1,3935E+00 6 HS15 2 2 3,0652E+02 6 3,0651E+02 6 3,0656E+02 6 3,0650E+02 7 HS16 2 2 2,4914E-01 51 2,5012E-01 18 2,5249E-01 18 2,5892E-01 21 HS17 2 2 1,0001E+00 15 1,0000E+00 19 1,0000E+00 20 1,0000E+00 28 HS18 2 2 5,0000E+00 14 5,0000E+00 12 5,0001E+00 13 5,0001E+00 49 HS19 2 2 -6,961E+03 83 -6,961E+03 76 -6,961E+03 114 -6,961E+03 65 HS20 2 3 3,8199E+01 9 3,8199E+01 10 3,8199E+01 9 3,8199E+01 9 HS21 2 1 -9,996E+01 4 -9,996E+01 4 -9,996E+01 4 -9,995E+01 7 HS22 2 2 1,0000E+00 9 1,0000E+00 10 1,0000E+00 10 1,0000E+00 9 HS23 2 5 2,0000E+00 9 2,0000E+00 9 2,0000E+00 9 2,0000E+00 9 HS24 2 3 -1,000E+00 4 -1,000E+00 4 -1,000E+00 4 -1,000E+00 4
Tabela 6.3 - Problemas HS.
73
Diagonal Mem.Lim. BFGS B=Identidade Prob. nvar ncstr Função iter. Função iter. Função iter. Função iter.HS25 3 0 7,600E-05 31 1,057E-01 15 1,072E-05 14 2,7687E+00 200HS26 3 1 9,141E-05 41 1,543E-02 17 1,144E-06 17 1,047E-05 38 HS27 3 1 4,000E-02 34 4,000E-02 22 4,000E-02 19 6,176E-02 300HS28 3 1 1,829E-08 42 6,160E-28 4 0,000E+00 4 8,9726E-09 26 HS29 3 1 -2,26E+01 14 -2,26E+01 11 -2,26E+01 11 -2,262E+01 41 HS30 3 1 1,000E+00 6 1,000E+00 6 1,000E+00 6 1,0000E+00 6 HS31 3 1 6,000E+00 12 6,000E+00 9 6,000E+00 9 6,0000E+00 61 HS33 3 2 -4,58+00 10 -4,58E+00 14 -4,58E+00 14 -4,58E+00 21 HS34 3 2 -8,34E-01 9 -8,34E-01 12 -8,34E-01 12 -8,34E-01 48 HS35 3 1 1,111E-01 9 1,111E-01 6 1,111E-01 6 1,111E-01 12 HS36 3 1 -3,30E+03 10 -3,30E+07 13 -3,30E+03 12 -3,30E+03 11 HS37 3 2 -3,45E+03 11 -3,45E+07 16 -3,45E+03 14 -3,45E+03 78 HS38 4 0 7,729E-05 43 1,543E-03 15 8,178E-05 16 4,486E+00 300HS39 4 2 -1,00E+00 14 -1,00E+00 13 -1,00E+00 13 -1,00E+00 25 HS40 4 3 -2,50E-01 7 -2,50E-01 6 -2,50E-01 6 -2,50E-01 10 HS41 4 1 1,925E+00 16 1,925E+00 12 1,925E+00 12 1,926E+00 62 HS42 4 2 1,385E+01 6 1,385E+01 8 1,385E+01 8 1,385E+01 26 HS43 4 3 -4,400+01 10 -4,40E+01 9 -4,40E+01 9 -4,40E+01 32 HS44 4 6 -1,30E+01 17 -1,50E+01 20 -1,50E+01 20 -1,30E+01 19 HS45 5 0 1,00E+00 10 1,000E+00 22 1,000E+00 22 1,000E+00 30 HS46 5 2 2,474E-06 30 1,271E-05 27 2,844E-10 31 1,087E-05 300HS47 5 3 9,168E-07 20 4,387E-09 12 2,117E-11 12 2,402E-06 42 HS48 5 2 4,407E-10 12 2,095E-27 3 2,588E-31 3 4,497E-10 12 HS49 5 2 3,650E-06 8 5,677E-01 10 6,186E-05 10 6,160E-05 214HS50 5 3 3,505E-06 15 3,845E-03 13 2,857E-05 11 2,151E-05 13 HS51 5 3 3,475E-06 4 2,465E-32 3 9,860E-32 3 3,456E-06 6 HS52 5 3 5,326E+00 7 5,326E+00 5 5,326E+00 5 1,194E+00 4 HS53 5 3 4,093E+00 7 4,093E+00 5 4,093E+00 5 4,093E+00 5 HS54 6 1 -4,33E-87 8 -5,19E-84 8 -4,33E-83 8 -1,54E-25 4 HS55 6 6 - - 6,333E+00 5 6,333E+00 5 6,333E+00 5 HS56 7 4 -3,45E+00 11 -3,45E+00 9 -3,45E+00 9 -3,45E+00 58 HS57 2 1 3,064E-02 6 2,846E-02 19 2,846E-02 22 3,064E-02 6 HS59 2 3 -7,80E+00 14 -7,80E+00 19 -7,80E+00 22 1,673E+02 86 HS60 3 1 3,257E-02 16 3,256E-02 9 3,256E-02 9 3,257E-02 33 HS61 3 2 -1,43E+02 9 -1,43E+02 10 -1,43E+02 10 -1,43E+02 37 HS62 3 1 -2,62E+04 4 -2,62+04 4 -2,62E+04 4 -2,62E+04 4
Tabela 6.4 - Problemas HS.
74
Diagonal Mem.Lim. BFGS B=Identidade prob. nvar ncstr Função iter. Função iter. Função iter. Função iter.HS63 3 2 9,6172E+02 13 9,6172E+02 9 9,6172E+02 9 9,6172E+02 12 HS64 3 1 6,2999E+03 15 6,2999E+03 25 6,2999E+03 27 6,7245E+03 92 HS65 3 1 9,5357E-01 18 9,5353E-01 13 9,5356E-01 13 9,5358E-01 20 HS66 3 2 5,1816E-01 10 5,1817E-01 10 5,1817E-01 10 5,1820E-01 61 HS68 4 2 -9,204E-01 21 -9,204E-01 18 -9,203E-01 19 -9,203E-01 120HS69 4 2 -9,567E+02 21 -9,567E+02 11 -9,567E+02 11 -9,570E+02 300HS70 4 1 - - 7,4992E-03 32 7,4995E-03 39 - - HS71 4 2 1,7014E+01 17 1,7014E+01 16 1,7014E+01 16 1,7014E+01 11 HS72 4 2 - - 7,2768E+02 79 7,2768E+02 153 - - HS73 4 3 2,9894E+01 19 2,9894E+01 17 2,9894E+01 17 2,9895E+01 15 HS74 4 5 5,1265E+03 70 5,1265E+03 71 5,1265E+03 262 - - HS75 4 5 5,1744E+03 41 5,1745E+03 39 5,1745E+03 50 5,1744E+03 154HS76 4 3 -4,681E+00 10 -4,681E+00 8 -4,681E+00 8 -4,681E+00 8 HS77 5 2 2,4151E-01 14 2,4151E-01 17 2,4151E-01 19 2,4151E-01 28 HS78 5 3 -2,919E+00 13 -2,919E+00 7 -2,919E+00 7 -2,919E+00 18 HS79 5 3 7,8777E-02 16 7,8777E-02 10 7,8777E-02 10 7,8786E-02 16 HS80 5 3 5,3950E-02 10 5,3950E-02 8 5,3950E-02 8 5,3993E-02 16 HS81 5 3 5,3950E-02 15 5,3950E-02 10 5,3950E-02 10 5,3988E-02 18 HS83 5 6 -3,066E+04 12 -3,066E+04 13 -3,066E+04 13 -3,066E+04 12 HS84 5 6 -5,280E+06 4 -5,280E+06 4 -5,280E+06 4 -5,280E+06 4 HS86 5 10 -3,234E+01 27 -3,234E+01 13 -3,234E+01 13 -3,234E+01 58 HS93 6 2 1,3508E+02 9 1,3508E+02 7 1,3508E+02 7 1,3508E+02 78 HS95 6 4 1,5620E-02 4 1,5620E-02 4 1,5620E-02 4 1,5620E-02 4 HS96 6 4 1,5620E-02 10 1,5624E-02 7 1,5624E-02 7 1,5671E-02 6 HS97 6 4 3,1359E+00 9 3,1358E+00 8 3,1358E+00 8 3,1359E+00 9 HS98 6 4 3,1358E+00 35 3,1358E+00 37 4,0712E+00 31 3,1358E+00 249HS99 7 2 -8,310E+08 6 -8,310E+08 21 -8,310E+08 12 -8,221E+08 300HS100 7 4 6,8063E+02 9 6,8064E+02 17 6,8063E+02 11 6,8063E+02 94 HS101 7 6 1,8098E+03 26 1,8098E+03 39 1,8098E+03 22 1,8146E+03 300HS102 7 6 9,1189E+02 22 9,1188E+02 27 9,1188E+02 29 9,1335E+02 300HS103 7 6 5,4367E+02 18 5,4367E+02 22 5,4367E+02 18 5,6189E+02 300HS104 8 6 3,9512E+00 16 3,9512E+00 17 3,9512E+00 18 3,9512E+00 086HS105 8 1 1,1385E+03 67 1,1384E+03 63 1,1384E+03 54 1,1515E+03 300HS106 8 6 7,0493E+04 36 7,0493E+04 55 7,0493E+04 107 - - HS107 9 6 5,0550E+03 14 5,0550E+03 15 5,0550E+03 15 5,0551E+03 222
Tabela 6.5 - Problemas HS.
75
Diagonal Mem.Lim. BFGS B=Identidade Prob. nvar ncstr Função iter. Função iter. Função iter. Função iter.
HS108 9 13 -5,000E-01 14 -5,000E-01 20 -5,000E-01 20 6,4036E-11 15 HS109 9 10 5,3621E+03 8 5,3621E+03 8 5,3621E+03 8 5,3621E+03 8 HS110 10 0 -4,577E+01 5 -4,577E+01 4 -4,577E+01 4 -4,577E+01 4 HS111 10 3 -4,776E+01 21 -4,776E+01 34 -4,776E+01 35 -4,776E+01 300HS112 10 3 -4,774E+01 8 -4,771E+01 11 -4,770E+01 11 -4,770E+01 38 HS113 10 8 2,4267E+01 31 2,4267E+01 28 2,4267E+01 24 2,4268E+01 53 HS114 10 11 -1,768E+03 99 -1,768E+03 105 -1,768E+03 116 -1,5534+03 150HS116 13 15 9,7589E+01 33 9,7588E+01 65 9,7589E+01 53 4,8883E-05 49 HS117 15 5 3,2349E+01 30 3,2349E+01 56 3,2349E+01 50 3,2349E+01 73 HS118 15 29 6,6482E+02 30 6,6483E+02 51 6,6483E+02 46 6,6506E+02 300HS119 16 8 2,4490E+02 44 2,4490E+02 100 2,4490E+02 77 3,7452E+04 300
Tabela 6.6 - Problemas HS.
Quando utilizou-se a atualização esparsa para resolver os problemas HS01,
HS02 e HS03, a convergência foi muito lenta e extrapolou o limite de 300 iterações.
Para a resolução dos problemas HS07, HS26, HS46, HS49, HS77, HS106 e HS114 foi
necessário alterar os critérios de parada e o número de pares de vetores ks e ky . Com
os problemas HS55, HS70 e HS72 não foi possível encontrar a solução.
Do Gráfico 6.3 ao Gráfico 6.14 estão representados de uma forma mais clara as
informações das Tabelas 6.3, 6.4, 6.5 e 6.6. Nesses gráficos foram plotados as iterações
que o FAIPA efetuou para resolver os problemas HS utilizando diferentes configurações
para a atualização da matriz B: a BFGS, a Diagonal (Esparsa) e de Memória Limitada.
Através desses gráficos podemos perceber que a atualização esparsa apresenta na
grande maioria dos casos um bom comportamento com relação ao número de iterações
quando comparado com os demais métodos utilizados.
76
0
20
40
60
80
100
120It
eraç
ões
HS01 HS02 HS03 HS04 HS05 HS06 HS07 HS08 HS09 HS10
ESPM.LIMBFGS
Gráfico 6.3
0
20
40
60
80
100
120
Iter
açõe
s
HS11 HS12 HS13 HS14 HS15 HS16 HS17 HS18 HS19 HS20
ESPM.LIMBFGS
Gráfico 6.4
77
0
5
10
15
20
25
30
35
40
45It
eraç
ões
HS21 HS22 HS23 HS24 HS25 HS26 HS27 HS28 HS29 HS30
ESPM.LIMBFGS
Gráfico 6.5
0
5
10
15
20
25
30
35
40
45
Iter
açõe
s
HS31 HS32 HS33 HS34 HS35 HS36 HS37 HS38 HS39 HS40
ESPM.LIMBFGS
Gráfico 6.6
78
0
5
10
15
20
25
30
35It
eraç
ões
HS41 HS42 HS43 HS44 HS45 HS46 HS47 HS48 HS49 HS50
ESPM.LIMBFGS
Gráfico 6.7
0
5
10
15
20
25
30
Iter
açõe
s
HS51 HS52 HS53 HS54 HS55 HS56 HS57 HS59 HS60
ESPM.LIMBFGS
Gráfico 6.8
79
0
10
20
30
40
50
60
70
Iter
açõe
s
HS61 HS62 HS63 HS64 HS65 HS66 HS68 HS69 HS70
ESPM.LIMBFGS
Gráfico 6.9
0
50
100
150
200
250
300
Iter
açõe
s
HS71 HS72 HS73 HS74 HS75 HS76 HS77 HS78 HS79 HS80
ESPM.LIMBFGS
Gráfico 6.10
80
0
5
10
15
20
25
30
35
40
Iter
açõe
s
HS81 HS83 HS84 HS86 HS93 HS95 HS96 HS97 HS98 HS99
ESPM.LIMBFGS
Gráfico 6.11
0
10
20
30
40
50
60
70
Iter
açõe
s
HS100 HS101 HS102 HS103 HS104 HS105
ESPM.LIMBFGS
Gráfico 6.12
81
0
20
40
60
80
100
120It
eraç
ões
HS106 HS107 HS108 HS109 HS110 HS111
ESPM.LIMBFGS
Gráfico 6.13
0
20
40
60
80
100
120
Iter
açõe
s
HS112 HS113 HS114 HS116 HS117 HS118 HS119
ESPM.LIMBFGS
Gráfico 6.14
82
6.7 - Problema HS43_NF para auxiliar na comparação entre as Técnicas de
Atualização Diagonal, BFGS e Memória Limitada.
Os exemplos que utilizaram os resolvedores Denso Original, MA27 e MA28
rodaram em um computador AMD Atlon 1800 MHz com 1,5Gb de Memória RAM. Os
exemplos que utilizaram a rotina SSTSTRF/S rodaram no computador CRAY SV1 com
12 processadores e 16Gb de memória RAM. A medida de tempo (em segundos)
representa o tempo total a partir do início até finalizar a execução (tempo de parede).
nf variáveis restrições tempo(s) iterações solver Atualização da matriz B
9158 11 DensoOrig BFGS1980 11 MA28 BFGS
464 11 MA27 BFGS67 13 MA27 ESP
1475 13 SSTSTRFS BFGS
300 1200 900
29 14 SSTSTRFS ESP97215 12 DensoOrig BFGS9826 12 MA28 BFGS2238 12 MA27 BFGS
240 14 MA27 ESP6876 14 SSTSTRFS BFGS
500 2000 1500
51 16 SSTSTRFS ESP- - DensoOrig BFGS
84240 12 MA28 BFGS19372 12 MA27 BFGS1482 14 MA27 ESP
55312 16 SSTSTRFS BFGS
1000 4000 3000
153 17 SSTSTRFS ESPTabela 6.7 - Comparação entre diversas atualizações de B e diversos resolvedores.
Na Tabela 6.7 está a descrição do tamanho do problema e o tempo para encontrar a
solução. A coluna nf indica o valor escolhido para aumentar o tamanho do problema. A
atualização Quase-Newton clássica é representada pela sigla BFGS, enquanto a nova
técnica de atualização diagonal esparsa é representada pela sigla ESP.
O Gráfico 6.15 apresenta os dados da Tabela 6.7 tornando possível uma melhor
visualização do desempenho do FAIPA ao utilizar diferentes tipos de resolvedores e
diferentes técnicas de atualização da matriz Quase-Newton.
83
10
100
1000
10000
100000
300 500 1000
NF
Tem
po (s
)
MA28/BFGSSSTSTRFS/BFGSMA27/BFGSMA27/ESPSSTSTRFS/ESP
Gráfico 6.15 – Desempenho do FAIPA para resolver o problema HS43_NF
utilizando a atualização Esparsa e BFGS.
Considerando valores maiores de nf, a atualização BFGS deixa de ser viável
devido ao seu alto custo computacional. Nesses casos iremos comparar as técnicas
Diagonal e de Memória Limitada através do CRAY SV1. O FAIPA_Esparso nesse caso
usou o solver SSTSTRF/S enquanto o FAIPA com a opção Memória Limitada usou o
solver SGETRF/S do LAPACK. A redução no tempo quando se utiliza a técnica
diagonal esparsa é muito grande. Os dados dessa comparação estão na Tabela 6.8.
nf variáveis restrições iter F tempo(s) CPUtime(s)
1500 6000 4500 16 66000 32832 294636,4
2000 8000 6000 17 88000 13164 107678,7MemLim
3000 12000 9000 15 132000 83586 821123,2
1500 6000 4500 16 66000 257 1039,1
2000 8000 6000 16 88000 412 1118,6Diagonal
3000 12000 9000 13 132000 759 2121,5
Tabela 6.8 - Comparação entre as atualizações Diagonal Esparsa e Memória Limitada.
Destaque para os tempos para resolver o problema nf 3000.
84
6.8 - Problemas CUTEr para auxiliar na comparação entre as técnicas de
Atualização Diagonal e Memória Limitada.
As tabelas 6.9 e 6.10 apresentam problemas da coleção CUTEr. Os que integram
a Tabela 6.9 fazem parte também da coleção COPS [5]. Nessas duas tabelas, a primeira
coluna contém o código do problema na interface CUTEr e em seguida estão as colunas
com o nome, o número de variáveis e o número de restrições (igualdade e desigualdade
somadas). As colunas “LB” e “UB” contém restrições de caixa inferior (lower bound) e
superior (upper bound), respectivamente. A coluna “n-sys” contém os valores que
indicam a dimensão do sistema primal-dual do FAIPA. A coluna “f-cute” indica os
prováveis valores da função na solução segundo o CUTEr. Em alguns casos o valor da
função não é fornecido.
Esses problemas auxiliarão na comparação entre a Técnica de Atualização
Diagonal e a Técnica de Memória Limitada em problemas um número maior de
variáveis e/ou restrições.
A resolução de problemas com a Técnica de Atualização Diagonal utilizou a
rotina MA27 para resolver os sistemas internos do FAIPA.
A resolução de problemas com a Técnica de Memória Limitada utilizou a rotina
SSGETRF/S (LAPACK) para resolver os sistemas internos do FAIPA.
prob. nome variáveis restrições LB UB n-sys f-cute P-01 POLYGON 01 48 324 48 48 468 0,77974
P-02 POLYGON 02 98 1274 98 98 1568 0,7839
P-03 POLYGON 03 198 5049 198 198 5643 0,7847
P-05 CAMSHAPE 05 100 304 100 100 604 -4,2841
P-06 CAMSHAPE 06 200 604 200 200 1204 -4,2785
P-09 MINSURFO 09 2502 0 2502 0 5004 2.51488
P-13 MINSURFO 13 627 0 627 0 1254 -
P-14 ELEC 14 75 25 0 0 100 243,812
P-15 ELEC 15 150 50 0 0 200 1055,18
P-18 CHAIN 18 100 51 0 0 151 5,07226
P-19 CHAIN 19 200 101 0 0 301 5,06987
Tabela 6.9 – Problemas do CUTEr (COPS).
85
prob. nome variáveis restrições LB UB n-sys f-cute P-34 KSIP 34 20 1001 0 0 1021 0,57579
P-35 YAO 35 2000 2000 1 0 4001 197,705
P-37 BIGGSB1 37 5000 0 4999 4999 14998 0,015
P-47 GASOIL 47 1301 1298 3 0 2602 0,005236
P-48 CVXBQP1 48 100 0 100 100 300 227,25
P-49 BIGGSB1 49 100 0 99 99 298 0,015
P-53 SVANBERG 53 100 100 100 100 400 166,1972
P-54 GASOIL 54 2601 2598 3 0 5202 0,005236
P-55 CVXBQP1 55 1000 0 1000 1000 3000 -
P-56 BIGGSB1 56 1000 0 999 999 2998 0,015
P-57 GILBERT 57 1000 1 1 0 1002 482,0273
P-60 SVANBERG 60 1000 1000 1000 1000 4000 1671,43
Tabela 6.10 – Problemas do CUTEr.
Para uma melhor compreensão dos resultados, os problemas foram divididos em
quatro grupos.
O Grupo 1 é formado pelos problemas: ELEC 14, ELEC 15, CHAIN 18,
CHAIN 19, CAMSHAPE 05 e CAMSHAPE 06.
O Grupo 2 é formado pelos problemas: POLYGON 01, POLYGON 02,
POLYGON 03, MINSURFO 09 e MINSURFO 13.
O Grupo 3 é formado pelos problemas: KSIP 34, CVXBQP 48, BIGGSB1 49,
SVANBERG 53 e GILBERT 57.
O Grupo 4 é formado pelos problemas: YAO 35, BIGGSB1 37, GASOIL 54,
CVXBQP1 55, SVANBERG 60 e GASOIL 47.
86
Para cada problema será apresentado o número de iterações, o tempo (em
segundos) e o valor da função de acordo com a solução obtida com cada uma das
técnicas consideradas na comparação. De posse dos valores das iterações e do tempo de
cada problema, foram criados gráficos para visualizar melhor os resultados de cada
grupo de problemas.
As tabelas 6.11, 6.12, 6.13 e 6.14 apresentam os resultados obtidos com os
grupos 1, 2, 3 e 4 respectivamente. A coluna δ contém os valores desse parâmetro da
atualização diagonal considerado em cada problema.
Atualização Diagonal Memória Limitada
nome n_sys δ it. t (s) f it. t (s) f ELEC 14 100 1 119 6 243,813 183 2 243,813
ELEC 15 200 1 291 30 1055,18 458 20 1055,18
CHAIN 18 151 0,1 537 4 5,0772 1585 48 5,0732
CHAIN 19 301 0,1 679 21 5,0775 2000 369 5,0768
CAMSHAPE 05 604 0,01 19 1 -4,2841 35 181 -4,2840
CAMSHAPE 06 1204 0,01 7 1 -4,2782 10 404 -4,2769
Tabela 6.11 – Resultados obtidos com os problemas do Grupo 1.
Atualização Diagonal Memória Limitada
nome n_sys δ it. t (s) f it. t (s) f POLYGON 01 468 0,01 28 1 -0,77967 42 112 -0,77971
POLYGON 02 1568 0,01 30 10 -0,78368 25 2704 -0,78338
POLYGON 03 5643 0,01 37 56 -0,78453 18 18172 -0,78443
MINSURFO 09 5004 1 56 71 2,52 178 231600(*) 2,52705
MINSURFO 13 1254 1 195 18 2,5291 147 3131 2,5289
Tabela 6.12 – Resultados obtidos com os problemas do Grupo 2.
87
Atualização Diagonal Memória Limitada
nome n_sys δ it. t (s) f it. t (s) f KSIP 34 1021 0,1 21 3 0,57579 22 679 0,57581
CVXBQP1 48 300 0,1 15 0 227,250 89 41 227,253
BIGGSB1 49 298 0,1 819 3 0,01509 72 33 0,01508
SVANBERG 53 400 1 52 2 166,197 43 56 166,197
GILBERT 57 1002 1 71 25 482,027 77 1 482,027
Tabela 6.13 – Resultados obtidos com os problemas do Grupo 3.
Atualização Diagonal Memória Limitada
nome n_sys δ it. t (s) f it. t (s) f YAO 35 4001 0,1 30 224 227,074 - - -
BIGGSB1 37 14998 0,1 881 4632 0,01592 1 43000 (*) 0,6711
GASOIL 54 5202 0,01 380 4809 0,005241 37 43000 (*) 34,1902
CVXBQP1 55 3000 0,1 31 7 22522,5 116 43000 (*) 102553
BIGGSB1 56 2998 0,1 881 201 0,01592 919 415200 0,01582
SVANBERG 60 4000 0,1 311 717 1671,43 34 43000 (*) 1936,58
GASOIL 47 2602 0,01 179 486 0,005241 37 43000 (*) 34,1902
Tabela 6.14 – Resultados obtidos com os problemas do Grupo 4. Os tempos com a
indicação (*) atingiram o limite máximo de 12 horas.
Ao resolver os problemas da Tabela 6.11 ELEC 14 e ELEC 15 com a Técnica de
Atualização Diagonal, foi necessário um menor número de iterações em relação a
Técnica de Memória Limitada. Com os problemas CHAIN 18, CHAIN 19,
CAMSHAPE 05 e CAMSHAPE 06 a Técnica de Memória Limitada apresentou mais
iterações que a Técnica de Atualização Diagonal. A Técnica de Memória Limitada foi
mais rápida que a esparsa nos problemas ELEC 14 e 15, e mais demorada nos demais
problemas da Tabela 6.11.
88
Na Tabela 6.12 a Técnica de Atualização Diagonal foi mais rápida em todos os
casos. A Técnica de Memória Limitada ao resolver o MINSURFO 09 demorou mais de
dois dias para obter a solução, enquanto a Técnica Esparsa resolveu em 71 segundos.
Na Tabela 6.13 os problemas KSIP 34 e CVXBQP1 48 ao serem resolvidos com
a Técnica Esparsa apresentaram menos iterações e menor tempo. No entanto o
BIGGSB1 49 apresentou muitas iterações para atingir a solução, mesmo assim com
tempo menor que o obtido com Memória Limitada. A Técnica de Memória Limitada foi
bem mais rápida que a Atualização Diagonal ao resolver o GILBERT 57.
Na Tabela 6.14 a Técnica de Atualização Diagonal foi significativamente mais
rápida que a Memória Limitada. Com a Diagonal, nenhum dos problemas foi resolvido
com mais de duas horas. Com Memória Limitada considerou-se um limite de doze horas
para término da execução. A exceção foi o problema BIGGSB1 56, o qual foi permitido
obter a solução após cinco dias aproximadamente. O problema YAO 35, que não
apresenta ponto inicial viável, ao ser resolvido com Memória Limitada, um ponto viável
é obtido, porém a execução é encerrada sem apresentar nenhuma iteração.
Percebe-se que, com o aumento do tamanho dos problemas, a Técnica de
Memória Limitada exige um tempo cada vez maior que a Técnica de Atualização
Diagonal, tornando-a inviável em computadores seqüenciais.
Uma desvantagem da Técnica Quase-Newton Diagonal é a determinação do
valor δ mais adequado para cada problema. No entanto, a rapidez com a qual essa
técnica permite a atualização de B em problemas grandes, a torna interessante em
estudos que visam melhorar ainda mais a sua eficiência na resolução de problemas de
otimização de grande porte.
A seguir estão os gráficos que apresentam o número de iterações e o tempo (em
segundos) para cada problema.
Nesses gráficos, a indicação ESP se refere à Técnica de Atualização Diagonal,
enquanto que a indicação ML se refere à Técnica de Memória Limitada.
89
0200400600800
100012001400160018002000
Iter
açõe
s
ELEC 14
ELEC 15
CHAIN 1
8
CHAIN 19
CAMSHAPE 05
CAMSHAPE 06ESP
ML
Gráfico 6.16 – Comparação entre a Atualização Diagonal e Memória Limitada
considerando o número de iterações utilizando os problemas da Tabela 6.7
050
100150200250300350400450
Tem
po (s
)
ELEC 14
ELEC 15
CHAIN 1
8
CHAIN 19
CAMSHAPE 05
CAMSHAPE 06ESP
ML
Gráfico 6.17 – Comparação entre a Atualização Diagonal e Memória Limitada
considerando o tempo para atingir a solução, utilizando os problemas da Tabela 6.7
90
020406080
100120140160180200
Iter
açõe
s
POLYGON 01
POLYGON 02
POLYGON 03
MINSURFO 09
MINSURFO 13
ESP
ML
Gráfico 6.18 – Comparação entre a Atualização Diagonal e de Memória Limitada
considerando o número de iterações utilizando os problemas da Tabela 6.8
0500
100015002000250030003500400045005000
Tem
po (s
)
POLYGON 01
POLYGON 02
POLYGON 03
MINSURFO
09
MINSURFO
13
ESP
ML
Gráfico 6.19 – Comparação entre a Atualização Diagonal e Memória Limitada
considerando o tempo para atingir a solução, utilizando os problemas da Tabela 6.8
91
0100200300400500600700800900
Iter
açõe
s
KSIP 34
CVXBQP1 48
BIGGSB1 4
9
SVANBERG 53
GILBERT 57
ESP
ML
Gráfico 6.20 – Comparação entre a Atualização Diagonal e Memória Limitada
considerando o número de iterações utilizando os problemas da Tabela 6.9
0
100
200
300
400
500
600
700
Tem
po (s
)
KSIP 34
CVXBQP1 48
BIGGSB1 4
9
SVANBERG 53
GILBERT 57
ESP
ML
Gráfico 6.21 – Comparação entre a Atualização Diagonal e Memória Limitada
considerando o tempo para atingir a solução, utilizando os problemas da Tabela 6.9
92
0100
200300400
500600700
800900
1000
Iter
açõe
s
YAO 35
BIGGSB1 3
7
GASOIL 54
CVXBQP1 55
BIGGSB1 5
6
SVANBERG 60
GASOIL 47
ESP
ML
Gráfico 6.22 – Comparação entre a Atualização Diagonal e de Memória Limitada
considerando o número de iterações utilizando os problemas da Tabela 6.10
0
2000
4000
6000
8000
10000
12000
14000
16000
Tem
po (s
)
YAO 35
BIGGSB1 3
7
GASOIL 54
CVXBQP1 55
BIGGSB1 5
6
SVANBERG 60
GASOIL 47
ESP
ML
Gráfico 6.23 – Comparação entre a Atualização Diagonal e Memória Limitada
considerando o tempo para atingir a solução, utilizando os problemas da Tabela 6.10
93
CAPÍTULO 7
Conclusões e Propostas
Obteve-se uma atualização Quase-Newton que produz matrizes esparsas e
definidas positivas para que algoritmos de otimização, como o FAIPA, possam garantir
convergência. Além disso, a Técnica de Atualização Diagonal apresenta um reduzido
custo computacional e aumenta o número de elementos nulos da matriz do sistema
primal-dual do FAIPA, permitindo um melhor aproveitamento de solvers esparsos
reduzindo ainda mais o custo computacional ao resolver problemas de grande porte.
Em linguagem Matlab foram feitos os primeiros testes que confirmaram a
viabilidade da técnica, pois se obteve bons resultados, em problemas pequenos, quando
comparada com as técnicas de atualização BFGS e Memória Limitada. Em poucos
casos a convergência foi lenta (HS01, HS02 e HS03) ou não apresentou solução (HS55,
HS70 e HS72).
Simultaneamente a essa etapa, foi feita a implementação da ferramenta CUTEr
(basicamente em Linguagem FORTRAN 90) que permite resolver problemas pequenos,
médios e de grande porte juntamente com o FAIPA. Inicialmente foram resolvidos
problemas pequenos do tipo HS [28] para certificar-se de que a interface estava
funcionando e posteriormente auxiliar no fornecimento de problemas de grande porte.
Quando foi feita a comparação com problemas maiores (HS43_NF) as Tabelas 6.7
e 6.8 [22] indicaram uma superioridade da Técnica de Atualização Diagonal, com
relação a redução no tempo necessário para resolver cada problema, quando comparada
com as técnicas BFGS e Memória Limitada.
94
Na Tabela 6.8 [22] foram executados problemas maiores em ambiente de
computação de alto desempenho (CRAY SV1). O destaque dessa tabela é o valor nf =
3000 que gera um problema cujos sistemas lineares internos ao FAIPA apresentam
21000 equações. Ao utilizar Memória Limitada para resolver esse problema obteve-se a
solução em 83586 segundos, enquanto com a Técnica de Atualização Diagonal o tempo
foi de 759 segundos, em ambos os casos o número de iterações foram parecidos. Com o
BFGS Clássico, mesmo em ambiente de computação de alto desempenho, não foi
possível obter resultados com problemas desse porte.
Ao utilizar a ferramenta CUTEr com problemas amplamente utilizado para testar
algoritmos de otimização, como o FAIPA, preparou-se um conjunto de problemas para
comparar as Técnicas de Memória Limitada e a Técnica de Atualização Diagonal.
Nessa etapa foi utilizado um computador AMD 1800MHz 1.5Gb, pois o computador
CRAY SV1 estava desativado definitivamente.
Os resultados contidos nas Tabelas 6.11, 6.12 e 6.13 indicaram que a Técnica
Quase-Newton de Atualização Diagonal geralmente apresenta desempenho melhor no
que diz respeito ao tempo consumido para a resolução desses problemas, apresentando,
de modo geral, bons resultados quanto ao número de iterações.
Na Tabela 6.14 a Técnica de Atualização Diagonal destacou-se muito quanto à
rapidez para obter a solução em problemas com um número maior de equações. Nesse
conjunto de problemas a Técnica Diagonal não apresentou nenhuma situação em que
houvesse necessidade de mais de duas horas para encontrar a solução.
A Técnica de Memória Limitada se mostrou muito demorada quando se trata de
problemas com um número maior de equações como os apresentados na Tabela 6.14.
Em todos os problemas dessa tabela não é possível obter solução com um tempo inferior
a doze horas. Possivelmente a resolução de cada um desses problemas se prolongará por
um dia ou mais, haja vista que no problema SVANBERG 60 essa técnica demorou
aproximadamente cinco dias para encontrar a solução.
Apesar do bom desempenho apresentado pela Técnica de Atualização Diagonal,
alguns ajustes podem ser feitos para melhorar essa técnica. Dentre elas está o modo de
obtenção do parâmetro que precisa ser feita com uma técnica que funcione em todos os
casos.
95
A utilização de computadores de alto desempenho como o ALTIX SGI,
disponível a partir de junho de 2005 através do Núcleo de Atendimento em Computação
de Alto Desempenho (NACAD-COPPE/UFRJ), permitirá um melhor aproveitamento
das técnicas apresentadas nesse trabalho, uma vez que o computador CRAY SV1 foi
desativado em novembro de 2004.
96
CAPÍTULO 8
Referências Bibliográficas
[1] BURDAKOV, O. P., MARTÍNEZ, J. M. and PILOTTA, E. A., “A Limited-Memory
Multipoint Symmetric Secant Method for Bound Constrained Optimization”, Annals of
Operations Research, v. 117, pp. 51-70, Kluwer Academics Publishers, Netherdlands,
2003.
[2] BYRD R. H., NOCEDAL J., and SCHNABEL R. B., “Representations of Quasi-
Newton Matrices and Their use in Limited Memory Methods”, Mathematical
Programming v. 63, pp. 129-156, 1994.
[3] CANELAS, A., Técnicas de Ponto Interior para Sistemas de Equações e
Otimização Não-Linear, Tese de M.Sc., COPPE/UFRJ, Rio de Janeiro, RJ, Brasil,
2005.
[4] CRAYDOC, Scientific Libraries User’s Guide, Cray Inc., USA, 2002.
[5] DOLAN, E.D., MORÉ, J.J. and MUNSON, T.S., Benchmarking Optimization
Software with COPS 3.0, Technical Report ANL/MCS-TM-273, Argonne National
Laboratory, Illinois, USA, February, 2004.
97
[6] DUFF, I.S. and REID, J.K., The “Multifrontal Solution of Indefinite Sparse
Symmetric Linear Equations”, ACM Transactions on Mathematical Software v. 9, n. 3,
pp. 302-325, Sep. 1983.
[7] DUFF, I.S., ERISMAN, A.M. and REID, J.K., Directs Methods for Sparse
Matrices. Oxford, England, Oxford University Press, 1986.
[8] DUFF, I.S., Direct Methods, Technical Report RAL-TR-1998-054, Rutherford
Appleton Laboratory, 1998.
[9] DUFF, I.S., Matrix Methods, Technical Report RAL-TR-1998-076, Rutherford
Appleton Laboratory, 1998.
[10] DUBEUX, V.J.C., Técnicas de Programação Não-Linear para Otimização de
Grande Porte, Tese de D.Sc., COPPE/UFRJ, Rio de Janeiro, RJ, Brasil, 2005.
[11] DENNIS, J. E. and SCHNABEL, R. B., Numerical Methods for Unconstrained
Optimization and Nonlinear Equations. New York, Prentice-Hall, 1983.
[12] DONGARRA, J. J., DUFF, I. S., SORENSEN, D. C. and VORST, H. A., Solving
Linear Systems on Vector and Shared Memory Computers. Philadelphia, USA, SIAM,
1993.
[13] FLETCHER, R., “An Optimal Positive Definite Update for Sparse Hessian
Matrices”, SIAM Journal on Optimization, v. 5, n. 1, pp. 192-218, Feb. 1995.
[14] FLETCHER, R., GROTHEY, A. and LEYFFER, S., Computing Sparse Hessian
and Jacobian Approximations with Hereditary Properties, Tech. Report, Department of
Mathematics, University of Dundee, 1996.
[15] GEORGE, A. and LIU, J.W.H, Computer Solution of Large Sparse Positive
Definite Systems, Englewood Cliffs, New Jersey, Prentice-Hall, 1981.
98
[16] GOLDFELD, P., DUARTE, A. and HERSKOVITS, J., “A Limited Memory
Interior Points Technique for Nonlinear Optimization”. ECCOMAS 96, Paris, França,
September, 1996.
[17] GOULD, N.I.M., ORBAN, D. and TOINT, P.L., General CUTEr and SifDec
Documentation, England, 2002. http://hsl.rl.ac.uk/cuter-www
[18] GOULD, I.M. and SCOTT, J.A., A numerical evaluation of HSL packages for
direct-solution of large sparse, symmetric linear systems of equations, Technical Report
RAL-TR-2003-019, Rutherford Appleton Laboratory, 2003.
[19] GREENSTADT, J., “Variations on Variable Metric Methods”, Mathematics of
Computation, v. 24, pp.1-22, 1970.
[20] GRIEWANK, A. and TOINT, P.L., “Numerical Experiments with Partially
Separable Optimization Problems Quasi-Newton Matrices and Their use in Limited
Memory Methods”, Lecture Notes in Mathematics, v. 1066, pp. 203-220, Springer,
Berlin, 1984.
[21] HARWELL SUBROUTINE LIBRARY, A catalogue of subroutines (HSL 2000)
AEA Technology, Harwell, Oxfordshire, England, 2002.
[22] HERSKOVITS, J. N. and GOULART, E., “Sparse Quasi-Newton Matrix for Large
Scale Problems in Non-Linear Optimization”. XXV CILAMCE 2004, in CD, Recife,
Brasil, November, 2004.
[23] HERSKOVITS, J. N. and GOULART, E., “Sparse Quasi-Newton Matrices for
Large Scale Non-Linear Optimization” WCSMO6 - 6th World Congress on Structural
and Multidiciplirnary Optimization, in CD, Rio de Janeiro, Brazil, May 2005.
99
[24] HERSKOVITS, J., “A view on Nonlinear Optimization”, J. Herskovits (ed.),
Advances in Structural Optimization, pp. 71-116, Holland, KLUWER Academic
Publishers, June 1995.
[25] HERSKOVITS, J. and SANTOS, G., “Feasible Arc Interior Point Algorithms for
Nonlinear Optimization”. Fourth World Congress on Computational Mechanics, in CD-
ROM, Buenos Aires, Argentina, June, 1998.
[26] HERSKOVITS, J., “A Feasible Directions Interior Point Technique for Nonlinear
Optimization”, JOTA-Journal of Optimization Theory and Aplications, v. 99, pp. 121-
146, October, 1998.
[27] HERSKOVITS, J., MAPPA, P., GOULART, E. and MOTA SOARES, C.M.,
“Mathematical programming models and algorithms for engineering design
optimization”, Journal of Computational Methods in Applied Mechanics and
Engineering, v. 194, pp. 3244-3268, 2005.
[28] HOCK, W. and SCHITTKOVSKI, K., Lecture Notes in Economics and
Mathematical Systems, Berlin, Germany, Springer-Verlag, 1981.
[29] JÚDICE, J.J. e PATRÍCIO,J.M., Sistemas de Equações Lineares, Departamento de
Matemática da Universidade de Coimbra, 1996.
[30] LUENBERGER, D, G, Linear and Nonlinear Programming. 2 ed. Canada,
Addison Wesley Publishing Company, 1984.
[31] LUKSAN, L. and SPEDICATO, E., “Variable Metric Methods for Unconstrained
Optimization and Nonlinear Least Squares”, Journal of Computational and Applied
Mathematics, v. 124, pp. 61-95, 2000.
[32] MAPPA, P.C., FAIPA_SAND, Uma Técnica para Otimização e Análise
Simultâneas, Tese de D.Sc., COPPE/UFRJ, Rio de Janeiro, RJ, Brasil, 2004.
100
[33] MARTINEZ, J. M., “Practical quasi-Newton methods for solving nonlinear
systems”, Journal of Computational and Applied Mathematics, v. 124, pp. 97-121,
2000.
[34] NOCEDAL, J., Large Scale Unconstrained Optimization, in The State of the Art in
Numerical Analysis, pp. 311-338, Oxford University Press, 1997.
[35] NOCEDAL, J. and WRIGHT, S.J., Numerical Optimization, Springer Series in
Operations Research, New York, Springer, 1999.
[36] NOCEDAL, J. and MARAZZI, M., “Wedge trust region methods for derivative
free optimization”, Mathematical Programming, v. 91, n. 2, pp. 289-30, 2002.
[37] TOINT, Ph.L., “On Sparse and Symmetric Matrix Updating Subject to a Linear
Equation”, Mathematics of Computation, v. 31, n. 140, pp. 954-961, Oct. 1977.
[38] TOINT, P.L., “A Sparse Quasi-Newton Update Derived Variattionally With a
Nondiagonally Weighted Frobenius Norm”, Mathematics of Computation, v. 37, n. 156,
pp. 425-433, Oct. 1981.
[39] TOINT, P.L., “A Note About Sparsity Exploiting Quasi-Newton Updates”,
Mathematical Programming, v. 21, pp. 172-181, 1981.