blocos principais para problemas de complementaridade linear
2.2 Algoritmos de pivotamento em blocos principais
Esta se¸c˜ao apresenta alguns m´etodos de pivotamento que visam resolver LCPs
com matrizes-P. Estes m´etodos trabalham com maneiras de pivotar a igualdade (2.1) e
fornecem, iterativamente, solu¸c˜oes complementares invi´aveis at´e que seja encontrada uma solu¸c˜ao complementar vi´avel e, portanto, a solu¸c˜ao do problema.
Considere F ⊂ N e T ⊂ N dois conjuntos de ´ındices, tais que
F ∩T =∅ e F ∪T =N. (2.11)
A ideia geral dos m´etodos de pivotamento em blocos principais consiste em, a partir desses conjuntos, obter um par corrente (x, ω), tal que este seja uma solu¸c˜ao complementar para o LCP. Caso o par obtido tamb´em seja vi´avel, ent˜ao a solu¸c˜ao do problema foi encontrada e o m´etodo termina com sucesso. Caso contr´ario, os conjuntos F e T s˜ao modificados e o processo ´e repetido.
No decorrer do trabalho, denotamos o complementar de um conjunto T em N
porT, isto ´e, T =N \T. Al´em disso, dado um vetorx∈IRn, o vetor em IR|T| contendo as componentes xi tais que i∈T ´e denotado porxT.
Para formalizar o processo realizado pelos m´etodos de pivotamento em blocos
principais, considere dois conjuntos F e T satisfazendo (2.11). A cada itera¸c˜ao desses m´etodos, o par corrente (x, ω) ´e definido como a solu¸c˜ao do subsistema do LCP dado por
ω =Qx+c xT = 0 ωF = 0. (2.12)
Note que este subsistema satisfaz (2.1) e (2.2) e, portanto, garante que o par (x, ω) ´e uma solu¸c˜ao complementar do LCP. A solu¸c˜ao de (2.12) ´e denominada desolu¸c˜ao b´asica complementar do LCP relacionada aos conjuntos F e T quando a submatriz principal
QF ´e n˜ao-singular. As vari´aveis nulas xi e ωj para i ∈ T e j ∈ F s˜ao denominadas de vari´aveis n˜ao b´asicas e as vari´aveis xi e ωj para i∈ F e j ∈ T de vari´aveis b´asicas, que podem ser nulas ou n˜ao.
Vamos agora descrever como obter os valores das vari´aveis b´asicas de uma solu¸c˜ao complementar, isto ´e, o vetorc0 = (xF, ωT)∈IRn. Note primeiramente que, ao determinar
foram fixadas como nulas. Para tanto, vamos particionar (2.1) da seguinte forma: ωF ωT = cF cT + QF QF T QT F QT xF xT .
Uma vez que ωF exT s˜ao nulos e que xF =c0F e ωT =c0T, temos que
QFc0F =−cF e c0T =cT +QT FxF.
Deste modo, para determinar c0 de modo que a inversa de QF n˜ao seja calculada, basta
(
resolver QF c0F =−cF (2.13)
calcular c0T =cT +QT F c0F. (2.14) Portanto, o par corrente (x, ω), solu¸c˜ao b´asica complementar de (2.12), ´e dado por
x= xF xT = c0F 0 e ω= ωF ωT = 0 c0T , (2.15)
sendo c0F e c0T dados por (2.13) e (2.14), respectivamente. Se c0 = (xF, ωT) ≥ 0, ent˜ao (x, ω) ´e a solu¸c˜ao do LCP e o m´etodo termina. Caso contr´ario, dizemos que esta solu¸c˜ao b´asica ´einvi´avel, os conjuntosF eT s˜ao atualizados e uma nova itera¸c˜ao ´e realizada.
Como veremos nas pr´oximas se¸c˜oes, a grande diferen¸ca entre os m´etodos de pi-votamento em blocos principais consiste nas formas de atualiza¸c˜oes dos conjuntos F e T
realizadas de uma itera¸c˜ao para outra.
2.2.1 Pivotamento em blocos principais cl´assico - BPP
Nesta se¸c˜ao apresentaremos o algoritmo de pivotamento em blocos principais
(Block Principal Pivoting Algorithm - (BPP)) proposto em [76] para resolver LCPs com matrizes-P.
DadosT ⊆ N eF =N \T dois conjuntos de ´ındices, a solu¸c˜ao b´asica associada (x, ω) ´e dada por (2.15). Deste modo,
xi =
c0i sei∈F
0 caso contr´ario
e ωi =
c0i se i∈T
0 caso contr´ario,
sendo c0 o vetor obtido por (2.13) e (2.14). Se c0 ≥ 0, ent˜ao (x, ω) ´e a solu¸c˜ao do LCP. Caso contr´ario, considere o conjunto H dado por
ou, equivalentemente
H ={i∈ N | xi <0 ou ωi <0}.
Note que, comoc0 0, temos queH 6=∅. Qualquer ´ındice isatisfazendoc0i <0 ´e chamado de ´ındice deinviabilidade e o conjunto H ´e denominado deconjunto das inviabilidades.
Um algoritmo de pivotamento em blocos principais ´e um processo que, a partir
de conjuntos F eT, satisfazendo (2.11), constr´oi novos conjuntos at´e obter uma solu¸c˜ao b´asica complementar associada que seja vi´avel, ou seja, at´e que H = ∅. Para tanto, os
conjuntos F e T s˜ao modificados da seguinte maneira
F =F −(F ∩H0)∪(T ∩H0) (2.17)
e
T =T −(T ∩H0)∪(F ∩H0), (2.18)
sendoH0 um conjunto contido em, igual a, ou contendo H. Salientamos que esta nota¸c˜ao representa as seguintes atualiza¸c˜oes
F ←F −(F ∩H0)∪(T ∩H0) e T ←T −(T ∩H0)∪(F ∩H0),
as quais foram escritas nas formas (2.17) e (2.18) para simplificar a nota¸c˜ao. Al´em disso, nessas atualiza¸c˜oes primeiramente s˜ao calculadas as opera¸c˜oes entre parˆenteses e depois as opera¸c˜oes na ordem em que est˜ao, primeiro a subtra¸c˜ao e depois a uni˜ao. Suponha, por exemplo, queF ={1,2,3}, T ={4,5,6} eH0 ={2,6}, ent˜ao de acordo com (2.17) e (2.17), as atualiza¸c˜oes em F e T s˜ao dadas por
F ={1,2,3} − {2} ∪ {6}={1,3,6} e
T ={4,5,6} − {6} ∪ {2}={2,4,5}.
De acordo com (2.17) e (2.18), se H0 = H, ent˜ao estas atualiza¸c˜oes podem ser reescritas da seguinte forma
F =F − {i∈F | xi <0} ∪ {i∈T | ωi <0} e
T =T − {i∈T |ωi <0} ∪ {i∈F | xi <0}.
Observe tamb´em que estas atualiza¸c˜oes s˜ao razo´aveis, uma vez que, se um ´ındice i ∈ F
permanece no conjunto para a pr´oxima itera¸c˜ao. Caso contr´ario, este ´ındice trocar´a de conjunto. Deste modo, na pr´oxima itera¸c˜ao a solu¸c˜ao b´asica invi´avel de ´ındice i da itera¸c˜ao anterior se tornar´a vi´avel para a itera¸c˜ao seguinte, uma vez que esta ser´a anulada ao trocar de conjunto.
O Algoritmo BPP tamb´em pode ser visto como um m´etodo de conjuntos ativos
em blocos (Block Active-Set) [6, 100]. De fato, seja uma itera¸c˜ao qualquer com conjuntos
F e T que fornecem a solu¸c˜ao b´asica complementar (x, ω). Na pr´oxima itera¸c˜ao o novo conjunto T, de restri¸c˜oes ativas (xi = 0), ´e definido por
T ={i∈F |xi <0} ∪ {i∈T | ωi ≥0}, (2.19)
e, como anteriormente, o novo conjunto F ´e atualizado, com base no novo conjunto T,
por
F =N \T.
Em outras palavras, em cada itera¸c˜ao o conjunto das restri¸c˜oes ativas (xi = 0) cont´em os ´ındices vi´aveis (i) das vari´aveis b´asicas duais (ωi ≥ 0) e os ´ındices invi´aveis (i) das vari´aveis b´asicas primais (xi <0) da itera¸c˜ao anterior.
A seguir dispomos o algoritmo de pivotamento em blocos principais cl´assico que satisfaz as propriedades descritas nesta se¸c˜ao.
Algoritmo 2.1 BPP
Dados: k = 0, T ⊆ N e F =N \T
Repita
Calculec0 por (2.13) e (2.14) e (x, ω) por (2.15)
CalculeH por (2.16)
Se H =∅
Pare com (x, ω) solu¸c˜ao do LCP
Sen˜ao
Atualize F e T por (2.17) e (2.18), respectivamente, considerandoH0 =H
k =k+ 1
Observe que este algoritmo ´e muito simples de entender e de ser implementado.
adiante. Note tamb´em que o n´umero de itera¸c˜oes k do algoritmo coincide com o n´umero de sistemas (2.13) resolvidos.
O lema a seguir garante que os conjuntos F e T mudam em cada itera¸c˜ao, a
menos que a solu¸c˜ao seja obtida. Deste modo, como a solu¸c˜ao do sistema (2.12) ´e ´unica para cada conjunto F, o algoritmo n˜ao gera duas solu¸c˜oes b´asicas consecutivas iguais. Lema 2.7 Considere F, T e F+, T+ conjuntos de duas itera¸c˜oes consecutivas e (x, ω) a solu¸c˜ao b´asica complementar associada aos conjuntos F e T. Ent˜ao, (x, ω) satisfaz (2.1)–(2.4) ou, T 6=T+ e F 6=F+.
Demonstra¸c˜ao. Suponha que T =T+ e, consequentemente, F = F+. Considere i ∈ T+. Ent˜ao, ωi ≥0 ou xi <0. Mas, T+ =T e para i∈T temos que xi = 0. Logo, n˜ao existe
i ∈ N tal que xi < 0. Assim, x ≥ 0 e ωT+ ≥ 0. Como ωF+ = 0, temos que ω ≥ 0 e,
consequentemente, H = ∅. Portanto, a solu¸c˜ao (x, ω) de (2.12) ´e solu¸c˜ao do LCP e o algoritmo para antes de gerar o conjuntoT+.
2.2.2 Pivotamento em blocos principais alternativo - KR
Apesar do Algoritmo Kunisch-Rendl - (KR), proposto em [83], ser introduzido como um algoritmo de conjuntos ativos, apresentamos nesta se¸c˜ao que este pode ser visto
como um algoritmo de pivotamento em blocos principais que usa em cada itera¸c˜ao os
conjuntos T e F dados por
T ={i∈ N | xi <0 ou ωi >0} e F =N \T, (2.20) onde (x, ω) ´e uma solu¸c˜ao b´asica da itera¸c˜ao anterior. Note que a defini¸c˜ao deT difere de (2.19) apenas pelas desigualdades estritas nas vari´aveis duais. Como em implementa¸c˜oes computacionais a igualdade ´e raramente atingida, os dois m´etodos, BPP e KR, coincidem na pr´atica.
Seja (x, ω) uma solu¸c˜ao b´asica complementar de (2.12), dada por (2.15). Cada itera¸c˜ao do algoritmo KR utiliza as regras de atualiza¸c˜ao (2.17) e (2.18) com o conjunto
H0 dado por
H0 ={i∈F | c0i <0} ∪ {i∈T | c0i ≤0}, (2.21) ou, equivalentemente,
Note queH ⊆H0, sendo H o conjunto de inviabilidades definido em (2.16) e considerado no m´etodo BPP. Cabe salientar que, como o conjuntoH0 possui as vari´aveis b´asicas duais ativas e n˜ao apenas as inviabilidades, a cardinalidade nula deste conjunto n˜ao pode ser
um crit´erio de parada, como foi considerado no Algoritmo BPP. Deste modo, o Algoritmo
KR ´e o Algoritmo BPP com H0 dado por (2.21), como apresentado a seguir.
Algoritmo 2.2 KR
Dados: k = 0, T ⊆ N e F =N \T
Repita
Calculec0 por (2.13) e (2.14) e (x, ω) por (2.15) CalculeH0 por (2.21)
Se c0 ≥0
Pare com (x, ω) solu¸c˜ao do LCP
Sen˜ao
Atualize F e T por (2.17) e (2.18)
k =k+ 1
2.2.3 Algoritmo em duas fases - BPP-PC
Discutimos nesta se¸c˜ao um algoritmo de pivotamento principal alternativo
cha-mado de algoritmo de pivotamento em blocos principais - ciclos primais (Block Principal
Pivoting - Primal Cycle (BPP-PC)). Este algoritmo ´e baseado no proposto em [72]. Cada itera¸c˜ao deste algoritmo ´e decomposta em duas fases: umafase de viabilidade primal, que fornece uma solu¸c˜ao b´asica primal vi´avel e uma fase dual, que a partir da fase primal obt´em uma solu¸c˜ao b´asica dual.
Sejam F eT dois conjuntos de ´ındices satisfazendo (2.11) e x= (c0F,0) a solu¸c˜ao b´asica associada, com c0F dado por (2.13). Se o ponto x for vi´avel (x ≥ 0), ent˜ao a fase de viabilidade ´e finalizada com a solu¸c˜ao b´asica primal vi´avel x. Caso contr´ario, esta fase realiza atualiza¸c˜oes consecutivas do conjunto F segundo (2.17), com H0 = Hx sendo Hx
definido por
Hx={i∈F |c0i <0}, (2.22)
(x = (c0F,0) ≥ 0), ou seja, at´e que Hx = ∅. Ent˜ao esta fase ´e finalizada com sucesso. ComoHx ⊆F, podemos reescrever a atualiza¸c˜ao de F, definida em (2.17), por
F =F \Hx.
Note que o n´umero m´aximo de atualiza¸c˜oes necess´arias para obter uma solu¸c˜ao primal vi´avel ´e n, uma vez que, a cada solu¸c˜ao b´asica primal invi´avel, o conjunto F se torna menor, at´e que, no pior dos casos, este se torne vazio. Al´em disso, como o objetivo desta fase ´e obter uma solu¸c˜ao primal vi´avel, as vari´aveis duais e as atualiza¸c˜oes no conjuntoT
n˜ao precisam ser calculadas.
A partir do ponto x= (c0F,0) vi´avel, obtido na fase de viabilidade primal, a fase dual calcula o conjuntoT porT =N \F e a vari´avel b´asica dual associada porω = (c0T,0), com c0T dado por (2.14). Note que o conjunto T n˜ao pode ser atualizado segundo (2.18), pois durante a fase de viabilidade primal este conjunto n˜ao foi atualizado.
Suponha que se tenha uma solu¸c˜ao b´asica complementar (x, ω) com x vi´avel e considere o conjunto das inviabilidades duais, associado a esta solu¸c˜ao, dado por
Hω ={i∈T | c0i <0}. (2.23)
SeHω =∅, ent˜ao a solu¸c˜ao b´asica complementar (x, ω) ´e tamb´em vi´avel, a solu¸c˜ao do LCP ´e encontrada com sucesso e o algoritmo para. Caso contr´ario, o conjuntoF ´e modificado
segundo (2.17) com H0 = Hω e uma nova fase de viabilidade primal ´e realizada. Cabe
salientar que, ao realizar esta atualiza¸c˜ao no conjunto F, a viabilidade da vari´avel primal pode ser perdida, e por isso ´e necess´ario realizar a fase de viabilidade primal novamente.
Note tamb´em que o conjunto Hω calculado na fase dual ´e o mesmo que o conjunto H
considerado no algoritmo BPP, dado por (2.16), devido ao fato dexser um ponto vi´avel. Al´em disso, a atualiza¸c˜ao de F na fase dual pode ser reescrita por
F =F ∪Hω =F ∪H.
Para estabelecer o algoritmo, denote kv o n´umero de fases realizadas para recu-perar a viabilidade primal e k o n´umero de sistemas (2.13) resolvidos. Adotamos que o n´umero de itera¸c˜oes coincide com o n´umero k de sistemas resolvidos.
Cabe salientar que, usualmente, o conjunto inicial F ´e considerado como F =
{i | ci < 0} em todos os algoritmos discutidos at´e o momento, a n˜ao ser que as carac-ter´ısticas do LCP a resolver sugiram uma escolha do conjunto inicialF mais conveniente.
Algoritmo 2.3 BPP-PC
Dados: kv = 0, k = 0, F ⊆ {1,2, . . . , n}, T =N \F Repita
Calculec0F, x e Hx por (2.13), (2.15) e (2.22), respectivamente
k =k+ 1
Se Hx 6=∅
kv =kv+ 1
EnquantoHx 6=∅
Atualize F por (2.17) com H0 =Hx
Calcule c0F, xe Hx por (2.13), (2.15) e (2.22), respectivamente
k =k+ 1
Fa¸ca T =N \F
Calculec0T,ω e Hω por (2.14), (2.15) e (2.23), respectivamente
Se Hω =∅
Pare com (x, ω) solu¸c˜ao do LCP
Sen˜ao
Atualize F por (2.17) com H0 =Hω