public ResponseProbabilisticMethod MethodEMV() { ResponseProbabilisticMethod responseProbabilisticMethod = new ResponseProbabilisticMethod(); int Ncol = Nest + 2; int Nfil = Nalter + 1; string[,] matrizEMV = new string[Nfil, Ncol]; matrizEMV[0, 0] = "Alt/Est"; //Llenar titulos de estados for (int i = 1; i < Ncol; i++) { if (i < Estado.GetLength(0) + 1) { matrizEMV[0, i] = Estado[i - 1]; } else { matrizEMV[0, i] = "EMV"; } } //Llenar titulos de alternativas for (int i = 1; i < Nfil; i++) { matrizEMV[i, 0] = Alter[i - 1]; } //Llena resuldtados double resultEMV = Double.MinValue; int AltBest = 1; for (int i = 0; i < Resultado.GetLength(0); i++) { double valEMV = 0; for (int j = 0; j < Resultado.GetLength(1); j++) { matrizEMV[i + 1, j + 1] = Convert.ToDouble(Resultado[i, j]).ToString(); valEMV += Resultado[i, j] * Probailidades[j]; } if (valEMV > resultEMV) { resultEMV = valEMV; AltBest = i + 1; } matrizEMV[i + 1, Resultado.GetLength(1) + 1] = valEMV.ToString(); } responseProbabilisticMethod.Matriz = matrizEMV; responseProbabilisticMethod.Result = "Alternativa óptima: " + AltBest + " " + matrizEMV[AltBest, 0] + " - Valoración: " + resultEMV; return(responseProbabilisticMethod); }
public ResponseProbabilisticMethod MethodSensitivityAnalysis() { ResponseProbabilisticMethod responseProbabilisticMethod = new ResponseProbabilisticMethod(); int Ncol = Nalter + 1; int Nfil = 12; string[,] matrizEMV = new string[Nfil, Ncol]; matrizEMV[0, 0] = "Prob/EMV"; //Llenar titulos de columnas for (int i = 1; i < Ncol; i++) { matrizEMV[0, i] = "EMV-" + Alter[i - 1]; } double[] prob = new double[11]; double x = 0.0; //Llenar titulos de alternativas for (int i = 1; i < Nfil; i++) { prob[i - 1] = x; matrizEMV[i, 0] = x.ToString(); x += 0.1; } for (int i = 1; i < matrizEMV.GetLength(0); i++) { for (int j = 1; j < matrizEMV.GetLength(1); j++) { matrizEMV[i, j] = GetValueEMV(prob[i - 1], j - 1).ToString(); } } string[,] transpuesta = new string[matrizEMV.GetLength(1), matrizEMV.GetLength(0)]; for (int a = 0; a < matrizEMV.GetLength(0); a++) { for (int b = 0; b < matrizEMV.GetLength(1); b++) { transpuesta[b, a] = matrizEMV[a, b]; } } responseProbabilisticMethod.Matriz = transpuesta; return(responseProbabilisticMethod); }
public ResponseProbabilisticMethod MethodEMV() { ResponseProbabilisticMethod responseProbabilisticMethod = new ResponseProbabilisticMethod(); int Ncol = Nest + 2; int Nfil = Nalter + 1; string[,] matrizEMV = new string[Nfil, Ncol]; //Llenar titulos de estados for (int i = 1; i < Ncol; i++) { if (i < Estado.GetLength(0) + 1) { matrizEMV[0, i] = Estado[i - 1]; } else { matrizEMV[0, i] = "EMV"; } } //Llenar titulos de alternativas for (int i = 1; i < Nfil; i++) { matrizEMV[i, 0] = Alter[i - 1]; } //Llena resuldtados for (int i = 0; i < Resultado.GetLength(0); i++) { double valEMV = 0; for (int j = 0; j < Resultado.GetLength(1); j++) { matrizEMV[i + 1, j + 1] = Convert.ToDouble(Resultado[i, j]).ToString(); valEMV += Resultado[i, j] * Probailidades[j]; } matrizEMV[i + 1, Resultado.GetLength(1) + 1] = valEMV.ToString(); } responseProbabilisticMethod.Matriz = matrizEMV; return(responseProbabilisticMethod); }
public ResponseProbabilisticMethod MethodEOL() { ResponseProbabilisticMethod responseProbabilisticMethod = new ResponseProbabilisticMethod(); int Ncol = Nest + 2; int Nfil = Nalter + 1; string[,] matrizEMV = new string[Nfil, Ncol]; //Llenar titulos de estados for (int i = 1; i < Ncol; i++) { if (i < Estado.GetLength(0) + 1) { matrizEMV[0, i] = Estado[i - 1]; } else { matrizEMV[0, i] = "EMV"; } } //Llenar titulos de alternativas for (int i = 1; i < Nfil; i++) { matrizEMV[i, 0] = Alter[i - 1]; } //Construir matriz de pérdidas relativas double[,] PerdidaRel = new double[Nalter, Nest]; double Maximo = Double.MaxValue; for (int j = 0; j < Nest; j++) { Maximo = Double.NegativeInfinity; for (int i = 0; i < Nalter; i++) { if (Resultado[i, j] > Maximo) { Maximo = Resultado[i, j]; } } for (int i = 0; i < Nalter; i++) { PerdidaRel[i, j] = Maximo - Resultado[i, j]; } } //Llena resuldtados for (int i = 0; i < PerdidaRel.GetLength(0); i++) { double valEMV = 0; for (int j = 0; j < PerdidaRel.GetLength(1); j++) { matrizEMV[i + 1, j + 1] = Convert.ToDouble(PerdidaRel[i, j]).ToString(); valEMV += PerdidaRel[i, j] * Probailidades[j]; } matrizEMV[i + 1, PerdidaRel.GetLength(1) + 1] = valEMV.ToString(); } responseProbabilisticMethod.Matriz = matrizEMV; return(responseProbabilisticMethod); }