Guest User

Untitled

a guest
Jun 22nd, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.00 KB | None | 0 0
  1. public void ColocarProblemaNaFormaPadrao()
  2. {
  3. precisaDeFaseUm = false;
  4.  
  5. /* Vamos colocar o problema na forma padrao */
  6. foreach (Restricao restricao in listaDeRestricoes)
  7. {
  8. /* Verificando se o b e negativo */
  9. if (restricao.Recurso < 0)
  10. {
  11. restricao.MudarSinalDosCoeficientes();
  12. restricao.Recurso = -restricao.Recurso;
  13. if (restricao.Sinal.Equals(">=")) restricao.Sinal = "<=";
  14. else restricao.Sinal = ">=";
  15. }
  16.  
  17. recurso.Add(restricao.Recurso);
  18.  
  19. if ((restricao.Sinal.Equals("<=")) || (restricao.Sinal.Equals("<")))
  20. {
  21. custosDaFuncaoObjetivo.Add(0);
  22. restricao.AdicionarNovoCoeficiente(1);
  23. }
  24. else if ((restricao.Sinal.Equals(">")) || (restricao.Sinal.Equals(">=")) || (restricao.Sinal.Equals("=")))
  25. {
  26. if (!restricao.Sinal.Equals("="))
  27. {
  28. custosDaFuncaoObjetivo.Add(0);
  29. restricao.AdicionarNovoCoeficiente(-1);
  30. }
  31.  
  32. precisaDeFaseUm = true;
  33. }
  34.  
  35. if (!restricao.Sinal.Equals("="))
  36. {
  37. foreach (Restricao outrasRestricoes in listaDeRestricoes)
  38. {
  39. if (!outrasRestricoes.Equals(restricao)) outrasRestricoes.AdicionarNovoCoeficiente(0);
  40. }
  41.  
  42. quantidadeVariaveisDepoisDaFormulacao++;
  43. }
  44. }
  45.  
  46. /* Se precisar de fase um, criamos as variaveis artificiais */
  47. if (precisaDeFaseUm) CriarVariaveisArtificiais();
  48.  
  49. /* Criamos a Matriz A (matriz dos coeficientes) */
  50. CriarMatrizA();
  51.  
  52. /* Inicializamos os valores que vao em B e N */
  53. InicializarBaseENaoBase();
  54. }
  55.  
  56. private void CriarVariaveisArtificiais()
  57. {
  58. foreach (Restricao restricao in listaDeRestricoes)
  59. {
  60. if ((restricao.Sinal.Equals(">")) || (restricao.Sinal.Equals(">=")) || (restricao.Sinal.Equals("=")))
  61. {
  62. restricao.AdicionarNovoCoeficiente(1);
  63. quantidadeVariaveisDepoisDaFormulacao++;
  64.  
  65. /* Adicionamos as variaveis artificias na base */
  66. basicas.Add(quantidadeVariaveisDepoisDaFormulacao);
  67. artificiais.Add(quantidadeVariaveisDepoisDaFormulacao);
  68.  
  69. foreach (Restricao outrasRestricoes in listaDeRestricoes)
  70. {
  71. if (!outrasRestricoes.Equals(restricao)) outrasRestricoes.AdicionarNovoCoeficiente(0);
  72. }
  73. }
  74. }
  75. }
  76.  
  77. private void InicializarBaseENaoBase()
  78. {
  79. /* Inicializando B */
  80. foreach (Restricao restricao in listaDeRestricoes)
  81. {
  82. if ((restricao.Sinal.Equals("<=")) || (restricao.Sinal.Equals("<")))
  83. {
  84. for (int contador = 0; contador < restricao.QuantidadeDeVariaveis; contador++)
  85. {
  86. if (contador >= quantidadeVariaveisAntesDaFormulacao)
  87. {
  88. if (restricao[contador] == 1) basicas.Add(contador + 1);
  89. }
  90. }
  91. }
  92. }
  93.  
  94. /* Inicializando N */
  95. for (int contador = 1; contador <= quantidadeVariaveisDepoisDaFormulacao; contador++)
  96. {
  97. if (!basicas.Contains(contador)) naoBasicas.Add(contador);
  98. }
  99.  
  100. Console.WriteLine();
  101. Console.Write("Basicas: ");
  102. foreach (int i in basicas)
  103. {
  104. Console.Write(i + " ");
  105. }
  106.  
  107. Console.WriteLine();
  108. Console.Write("Nao basicas: ");
  109. foreach (int i in naoBasicas)
  110. {
  111. Console.Write(i + " ");
  112. }
  113. Console.WriteLine();
  114. Console.WriteLine();
  115. }
  116.  
  117. private void CriarMatrizA()
  118. {
  119. int quantidadeDeLinhasDaMatriz = quantidadeRestricoes;
  120. int quantidadeDeColunasDaMatriz = quantidadeVariaveisDepoisDaFormulacao;
  121.  
  122. A = new Matriz(quantidadeDeLinhasDaMatriz, quantidadeDeColunasDaMatriz);
  123.  
  124. int i = 0;
  125. int j = 0;
  126.  
  127. foreach (Restricao restricaoAtual in listaDeRestricoes)
  128. {
  129. j = 0;
  130. for (int k = 0; k < restricaoAtual.QuantidadeDeVariaveis; k++)
  131. {
  132. A[i, j] = restricaoAtual[k];
  133. j++;
  134. }
  135. i++;
  136. }
  137.  
  138. Console.WriteLine(A);
  139. }
Add Comment
Please, Sign In to add comment