VinBR

PO - 11/10/2012

May 28th, 2013
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.47 KB | None | 0 0
  1. # # # # # # # # # # # # #
  2. # Pesquisa Operacional #
  3. # Prof. Alexandre Cunha #
  4. # notasdogarcia.blog.com #
  5. # # # # # # # # # # # # #
  6.  
  7. // Nota importante:
  8. // Na aula de hoje vamos falar sobre o programa de geração de colunas.
  9. // Eu achei mais fácil de entender isso depois que eu estudei o Método Simplex Revisado.
  10. // Os slides que usei para estudar seguem abaixo:
  11.  
  12. O professor Fernando Marins da UNESP disponibilizou alguns ótimos slides que vou colocar abaixo:
  13.  
  14. Uma boa apresentação de slides para explicar o MSR segue abaixo, também do mesmo autor do pdf acima.
  15. http://www.feg.unesp.br/~fmarins/po/slides/2o.s/MSR.pdf
  16. (MSR = Método Simplex Revisado) (oficialmente não faz parte da materia)
  17.  
  18. Vou disponibilizar os slides no meu site também (eu estudei por eles)
  19.  
  20. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  21.  
  22. Decomposição Dantzig Wolfe:
  23. (conhecido em computação também como programa de geração de colunas)
  24.  
  25. min cTx
  26. Ex = e
  27. Ax = b
  28. x >= 0
  29.  
  30. Na aula anterior falamos que qualquer ponto de um PPL
  31. pode ser escrito pela combinação do conjunto de xj`s (R) somado com uma combinação do conjunto dj`s (D),
  32. onde R contém os pontos extremos e D as direções extremas.
  33.  
  34. Ou seja:
  35.  
  36. x = sum (j€R) lambdaj x^j + sum(i€D) tetai d^i
  37.  
  38. sum(j€R) lambdaj = 1
  39.  
  40. lambdaj e tetai >= 0
  41.  
  42. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  43.  
  44. Problema mestre:
  45.  
  46. Introdução:
  47. O problema mestre é escrito re-escrevendo cada restrição, e o vetor objetivo
  48. em termos de combinações dos conjuntos R e D do problema.
  49.  
  50. Se voce pensar bem, fazer essa conversão pode ser chato, mas não é dificil de imaginar:
  51.  
  52. Um objetivo é um vetor certo?
  53. Para criar um vetor basta ter dois pontos não sobrepostos.
  54. Mostramos na última aula que é possível escrever qualquer ponto do dominio em termos de xj e dj
  55. logo é possível re-escrever o vetor objetivo com base na mesma idéia.
  56.  
  57. As restrições de desigualdade são como linhas de um gradiente.
  58. Se tem o gradiente tem o vetor gradiente, basta dizermos que o valor desse vetor,
  59. a partir do ponto p contido na linha tem de ser positivo, ou algo assim.
  60. Digo é chato de pensar como fazer a conversão, mas não é impossível.
  61.  
  62. Formalização do Prob. Mestre:
  63.  
  64. // Usarei l para denotar lambda e t para teta.
  65. // (Notem que xj e dj são constantes, e as variáveis são lj e tj)
  66.  
  67. min sum(j€R) cT(lj xj) + sum(j€D) cT(tj dj)
  68.  
  69. sum(j€R) E(l^j x^j) + sum(j€D) E(t^j d^j) = e
  70.  
  71. sum(j€R) l^j = 1
  72. (combinação convexa)
  73.  
  74. Podemos re-escrever:
  75.  
  76. min sum(j€R) (cT x^j) l^j + sum(j€D) (cT d^i) t^i
  77.  
  78. (ß) sum(j€R) (E x^j)l^j + sum(j€D) (E d^j)t^j = e
  79.  
  80. (r) sum(j€R) l^j = 1
  81. (combinação convexa)
  82.  
  83. O problema é que da forma que escrevemos agora temos um conjunto muito grande de variáveis.
  84. Se voce pensar bem, cada variável antiga agora pode ser descrita por |R| variáveis no mínimo.
  85. Aumentando nosso total de variável para numV*|R|
  86.  
  87. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  88.  
  89. Agora suponhamos que possamos encontrar um subconjunto de R e de D cuja solução relacionada seja solução também do problema envolvendo R e de D.
  90.  
  91. RR contido em R
  92. DD contido em D
  93.  
  94. Com as variáveis lj onde j € RR e tj onde j € DD
  95.  
  96. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  97.  
  98. Problema Mestre Restrito de PL (RPMPL (- tb não entendi essa sigla))
  99.  
  100. min sum(j€RR) (cT x^j) l^j + sum(j€DD) (cT d^i) t^i
  101.  
  102. sum(j€RR) (E x^j)l^j + sum(j€DD) (E d^j)t^j = e
  103.  
  104. sum(j€RR) l^j = 1
  105. (combinação convexa)
  106.  
  107. Ou seja a mesma coisa porém com um subconjunto de R e de D.
  108.  
  109. Resolvendo o RPMPL obteremos uma solução na forma de valores fixados para as variáveis
  110. lambda e teta:
  111.  
  112. lj*: j € RR, tj*: j € DD
  113.  
  114. Precisamos agora verificar se essa solução além de resolver o RPMPL
  115. também resolve o PMPL (o prob original).
  116.  
  117. Ou seja, existe algum ponto que do dominio de R e de D que faltou ser incluido em RR e DD?
  118.  
  119. Podemos formular essa pergunta assim:
  120. Existe j cujo custo reduzido é menor que 0?
  121.  
  122. Em outras palavras, o grande chan da decomposição é que
  123. para calcular o custo reduzido eu preciso de armazenar poucos dados
  124. das colunas que eu não estou usando atualmente.
  125.  
  126. Assim temos dois tipos de iterações:
  127. Iterações do problema restrito usando o simplex.
  128. Iterações do problema Mestre onde se calcula os custos reduzidos,
  129. e adiciona a coluna de melhor custo à base.
  130.  
  131. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  132.  
  133. Vamos agora em pensar no calculo do custo reduzido com base
  134. na ideia do dual simplex falado na aula de 09/10/2012:
  135.  
  136. Vamos escrever o dual desse problema:
  137.  
  138. max ßT e + r
  139.  
  140. ßT (E xj) + r <= cT xj, para todo j € R
  141.  
  142. ßT (E dj) <= cT dj, para todo j € D
  143.  
  144. Com base no dual usando a idéia do dual simplex
  145. podemos descobrir uma coluna do primal com custo reduzido menor que 0
  146. verificando se há alguma restrição do dual violada.
  147.  
  148. Se houver violação:
  149. Adicione essa variável no problema original.
  150.  
  151. Se não houve:
  152. Precisamos de um atestado de otimalidade.
  153.  
  154. cT xj - ßT ( E xj ) - x >= 0
  155.  
  156. min cT xj - ßT ( E xj )
  157.  
  158. A solução desse problema pelo simplex me da uma solução
  159. Vamos chama-la de x*.
  160.  
  161. x* é um ponto extremo, ou direção extrema de P, logo temos alguém para adicionar no nosso problema RPMPL
  162.  
  163. Repetimos esse processo até o problema atestar que não existe coluna com custo reduzido negativo.
  164. // Essa última parte eu re-li mas não entendi direito =P.
  165. // Durante essa aula eu tava cansado o que aumenta
  166. // a probabilidade de eu ter escrito bobeira nas linhas acima.
  167.  
  168. // Ao menos a idéia geral ficou clara, armazene apenas o que precisa,
  169. // "passe o olho" (custo reduzido) pelo resto do problema
  170. // pra descobrir se precisa de algo mais
  171. // se precisar inclua essa coisa (coluna) no seu problema.
  172.  
  173. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  174.  
  175. Vamos fazer um exemplo:
  176.  
  177. min -4x1 - x2 - 6x3
  178. 3x1 + 2x2 + 4x3 = 17
  179.  
  180. 1 <= xi <= 2 : i = 1,2,3
  181.  
  182. P = { x € R³+ : 1 <= xi <= 2, i=1,2,3 } D = ø
  183.  
  184. // note que o problema acima é uma minimização
  185. // em um plano (devido a restrição de igualdade)
  186. // descrito em um espaço de 3 dimensões.
  187.  
  188. // Note que o plano é limitado (recortado) pelas restrições
  189. // de "1 <= xi <= 2" senão teriamos um plano infinito.
  190.  
  191. // Só passei a limpo até aqui, durante a aula disseram que esse exemplo é muito explicativo,
  192. // mas estou estudando e não vou poder olhar agora.
  193. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  194.  
  195. Vértices serão utilizados para escrever o RPMPL
  196.  
  197. // Note que vou usar x¹ como o ponto extremo 1,
  198. // e x1 para a variável 1 do prob. original.
  199.  
  200. l¹ x¹ = | 2 | c¹ = cTx¹ = ( - 4 - 1 - 6 ) (2 2 2)T = -22
  201. | 2 |
  202. | 2 | Ex¹ = [3 2 4] [2 2 2]T = 18
  203.  
  204. l² x² = | 1 | c² = cTx² = ( - 4 - 1 - 6 ) (1 1 2)T = -17
  205. | 1 |
  206. | 2 | Ex² = [3 2 4] [1 1 2]T = 13
  207.  
  208. 1° RPMPL:
  209.  
  210. min - 22 l¹ - 17 l²
  211.  
  212. | 18 13 |⁻¹ | 0,2 -2,6 |
  213. | 1 1 | = | -0,2 3,6 |
  214.  
  215. Resolvendo o sistema:
  216.  
  217. 18 l¹ + 13 l ² = 17
  218. l¹ + l² = 1
  219.  
  220. l¹ = 0,8
  221. l² = 0,2
  222.  
  223. (ß, r) = CB B⁻¹ = [-22 - 17] | 0,2 -2,6 | = [ -1 -4 ]
  224. | -0,2 3,6 |
  225.  
  226. Resolvendo o problema de precificação:
  227.  
  228. min ( [-4 -1 -6] - (-1) [ 3 2 4 ] ) [x1 x2 x3]T
  229.  
  230. min -1x1 + 1x2 - 2x3
  231. 1<= x1 <= 2
  232. 1<= x2 <= 2
  233. 1<= x3 <= 2
  234.  
  235. x1* = 2
  236. x2* = 1
  237. x3* = 2
  238.  
  239. -5 = -1(2) + 1 -2(2)
  240.  
  241. nova coluna l³, associada à x3 = [2 1 2]T
  242.  
  243. c³ = cTx³ = (-4 -1 -6) (2 1 2)T = -21
  244.  
  245. Ex³ = [3 2 4] [2 1 2]T = 16
  246.  
  247. min -21 - l³
  248.  
  249. l¹ = 0,8 - 0,6 l³
  250. l² = 0,2 - 0,4 l³
  251.  
  252. l¹ = 1/2 + 1,5 l²
  253. l³ = 11/2 -2,5 l²
  254.  
  255. min -21,5 + 2,5 l²
  256.  
  257. 2° prob. pricing:
  258.  
  259. B = | 18 16 | B⁻¹ | 1/2 -8 |
  260. | 1 1 | | -1/2 9 |
  261.  
  262. (ß,r) = [-22 -21] B⁻¹ = [ -0,5 -13 ]
  263.  
  264. min ( [-4 -1 -6] + (1/2) [3 2 4] ) (x1 x2 x3)
  265. x € P
  266. min -5/2x1 + 0x2 - 4x3
  267.  
  268. 1<= x1 <=2
  269. 1<= x2 <=2
  270. 1<= x3 <=2
  271.  
  272. (2 1 2)T ou (2 2 2)T
  273.  
  274. -5/2(2) + 0(1) - 4(2) = -13 + 13 = 0
  275.  
  276. Assim conseguimos nosso atestado de otimalidade e fim do problema.
  277.  
  278. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  279.  
  280. // Fim da aula!
Advertisement
Add Comment
Please, Sign In to add comment