• Nenhum resultado encontrado

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ω

Documentos relacionados