VinBR

PO - 20/09/2012

May 28th, 2013
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.19 KB | None | 0 0
  1. # # # # # # # # # # # # #
  2. # Pesquisa Operacional #
  3. # Prof. Alexandre Cunha #
  4. # notasdogarcia.blog.com #
  5. # # # # # # # # # # # # #
  6.  
  7. Hoje vamos formalizar o método Simplex:
  8.  
  9. Vamos escrever um PPL de uma forma matricial:
  10.  
  11. max cTx
  12. Ax = b
  13. x >= 0
  14.  
  15. - cT é o vetor de coeficientes ou custos Transposto.
  16. - x são todas as nossas variáveis x1, x2, ..., xn.
  17. - A é a nossa matriz tecnológica da qual falei antes.
  18. - b são os valores das nossas restrições de igualdade.
  19.  
  20. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  21.  
  22. Na aula passada vimos as variáveis básicas "B" e não básicas "N"
  23.  
  24. Chamaremos a partir de hoje: B de xb e N de xn.
  25.  
  26. Ou seja xb é o conjunto de variáveis "x" que são básicas.
  27. xn é o conjunto de variáveis "x" que são não-básicas.
  28.  
  29. Motivo da troca: Utilizaremos B e N para outro significado:
  30.  
  31. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  32.  
  33. Nossas variáveis A, x e c possuem celulas ou colunas que podemos dizer que pertence a parte básica ou não básica do nosso problema.
  34.  
  35. A = [B|N]
  36.  
  37. No caso do exemplo da última aula "A" B são as colunas com os coeficientes de x1, x2 e x4 que seriam as básicas.
  38. N são as colunas com os coeficientes de x3 e x5 que seriam as não-básicas.
  39.  
  40. x = | xb |
  41. | xn |
  42.  
  43. c = | cb |
  44. | cn |
  45.  
  46. A divisão de "x" entre básicas e não básicas fica fácil de ver.
  47. E os coeficientes que multiplicam as variáveis básicas são "cb" e os demais "cn"
  48.  
  49. Podemos então re-escrever o problema em termo dessas novas variáveis.
  50. Mas eu não acho isso absolutamente nada didatico (eu pessoalmente fico super perdido)
  51. Então vou pular essa parte.
  52.  
  53. max cb T xb + cn T xn
  54. B xb + N xn = b
  55. xb, xn >= 0
  56.  
  57. Podemos ainda escrever de forma mais especifica:
  58.  
  59. max cb T xb + cn T xn
  60. B xb + N xn = b
  61. xb >= 0, xn = 0
  62.  
  63. Pois sabemos que as variáveis xn são sempre zeradas.
  64.  
  65. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  66.  
  67. Agora vamos falar das formalidades do simplex.
  68.  
  69. Dado um problema na forma padrão do tipo:
  70.  
  71. max 3 x1 + 5 x2
  72.  
  73. 1 x1 + 0 x2 + x3 = 4
  74. 0 x1 + 2 x2 + x4 = 12
  75. 3 x1 + 2 x2 + x5 = 18
  76.  
  77. x1,x2,x3,x4,x5 >= 0
  78.  
  79. O primeiro passo é re-escrever as restrições de forma a isolar as variáveis básicas.
  80.  
  81. Inicialmente xb = {x1,x2,x4} e xn = {x3, x5}
  82.  
  83. Assim temos:
  84.  
  85. x1 = 4 - 1 x3
  86. x4 = 12 - 2 x2
  87. x2 = 9 - 3/2 x1 - 1/2 x5
  88.  
  89. Agora tem um problema.
  90. Ainda temos variáveis básicas do lado direito certo?
  91. Como faremos para realmente isola-las?
  92. Substituindo:
  93.  
  94. x1 na eq 3:
  95.  
  96. x2 = 9 - 1/2 x5 - 3/2 (4 - 1 x3)
  97. x2 = 9 - 1/2 x5 - 6 + 3/2 x3
  98. x2 = 3 - 1/2 x5 + 3/2 x3
  99.  
  100. x2 na eq 2:
  101.  
  102. x4 = 12 - 2 (3 - 1/2 x5 + 3/2 x3)
  103. x4 = 12 - 6 + 1 x5 - 3 x3
  104. x4 = 6 + x5 - 3 x3
  105.  
  106. Re-escrevendo agora:
  107.  
  108. x1 = 4 - x3
  109. x2 = 3 - 1/2 x5 + 3/2 x3
  110. x4 = 6 + x5 - 3 x3
  111.  
  112. Pronto passo concluído.
  113. Pensando matricialmente, nós operamos sobre a equação:
  114.  
  115. B xb + N xn = b
  116.  
  117. Para ela ficar na forma em que xb está isolado ou seja:
  118.  
  119. B xb = b - N xn
  120.  
  121. B⁻¹ B xb = B⁻¹ b - B⁻¹ N xn
  122.  
  123. xb = B⁻¹ b - B⁻¹ N xn
  124.  
  125. Ops, isso quer dizer que nos cálculos que fizemos acima nos sem perceber calculamos uma inversa de uma matriz O.O
  126.  
  127. Se pensar bem, nós fizemos isso mesmo.
  128. Ao isolar as 3 variáveis nós dividimos as linhas pelo coeficiente daquela variável.
  129. - Ou seja, a linha de x1 (restrição 1) foi dividia pelo coeficiente de x1 que era 1.
  130. Ao substituir as variáveis isoladas nas demais linhas, fizemos o equivalente a soma de linhas
  131. com o objetivo de zerar a coluna de x1, exceto pela ocorrência de x1 na linha 1.
  132. Em outras palavras é como resolver um sistema linear.
  133.  
  134. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  135.  
  136. Passo 1.1:
  137.  
  138. Agora que já temos os valores isolados de cada variável básica vamos raciocinar sobre porque esse formato é legal?
  139.  
  140. x1 = 4 - x3 (antiga restrição vertical no plano cartesiano)
  141. x4 = 6 + x5 - 3 x3 (antiga restrição horizontal no plano cartesiano)
  142. x2 = 3 - 1/2 x5 + 3/2 x3 (antiga restrição diagonal no plano cartesiano)
  143.  
  144. xb = {x1,x2,x4}
  145. xn = {x3,x5}
  146.  
  147. // A partir de agora vai ficar dificil mapear as restrições para as linhas do grafo.
  148. // Porém o sistema ainda é equivalente.
  149.  
  150. Veja bem, x5 e x3 tem valor 0, pois são variáveis não básicas.
  151.  
  152. Logo x1 = 4
  153. x2 = 3
  154. x4 = 6
  155.  
  156. Com isso fica fácil saber o ponto em que estamos no plano cartesiano:
  157.  
  158. x1 = 4, x2 = 3
  159.  
  160. E o segundo ponto importante é que agora, nós conseguimos identificar os vértices que são adjacentes ao atual.
  161.  
  162. Lembram-se do que fizemos nas aulas passadas de seguir com o olho as arestas mais próximas até encontrarmos
  163. o próximo vértice para o qual poderíamos caminhar?
  164.  
  165. Vou exemplificar:
  166.  
  167. Quais o vértices adjacentes à (4,3) no problema acima?
  168.  
  169. Para descobrir isso vou trocar x5 uma não básica, com uma das 3 básicas.
  170.  
  171. Isso significa que x5 vai passar a ter valor não nulo e que uma das variáveis x1, x2 ou x4 terá agora valor nulo.
  172.  
  173. Vamos supor essa troca com a variável x4.
  174.  
  175. Se colocar x4 = 0, a restrição da variável x4:
  176.  
  177. (1) x4 = 6 + x5 - 3 x3
  178.  
  179. Vai ficar:
  180.  
  181. (2) x5 = -6 + x4 + 3 x3
  182.  
  183. Agora vejam o problema, se x4 e x3 são iguais à 0.
  184. x5 fica menor que 0. Logo essa troca é inviável.
  185. (mas ainda é uma sol. básica, ou seja um vertice de duas restrições).
  186.  
  187. Isso também vale para qualquer restrição escrita na forma (1)
  188. onde o coeficiente da variável não-básica for positivo.
  189.  
  190. Porém isso só impossibilita a troca de x5 com x4, ainda resta uma restrição
  191. cuja variável x5 não está positiva:
  192.  
  193. x2 = 3 - 1/2 x5 + 3/2 x3
  194.  
  195. Essa troca não deixará nenhuma variável com valor negativo.
  196.  
  197. x5 = 3/2 - 1/2 x2 + 3/4 x3
  198.  
  199. Agora substituindo x5 na restrição 2:
  200.  
  201. x4 = 6 + (3/2 - 1/2 x2 + 3/4 x3) - 3 x3
  202.  
  203. fica:
  204.  
  205. x4 = 15/2 - 1/2 x2 - 9/4 x3
  206.  
  207. Fazendo com que agora nosso problema seja:
  208.  
  209. x1 = 4 - x3
  210. x4 = 15/2 - 1/2 x2 - 9/4 x3
  211. x5 = 3/2 - 1/2 x2 + 3/4 x3
  212.  
  213. xb = {x1,x4,x5}
  214. xn = {x3,x2}
  215.  
  216. E x5 terá o valor de 3 meios.
  217. Ou seja encontramos um vértice adjacente que também é válido.
  218. Não expliquei ainda se esse vértice é mais próximo ou menos próximo
  219. do nosso objetivo "max 3 x1 + 5 x2", mas já aprendemos como caminhar pelo método simplex.
  220.  
  221. Percebam que nós geramos um tanto de possibilidades de troca não é verdade?
  222. Podemos trocar qualquer uma das não-básicas com qualquer uma das básicas,
  223. apesar de a maioria das trocas tornarem o problema inviável.
  224. Como eu posso ter tanta certeza de que eu consegui justamente um vértice adjacente?
  225. // Nota sobre o paragrafo acima:
  226. // Não se pode trocar uma não básica por uma básica,
  227. // se o coeficiente da não básica for 0 na linha associada a variável básica.
  228.  
  229. A certeza vem do fato de que toda solução básica representa a intercessão de duas (ou mais) restrições.
  230. Lembrando que cada restrição é uma linha, toda solução básica é um vertice.
  231. Quando se realiza uma troca, voce caminha sobre uma das linhas/restrições até encontrar o próximo vertice.
  232. (no caso saímos do ponto (4,3) e chegamos no ponto (4,0))
  233.  
  234. E como eu sei que esse vértice está dentro do campo de soluções?
  235.  
  236. Ele não está infringindo nenhuma das restrições correto? Isso basta.
  237. Quando fazemos uma troca e ela infringe uma das restrições significa que encontramos
  238. um vértice que não satisfaz todas as restrições apesar de que satisfaz ao menos duas delas.
  239.  
  240. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  241.  
  242. Certo agora como avaliar qual troca fazer para otimizar nosso objetivo?
  243.  
  244. Não é nada dificil, vamos escrever todo o nosso problema de novo:
  245.  
  246. max 3 x1 + 5 x2
  247.  
  248. x1 = 4 - x3 (antiga restrição vertical no plano cartesiano)
  249. x4 = 6 + x5 - 3 x3 (antiga restrição horizontal no plano cartesiano)
  250. x2 = 3 - 1/2 x5 + 3/2 x3 (antiga restrição diagonal no plano cartesiano)
  251.  
  252. x1,x2,x4 >= 0
  253. x3,x5 = 0
  254.  
  255. Agora nós temos de fazer uma coisa adicional para o problema ficar
  256. totalmente no modo usado pelo simplex.
  257.  
  258. Precisamos substituir os valores de x1 e de x2 no objetivo:
  259.  
  260. max 3 (4 - x3) + 5 (3 - 1/2 x5 + 3/2 x3)
  261.  
  262. max 12 - x3 + 15 - 1/2 x5 + 3/2 x3
  263.  
  264. max 27 - 1/2 x5 + 1/2 x3
  265.  
  266. Ou seja nosso problema fica:
  267.  
  268. max 27 - 1/2 x5 + 1/2 x3
  269.  
  270. x1 = 4 - x3
  271. x4 = 6 + x5 - 3 x3
  272. x2 = 3 - 1/2 x5 + 3/2 x3
  273.  
  274. x1,x2,x4 >= 0
  275. x3,x5 = 0
  276.  
  277. // Notem: já que x3 e x5 = 0, 27 é o valor do objetivo no vértice atual.
  278.  
  279. Agora lembram-se do nosso vetor gradiente que indicava qual a nossa direção?
  280. E lembram-se de que quando eu escolhi x5 para virar básica o valor de x5
  281. cresceu de 0 para um valor não nulo?
  282.  
  283. Isso significa que para avaliar o que acontecerá basta olhar para os coeficientes
  284. do objetivo ou seja para o nosso vetor gradiente.
  285.  
  286. No caso o gradiente de x5 é -1/2. Logo aumentar x5 irá diminuir o objetivo.
  287. Não é o que queremos já que buscamos o "max" e não o "min".
  288.  
  289. Logo aquela troca que sugeri anteriormente não foi uma boa escolha.
  290.  
  291. Vamos então tentar trocar x3 com uma das variáveis básicas?
  292.  
  293. Na última linha:
  294.  
  295. x2 = 3 - 1/2 x5 + 3/2 x3
  296.  
  297. A troca é inviável pois o coeficiente de x3 é positivo.
  298.  
  299. restam então duas possibilidades de troca:
  300.  
  301. x1 = 4 - x3
  302. x4 = 6 + x5 - 3 x3
  303.  
  304. Com isso chegamos ao (pen-)último ponto importante do simplex.
  305.  
  306. Atualmente x3 tem o valor 0.
  307. Se eu troca-lo com x1:
  308.  
  309. x3 = 4 - x1
  310.  
  311. Ele assumirá o valor 4.
  312. Se eu troca-lo com x4:
  313.  
  314. x3 = 6/3 + 1/3 x5 - 1/3 x4
  315. x3 = 2 + 1/3 x5 - 1/3 x4
  316.  
  317. Ele assumirá o valor 2.
  318.  
  319. Necessariamente teremos de escolher o valor menor.
  320. Porque se escolhermos o valor 4.
  321. O próximo passo é substituir o valor x3 = 4 - x1 em
  322.  
  323. x4 = 6 + x5 - 3 x3
  324. e
  325. x2 = 3 - 1/2 x5 + 3/2 x3
  326.  
  327. Em x2 = ... não haverá problema pois x2 vai ser igual 3 + o valor de x3 que é 4.
  328. Então ainda é positivo.
  329.  
  330. Agora em x4 haverá problema vejam:
  331.  
  332. x4 = 6 + x5 - 3 (4 - x1)
  333. x4 = 6 + x5 - 12 + 3 x1
  334. x4 = -6 + x5 + 3 x1
  335.  
  336. E ops, agora x4 ficou com o valor negativo.
  337. O máximo que x3 podia aumentar sem tornar x4 negativo era 2.
  338. E é por isso que devemos sempre escolher a transição que vai aumentar menos
  339. o valor da variável não básica.
  340.  
  341. Esse teste é chamado de teste da razão.
  342.  
  343. Vamos por fim, fazer a última troca. Que já sabemos ser a única das possíveis
  344. que não infringe nenhuma restrição e otimiza o objetivo "max 3 x1 + 5 x2":
  345.  
  346. x4 = 6 + x5 - 3 x3
  347.  
  348. vira:
  349.  
  350. x3 = 2 + 1/3 x5 - 1/3 x4
  351.  
  352. Substituindo o valor nas demais restrições e no objetivo teremos:
  353.  
  354. max 28 - 1/4 x5 - 1/6 x4
  355.  
  356. x1 = 2 - 1/2 x5 + 1/3 x4
  357. x3 = 2 + 1/2 x5 - 1/3 x4
  358. x2 = 6 + 1/2 x5 - 1/2 x3
  359.  
  360. x1,x2,x3 >= 0
  361. x4,x5 = 0
  362.  
  363. E pronto! Temos a solução do nosso problema!
  364.  
  365. Como eu sei que isso é a solução?
  366.  
  367. Eis a última coisa importante sobre o simplex:
  368.  
  369. O atestado de otimalidade é conseguido quando todas as variáveis do objetivo
  370. são negativas, no caso da maximização, ou positivas, no caso da minimização.
  371.  
  372. O motivo disso é que se eu avaliar meu vetor gradiente: (-1/4, -1/6)
  373.  
  374. Fica fácil de ver que não há nenhuma troca que iria otimizar mais meu objetivo.
  375. Ambas as possibilidades: x5 e x4 se deixarem de ter o valor 0 iriam contribuir negativamente
  376. para a nossa solução.
  377.  
  378. Portanto o problema já está totalmente resolvido.
  379.  
  380. // Durante uma prova, lembre-se de não terminar o algoritmo enquanto não obtiver o atestado de otimalidade.
  381. // Não basta voce ter certeza de que encontrou a solução ótima, sem o atestado voce pode perder pontos.
  382.  
  383. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  384.  
  385. Matricialmente falando a cada troca de variáveis que fazemos
  386. nós precisamos de calcular aquela inversa de B⁻¹ que falei anteriormente.
  387.  
  388. Assim nossa matriz de restrições fica:
  389.  
  390. xb = B⁻¹ b - B⁻¹ N xn
  391.  
  392. // Já falei disso antes
  393.  
  394. E substituindo xb em nosso objetivo temos:
  395.  
  396. max cb T xb + cn T xn
  397.  
  398. max cb T (B⁻¹ b - B⁻¹ N xn) + cn T xn
  399.  
  400. max cb T B⁻¹ b + cb T B⁻¹ N xn + cn T xn
  401.  
  402. Por fim:
  403.  
  404. max (cb T B⁻¹ b) + (cn T - cb T B⁻¹ N) xn
  405.  
  406. Onde o primeiro parentesis é o custo otimizado do nosso problema.
  407. // Chamado também de custo reduzido.
  408. // (to em dúvida na linha acima)
  409.  
  410. E o segundo parentesis é o nosso vetor gradiente, que multiplicado por
  411. xn nos dá nossa direção para otimizarmos.
  412.  
  413. Nenhuma grande novidade =], re-escrevendo tudo temos:
  414.  
  415. max (cb T B⁻¹ b) + (cn T - cb T B⁻¹ N) xn
  416.  
  417. xb = B⁻¹ b - B⁻¹ N xn
  418.  
  419. xb >= 0, Xn = 0
  420.  
  421. E isso é uma iteração do método simplex escrito em forma matricial =].
  422.  
  423. Vamos acabar usando analogias desse tipo no futuro, então é uma boa entender isso.
  424.  
  425. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  426.  
  427. Resumindo os passos acima:
  428.  
  429. Método Simplex:
  430.  
  431. Preparo inicial:
  432.  
  433. Primeiro escreva o problema no formato padrão, onde não existem apenas restrições de igualdade, e de não negatividade.
  434.  
  435. Segundo, escolha um conjunto de variáveis básicas e isole-os do jeito que fizemos acima,
  436. substituindo todas as aparições delas pelo valor delas em função das não-básicas.
  437.  
  438. Dessa forma fica fácil enchergar o problema.
  439.  
  440. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  441.  
  442. Agora vamos fazer as iterações do método, ou seja as trocas:
  443.  
  444. 1) No objetivo que deve estar no formato: "constante + c1 x1 + c2 x2 + ... + cn xn"
  445.  
  446. Encontre variáveis cujo incremento beneficiará seu objetivo.
  447.  
  448. Ou seja, se seu problema é de maximização procure pelos coeficientes positivos.
  449. se seu problema é de minimização procure pelos coeficientes negativos.
  450.  
  451. // Pode haver mais de uma opção, mas vamos falar disso em outra aula.
  452.  
  453. 2) Após escolher qual variavel não-básica trocar, olhe nas restrições
  454. quais restrições aceitam a troca sem criar uma variável negativa.
  455. (se voce escolheu a variável não básica x2 procure descartar
  456. as restrições onde o coeficiente de x2 for negativo ou 0
  457. pois nestas voce ou não consegue fazer a troca ou a troca
  458. tornaria x2 negativo)
  459.  
  460. 3) Das restrições que sobraram verifique qual seria o valor final da variável trocada.
  461. E escolha a troca que aumentar menos o valor da variável.
  462. Lembrando que ela vale 0 antes da troca.
  463.  
  464. 4) Re-escreva a equação em questão. Substitua os valores dela nas demais equações e fim da iteração =].
  465.  
  466. 5) Se todos os coeficientes do objetivo forem negativos/positivos (no caso da maximização e da minimização respectivamente)
  467. O método está encerrado e temos um atestado de otimalidade pronto =].
  468.  
  469. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  470.  
  471. // Daqui pra baixo não passei nada a limpo.
  472.  
  473. Agora vamos fazer um exemplo:
  474.  
  475. max 5x1 + 4x2 + 3x3
  476.  
  477. 2x1 + 3x2 + x3 = 5 -x4
  478. 4x1 + x2 + 2x3 = 11 -x5
  479. 3x1 + 4x2 + 2x3 = 8 -x6
  480.  
  481. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  482.  
  483. max 5x1 + 4x2 + 3x3
  484.  
  485. x4 = 5 -2x1 -3x2 -x3
  486. x5 = 11 - 4x1 -x2 -2x3
  487. x6 = 8 - 3x1 - 4x2 - 2x3
  488.  
  489. x1 = x2 = x3 = 0
  490.  
  491. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  492.  
  493. |x1|
  494. |x2|
  495. max (5 4 3) |x3|
  496.  
  497. ...
  498.  
  499. x1 = x2 = x3 = 0
  500.  
  501. 1° iteração:
  502. 1) entrar base x1 (x1 cresce)
  503.  
  504. 2) k=1 (x4) (B⁻¹ A1)1 = 2
  505.  
  506.  
  507. // nota pessoal: k* é o indice da linha mais restritiva (a primeira restrição que é infringida ao se caminhar por uma determinada linha do plano)
  508.  
  509. 3) (final) implementar a troca de base.
  510. nova base: {x1, x5, x6} v. básicas.
  511.  
  512. B = | 2 0 0 |
  513. | 4 1 0 |
  514. | 3 0 1 |
  515.  
  516. N = | 1 3 1 |
  517. | 0 1 2 |
  518. | 0 4 2 |
  519.  
  520. cb = (5 0 0)
  521. cn = (0 4 3)
  522.  
  523. Agora re-escreve-se a variável que saiu (no caso x1) em termo das não básicas.
  524.  
  525. re-escrevendo temos:
  526.  
  527. x1 = 5/2 - 1/2 x4 - 3/2 x2 - 1/2 x3
  528. x2 = 1 - 2 x4 - 5 x2 - 0 x3
  529. x6 = 1/2 + 3/2 x4 + 1/2 x2 - 1/2 x3
  530.  
  531. // E essa é nossa nova matriz.
  532.  
  533. Nosso novo max:
  534.  
  535. max 25/2 - 5/2 x4 - 7/2 x2 + 1/2 x3
  536.  
  537. x1 = 5/2 - 1/2 x4 - 3/2 x2 - 1/2 x3
  538. x5 = 1 + 2 x4 + 5 x2 + 0 x3
  539. x6 = 1/2 + 3/2 x4 + 1/2 x2 - 1/2 x3
  540.  
  541. // Nesse ponto podemos estar no ótimo, mas não temos certeza se estamos.
  542. // Precisamos de mais um passo para conseguirmos o atestado de otimalidade.
  543. // Condição para atestado: todos os coeficientes do objetivo negativos.
  544. // Enquanto não obtiver isso vai caminhando, se não der para caminhar, finja que caminhou só para trocar as variáveis.
  545. // Com isso deve ser possível re-escrever o objetivo de forma que todos os coeficientes dele sejam não positivos.
  546.  
  547. // No pior dos casos voce entra em loop infinito, e nunca consegue um objetivo de coeficientes não positivos.
  548. // É provado que isso só ocorrerá se no teste da razão, houverem dois caminhos possíveis e voce escolher o caminho de menor indice.
  549. // Tenho que entender isso melhor mas é mais ou menos isso: Temos a linha 1 e 3 e elas são igualmente desejáveis pelo teste da razão.
  550. // Se eu escolher a 3 pode acontecer loop. Se eu escolher 1 garanto que não havera loop.
  551.  
  552. última iteração (espero):
  553.  
  554. entra na base x3 e saí x6:
  555.  
  556. max 13 - x4 - 4 x2 - x6
  557.  
  558. x1 = 2 - 2 x4 - 2 x2 + x6
  559. x5 = 1 + 2 x4 + 5 x2
  560. x3 = 1 + 3 x4 + x2 - 2 x6
  561.  
  562. Agora finalmente, note que todos os coeficientes da função objetivo no dicionário acima são negativos!
  563. E isso é o atestado de otimálidade, significa que para qualquer lado que caminhemos só iremos piorar o caso ótimo.
  564.  
  565. 1) admite solução ótima multipla?
  566. Não. há que tem cj_ = 0 na base ótima (cond necessária)
  567.  
  568. max 10 - 2 x1 + 0 x3
  569.  
  570. x4 = 5 - 1 x1
  571. x2 = 0 + 0 x1 - x3
  572.  
  573. // Dúvida nesse ponto: O que é um vertice dejenerado?
  574. // O prof. disse que se ele não for degenerado a condição acima é necessária e suficente e não apenas necessária.
  575.  
  576. // Frase que ouvi meio solta: Na ausencia de degeneração ele não cicla.
  577. // Degenração é um numero excessivo de restrições justas em um mesmo ponto.
  578. // ou seja, um mesmo ponto ótimo pode ser expresso pela intercessões de mais de duas restrições.
Advertisement
Add Comment
Please, Sign In to add comment