VinBR

PO - 25/09/2012

May 28th, 2013
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.83 KB | None | 0 0
  1. # # # # # # # # # # # # #
  2. # Pesquisa Operacional #
  3. # Prof. Alexandre Cunha #
  4. # notasdogarcia.blog.com #
  5. # # # # # # # # # # # # #
  6.  
  7. // O professor começou a aula falando sobre a data do exame especial.
  8.  
  9. Exame Especial: 27 dez
  10.  
  11. Horário: 13hs - 14:40.
  12.  
  13. Novo monitor: Rosklin
  14.  
  15. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  16.  
  17. Vamos discutir hoje sobre o que faltava para utilizarmos o método simplex.
  18. Já sabemos como caminhar pelo Dominio do problema até encontrar a solução ótima.
  19. Porém nos exemplos anteriores, nós chutamos o primeiro vertice cegamente.
  20.  
  21. Na prática o algoritmo só funciona se nosso chute inicial estiver dentro do campo de soluções viáveis.
  22.  
  23. Vamos então aprender um jeito de pegar um vertice qualquer, (mesmo um não viável) e caminhar
  24. com ele até chegarmos em um vertice viável. E só então usar o simplex para resolver o problema.
  25.  
  26. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  27.  
  28. Vamos começar com um exemplo de um problema que seja dificil chutar uma base inicial viável:
  29.  
  30. min x1 - 2 x2
  31. x1 + x2 >= 2
  32. -x1 + x2 >= 1
  33. x2 <= 3
  34. x1,x2 >= 0
  35.  
  36. Note que tem duas desigualdades >=.
  37.  
  38. Para colocar no formato padrão temos de fazer assim:
  39.  
  40. min x1 - 2x2
  41. x1 + x2 - x3 = 2
  42. -x1 + x2 - x4 = 1
  43. x2 + x5 = 3
  44. x1,x2 >= 0
  45.  
  46. Note que na desigualdade >= eu subtraí x3 e x4 para representa-las.
  47.  
  48. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  49.  
  50. O chute mais simples que costumamos fazer é assumir que as variáveis de folga são base,
  51. e as variáveis originais do problema são iguais à 0.
  52.  
  53. Ou seja:
  54.  
  55. xb = {x3,x4,x5}
  56. xn = {x1,x2}
  57.  
  58. Dessa forma estamos denotando o ponto: x1=0, x2=0 ou (0,0).
  59.  
  60. Porém notem que no problema acima essa solução básica é inviável,
  61. pois a primeira e a segunda restrição são infringidas.
  62. Como discutido, uma solução inviável não serve para ser usada no método simplex.
  63.  
  64. A seguir vamos mostrar como partir dessa solução e chegar em uma solução viável.
  65.  
  66. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  67.  
  68. O professor sugeriu trocar (temporariamente)
  69. a variável -x3 e -x4 por x'3 e x'4 sem restrições de sinal:
  70.  
  71. min x1 - 2 x2
  72. x1 + x2 + x'3 = 2
  73. -x1 + x2 + x'4 = 1
  74. x2 + x5 = 3
  75. x1,x2 >= 0
  76.  
  77. Qual a vantagem de enchergar o problema assim?
  78.  
  79. Agora o ponto (0,0) tornou-se uma solução viável já que não existem mais desigualdades ">=".
  80. Ou seja basta pegarmos como sol. básica as variáveis de folga x'3 e x'4 e x5 zerando x1 e x2.
  81.  
  82. Agora para re-escrever as variáveis x'3 e x'4 em termos de variáveis positivas façamos isso:
  83.  
  84. x'3 = x6-x3
  85. x'4 = x7-x4
  86.  
  87. min x1 - 2x2
  88. x1 + x2 + (x6-x3) = 2
  89. -x1 + x2 + (x7-x4) = 1
  90. x2 + x5 = 3
  91. x1,x2,x3,x4,x5 >= 0
  92. x6,x7 >= 0
  93.  
  94. x6 e x7 são chamadas de variáveis Artificiais.
  95.  
  96. Se utilizarmos uma base com elas:
  97.  
  98. xb = {x5,x6,x7}
  99. xn = {x1,x2,x3,x4}
  100.  
  101. Temos uma solução viável no ponto (0,0).
  102.  
  103. Porém esse problema não é igual ao problema anterior, pois adicionamos duas variáveis a mais.
  104.  
  105. Agora que já temos uma solução viável, queremos voltar para o problema inicial como fazer isso?
  106. Bem é só trocar nosso objetivo:
  107.  
  108. min x6 + x7
  109. x1 + x2 + (x6-x3) = 2
  110. -x1 + x2 + (x7-x4) = 1
  111. x2 + x5 = 3
  112. x1,x2,x3,x4 >= 0
  113. x6,x7 >= 0
  114.  
  115. Uma vez que x6 e x7 for igual à 0, nosso problema será identico ao nosso problema original,
  116. e poderemos retornar à ele removendo as duas variáveis e retomando o objetivo original.
  117.  
  118. Se isso não for possível significa que o problema original não tem solução viável.
  119.  
  120. E pronto =].
  121. // (é um macete legal né?)
  122.  
  123. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  124.  
  125. Vamos agora resolver esses dois problemas com o método simplex:
  126.  
  127. Primeira interação do método:
  128. Vamos re-escrever tudo isolando as variáveis básicas:
  129.  
  130. min 3 - 2x2 + x3 + x4
  131. x6 = 2 - x1 - x2 + x3
  132. x7 = 1 + x1 - x2 + x4
  133. x5 = 3 - x2
  134.  
  135. xb = {x5,x6,x7}
  136. xn = {x1,x2,x3,x4}
  137.  
  138. Como x2 tem coeficiente negativo no objetivo,
  139. aumenta-lo irá diminuir o objetivo, façamos então x2 se tornar uma variável básica.
  140.  
  141. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  142.  
  143. Pelo teste da razão, notamos que crescer x2 infringe primeiramente a regra do x7.
  144.  
  145. Assim vamos trocar x7 com x2 nas variáveis básicas.
  146.  
  147. min 1 - 2 x1 - x4 + 2x7 + x3
  148. x6 = 1 - 2x1 + x3 + x7 - x4
  149. x2 = 1 + x1 - x7 + x4
  150. x5 = 2 - x1 + x7 - x4
  151.  
  152. xb = {x2,x5,x6}
  153. xn = {x1,x3,x4,x7}
  154.  
  155. // NOTA: Existem 3 tipos de nomeclaturas de variáveis:
  156. // Variáveis estruturais (as originais)
  157. // Variáveis de folga (para denotar as desigualdades)
  158. // Variáveis artificais (para encontrar a solução viável inicial)
  159.  
  160. Agora x1 e x4 tem coeficientes negativos no objetivo.
  161. O professor disse que existem vários critérios de escolha nesses casos.
  162.  
  163. Nas últimas aulas escolhemos sempre a variável cujo o coeficiente é mais benéfico ao nosso objetivo.
  164. No caso dessa mínimização seria x1 que tem -2 como coeficiente.
  165.  
  166. Porém o professor disse que tem outro critério, disse que vai escolher o x1 por ela ser
  167. a variável de menor indice (ou seja a variável mais pra esquerda, é estranho esse critério).
  168.  
  169. Isso não alterou nossa escolha então vamos continuar.
  170.  
  171. Vamos fazer outra operação de pivoteamento.
  172.  
  173. Nosso dicionário está assim:
  174.  
  175. min 1 - 2 x1 - x4 + 2 x7 + x3
  176. x6 = 1 - 2x1 + x3 + x7 - x4
  177. x2 = 1 + x1 - x7 + x4
  178. x5 = 2 - x1 + x7 - x4
  179.  
  180. xb = {x2,x5,x6}, xn = {x1,x3,x4,x7}
  181.  
  182. O crescimento de x1 infringe primeiro a restrição de x6.
  183. Então trocaremos x1 com x6.
  184.  
  185. min 0 - x6 + x3 - x4 + x7
  186. x1 = 1/2 - 1/2 x6 + 1/2 x3 - 1/2 x4 + 1/2 x7
  187. x2 = 3/2 + 1/2 x4 - 1/2 x7 - 1/2 x6 + 1/2 x3
  188. x5 = 3/2 + 1/2 x6 - 1/2 x3 - 1/2 x4 + 1/2 x7
  189.  
  190. xb = {x1,x2,x5}, xn = {x3,x4,x6,x7}
  191.  
  192. Agora note que o nosso objetivo não tem mais uma constante diferente de 0 e x6 e x7 tem o valor 0 (não-básicas)
  193. Com isso cumprimos nossa meta de zerar x6 e x7.
  194.  
  195. Note também que por coincidencia x6 e x7 são não básicas, o que já facilita nossa vida.
  196. Se x6 e/ou x7 ainda fossem básicas no momento em que zeramos elas, agente teria de forçar a saida delas da base.
  197. Para isso bastaria fazer alguma troca que resolvesse o problema.
  198.  
  199. Para voltar para o problema original, agora que x6 e x7 são não-básicas, é só remover elas da equação:
  200.  
  201. min 0 + x3 - x4
  202. x1 = 1/2 + 1/2 x3 - 1/2 x4
  203. x2 = 3/2 + 1/2 x4 + 1/2 x3
  204. x5 = 3/2 - 1/2 x3 - 1/2 x4
  205.  
  206. xb = {x1,x2,x5}, xn = {x3,x4}
  207.  
  208. E agora falta só re-escrever o objetivo original:
  209.  
  210. min x1 - 2 x2
  211. x1 = 1/2 + 1/2 x3 - 1/2 x4
  212. x2 = 3/2 + 1/2 x4 + 1/2 x3
  213. x5 = 3/2 - 1/2 x3 - 1/2 x4
  214.  
  215. xb = {x1,x2,x5}, xn = {x3,x4}
  216.  
  217. E voilá, problema original e solução viável!
  218.  
  219. Super interessante não? Não vou terminar o cálculo já que é só aplicar o simplex normalmente.
  220.  
  221. Mas agora já sabemos como fazer quando o ponto (0,0) não for uma solução viável,
  222. é só brincar um pouquinho de criar novas variáveis.
  223.  
  224. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  225.  
  226. Para encerrar a aula, e encerrar tudo o que temos de saber sobre o simplex puro
  227. vamos falar da Regra de Blond:
  228.  
  229. Agente só aceita que o método simplex termina quando todas as variáveis do objetivo tem sinal positivo(min) ou negativo(max) certo?
  230.  
  231. Porém é possível o método entrar em loop infinito. Chamamos esse processo de "Ciclagem"
  232.  
  233. A Regra de Blond garante que não haverá ciclagem!
  234.  
  235. CONCEITO:
  236. Critério Regra de Blond delimita que sempre que formos escolher qual variável não básica sair
  237. (quando temos mais de uma opção)
  238. devemos escolher sempre a que tem o menor indice, tipo entre x2 e x7 escolho sempre o x2.
  239.  
  240. Essa regra é contrária a idéia que tinhamos até agora de escolher a variável com maior coeficiente né?
  241. Escolher o maior coeficiente talvez seja um pouco mais eficiente, mas pode gerar ciclagem,
  242. então é melhor usar sempre a Regra de Blond.
  243. (principalmente por ela ser muito simples de entender né)
  244.  
  245. // NOTA: Um PPL Degenerado é quando uma das variáveis básicas está presa no valor 0
  246. // e ainda não temos o atestado de otimalidade.
  247. // se o problema é degenerado pode ocorrer ciclagem.
  248. // Graficamente isso ocorre quando mais de duas restrições se cruzam em um mesmo vertice.
  249.  
  250. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  251.  
  252. O professor está mostrando um slide que exemplifica a degeneração do método simplex.
  253.  
  254. O site dos slides é:
  255. www.dcc.ufmg.br/~acunha/linear/simplex.pdf
  256. (ps: nao consegui acessar o endereço =P, fazer o que =P)
  257.  
  258. Nesse slide haviam duas variáveis básicas com o valor 0 e sem certificado de otimalidade.
  259. Ou seja esse é um exemplo degenerado.
  260.  
  261. porém ao fazer o pivoteamento obvio, ainda há variáveis positivas no objetivo, e pior agora temos duas variáveis positivas.
  262.  
  263. E então fazemos mais pivoteamentos, e novamente temos variáveis positivas no pivoteamento.
  264.  
  265. A partir daí utilizando o critério de maior coeficiente e chegamos em outro resultado com variáveis positivas no objetivo.
  266.  
  267. Seguindo com esse critério continuamente, vamos após alguns loops voltar exatamente ao conjunto de variaveis básicas originais, ou seja loop infinito.
  268.  
  269. Esse é o processo de ciclagem.
  270.  
  271. Como evitar? Basta trocar o critério de escolher a variável com o maior coeficiente e escolher sempre a variável com menor indice (Regra de Blond).
  272.  
  273. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  274.  
  275. // Fim da aula!
Advertisement
Add Comment
Please, Sign In to add comment