public string RetornarTabela() { string txtresultvalores = null; for (int L = 0; L < Tabela.GetLength(0); L++) { if (L > 0) { txtresultvalores = txtresultvalores + Environment.NewLine; } for (int C = 0; C < Tabela.GetLength(1); C++) { txtresultvalores = txtresultvalores + (Tabela[L, C].ToString("n2") + " "); } } return(txtresultvalores); }
public string RetornarMatRestricoes() { string txtresultvalores = null; for (int L = 0; L < ValorVariaveis.GetLength(0); L++) { if (L > 0) { txtresultvalores = txtresultvalores + Environment.NewLine; } for (int C = 0; C < ValorVariaveis.GetLength(1); C++) { txtresultvalores = txtresultvalores + " " + (ValorVariaveis[L, C] + " "); } } return(txtresultvalores); }
public ParametroFase1 Resultado(float[,] Tabela, string[,] ValorVariaveis, bool EstadoAtipico) { if (EstadoAtipico == true) //Se nos procedimentos de analises foi encontrado algo átipico na Tabela Simplex demontrar a tabela sem resultados; { //txtfase.Text = "DEMONSTRAÇÃO TABELA"; //txtresult.Text = "Estado atípico ocorrido !!!"; txtresultvalores = new ParametroFase1(); for (int L = 0; L < Tabela.GetLength(0); L++) { if (L > 0) { txtresultvalores.resultvalores += Environment.NewLine; } for (int C = 0; C < Tabela.GetLength(1); C++) { txtresultvalores.resultvalores += (Math.Round(Tabela[L, C], 2) + " "); } } } else { //txtfase.Text = "DEMONSTRAÇÃO TABELA"; txtresultvalores = new ParametroFase1(); for (int L = 0; L < Tabela.GetLength(0); L++) { if (L > 0) { txtresultvalores.resultvalores += Environment.NewLine; } if (L > 0) { for (int C = 0; C < Tabela.GetLength(1); C++) { txtresultvalores.resultvalores += Environment.NewLine + (Math.Round(Tabela[L, C], 2) + " "); } } } txtresultvalores = new ParametroFase1(); if ((Tabela[0, 0]) < 0) { txtresultvalores.result += "RESPOSTAS: Z = " + -(Math.Round(Tabela[0, 0], 2)) + ";"; } else { txtresultvalores.result += "RESPOSTAS: Z = " + (Math.Round(Tabela[0, 0], 2)) + ";"; } for (int L = 0; L < ValorVariaveis.GetLength(0); L++) { if (L > 0) { txtresultvalores.resultvalores += Environment.NewLine; } for (int C = 0; C < ValorVariaveis.GetLength(1); C++) { if (L == 0) { txtresultvalores.resultvalores += (ValorVariaveis[L, C] + " | "); } if (L == 1) { if (float.Parse(ValorVariaveis[L, C]) < 0) { txtresultvalores.resultvalores += 0 + " "; } else { txtresultvalores.resultvalores += ValorVariaveis[L, C] + " "; } } } } } return(txtresultvalores); }
public void AlgoritmoTroca(float[,] Tabela, float[] VetLinhaPermitida, float[] VetColunaPermitida, string[,] ValorVariaveis, float EP, int ControleLinha, int ControleColuna) { float[] SubCelulasColuna = new float[VetColunaPermitida.Length]; //Vetor que contem os valores da sub-células Inferiores da Coluna Permitida; float[,] NovaTabela = new float[Tabela.GetLength(0), Tabela.GetLength(1)]; //Matriz que receberá os novos valores advindos dos cálculos da Tabela Simplex recebida; for (int L = 0; L < Tabela.GetLength(0); L++) //FOR que preenche o vetor SubCelulaColuna e parte da Nova Tabela Simplex; { for (int C = 0; C < Tabela.GetLength(1); C++) //Preenchimento da Linha Permitida e Coluna Permitida da Nova Tabela SImplex; { if ((Tabela[L, C] == VetLinhaPermitida[C]) && (ControleLinha == L)) //Multiplica-se toda a linha pelo EP Inverso; { NovaTabela[L, C] = VetLinhaPermitida[C] * (1 / EP); } if ((Tabela[L, C] == VetColunaPermitida[L]) && (ControleColuna == C)) //Multiplica-se toda a coluna pelo - (EP Inverso) { NovaTabela[L, C] = VetColunaPermitida[L] * -(1 / EP); SubCelulasColuna[L] = NovaTabela[L, C]; } if ((Tabela[L, C] == EP) && (ControleLinha == L) && (ControleColuna == C)) //Calcula-se o inverso do Elemento Permitido; { NovaTabela[L, C] = 1 / EP; SubCelulasColuna[L] = NovaTabela[L, C]; } } } for (int L = 0; L < Tabela.GetLength(0); L++) //FOR que termina de preencher a Nova Tabela Simplex utilizando dos valores da SubCelula; { for (int C = 0; C < Tabela.GetLength(1); C++) { if ((C != ControleColuna) && (L != ControleLinha)) //IF que verifica se célula da Nova Tabela ja foi preenchida anteriormente, se estiver vazia então executa os procedimento; { NovaTabela[L, C] = SubCelulasColuna[L] * VetLinhaPermitida[C]; //Multiplica-se a (SCS) marcada em sua respectiva coluna com a (SCI) marcada de sua respectiva linha; NovaTabela[L, C] = Tabela[L, C] + NovaTabela[L, C]; //Somam-se as (SCI) com as (SCS) das demais células restantes da tabela original; } } } for (int L = 0; L < Tabela.GetLength(0); L++) //FOR repassa novos valores obtidos para a Tabela Simplex original; { for (int C = 0; C < Tabela.GetLength(1); C++) { Tabela[L, C] = NovaTabela[L, C]; } } //Após executar procedimento de troca necessário trocar de posição a variável não básica com a variável básica, ambas definidas como “Permitidas na tabela anterior; int aux = 1; //Variavel auxiliar para verificar os valores das variaveis básicas na tabela simplex; string variavel = ""; //Variavel auxiliar que receberá a variavel da Coluna Permitida que será trocada pela variavel da Linha Permitida; for (int cont = 0; cont < ValorVariaveis.GetLength(1); cont++) { if (cont < (Tabela.GetLength(1) - 1)) { ValorVariaveis[1, cont] = string.Concat(Math.Round(Tabela[0, cont + 1], 2)); //Adicionando na linha2 os valores respectivos as variaveis não-básicas; } else { ValorVariaveis[1, cont] = string.Concat(Math.Round(Tabela[aux, 0], 2)); //Adicionando na linha2 os valores respectivos as variaveis básicas; aux++; } } if (string.Concat(Tabela[0, ControleColuna]) == ValorVariaveis[1, ControleColuna - 1]) //Verifica valor da variavel não basica que será trocada; { aux = ControleColuna - 1; //'-1' para eliminar a coluna "Membro Livre", aux recebe o valor da coluna que contem a variavel que será trocada; variavel = ValorVariaveis[0, aux]; //Variavel auxiliar recebe a variavel não basica que será trocada; } for (int cont = 0; cont < ValorVariaveis.GetLength(1); cont++) //Verifica valor da variavel basica que será trocada; { if ((string.Concat(Tabela[ControleLinha, 0]) == ValorVariaveis[1, cont]) && (cont >= (Tabela.GetLength(1) - 1))) { ValorVariaveis[0, aux] = ValorVariaveis[0, cont]; //Troca da variavel nao basica pela basica; aux = cont; //aux recebe o valor da coluna que contem a variavel que será trocada; } } ValorVariaveis[0, aux] = variavel; //Troca da variavel basica pela não basica; //txtresult.Text = "Impressão dos novos valores das variáveis!"; txtresultvalores = new ParametroFase1(); for (int L = 0; L < ValorVariaveis.GetLength(0); L++) { if (L > 0) { txtresultvalores.resultvalores += Environment.NewLine; } for (int C = 0; C < ValorVariaveis.GetLength(1); C++) { txtresultvalores.resultvalores += (ValorVariaveis[L, C] + " "); } } //MessageBox.Show("Pressione ok para para continuar !!!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information); }