private void button1_Click(object sender, EventArgs e) { label9.Text = ""; // Queue<criterio> colaCri = dato.colaCriterios(id_proyecto); List<comparacion_alternativa> listaAlt; listaAlt = dato.compAlternativaPorExpertoCriterio(id_proyecto, id_experto, id_criterio); int cantidadFilas = 1; foreach (comparacion_alternativa comp in listaAlt) { if (comp.pos_fila == 0) cantidadFilas++; } double[,] matrizAlt = new double[cantidadFilas, cantidadFilas]; foreach (comparacion_alternativa comp in listaAlt) { matrizAlt[comp.pos_fila, comp.pos_columna] = (double)comp.valor; } int tope = cantidadFilas; for (int i = 0; i < tope; i++) { for (int j = 0; j < tope; j++) { if (i == j) matrizAlt[i, j] = 1; else if (i > j) matrizAlt[i, j] = (double)1 / (matrizAlt[j, i]); } } ConsistenciaMatriz consistencia = new ConsistenciaMatriz(); if (consistencia.calcularConsistencia(matrizAlt)) { dato.actualizarMatrizAlternativa(id_proyecto, id_experto, id_criterio, true); button1.Visible = true; //this.button3.Enabled = true; //this.button3.Visible = true; MessageBox.Show("Matriz consistente."); } else { string NombreAlternativaA; string NombreAlternativaB; mejorada = consistencia.buscarMejoresConsistencia(matrizAlt); double[] posicionRecomendada = MaxValueIJ(mejorada); Int32 fila = (Int32)posicionRecomendada[0]; Int32 columna = (Int32)posicionRecomendada[1]; List<alternativa> listaAlternativas = dato.alternativasPorProyecto(id_proyecto); NombreAlternativaA = listaAlternativas[fila].nombre; NombreAlternativaB = listaAlternativas[columna].nombre; Int32 M = (Int32)posicionRecomendada[2]; double mejorValor = mejorada[M, 2]; if (mejorada[0, 0] < mejorada[0, 1]) { label9.Text = NombreAlternativaA + " " + "deberia ser " + dato.obtenerDescripcion(mejorValor) + " " + NombreAlternativaB; } else { label9.Text = NombreAlternativaB + " " + "deberia ser " + dato.obtenerDescripcion((double)1 / mejorValor) + " " + NombreAlternativaA; } } }
private void button1_Click(object sender, EventArgs e) { label9.Text = ""; List<comparacion_criterio> listaComparacion = dato.comparacionCriterioPorExperto(id_proyecto, id_experto); int cantFilas = 1; foreach (comparacion_criterio comp in listaComparacion) { if (comp.pos_fila == 0) cantFilas++; } double[,] matriz = new double[cantFilas,cantFilas]; foreach(comparacion_criterio comp in listaComparacion) { matriz[comp.pos_fila, comp.pos_columna] = (double)comp.valor; } int limite = cantFilas; for (int i = 0; i < limite; i++) { for (int j = 0; j < limite; j++) { if (i == j) matriz[i, j] = 1; else if (i > j) matriz[i, j] = (double)1 / (matriz[j, i]); } } ConsistenciaMatriz consistencia = new ConsistenciaMatriz(); if (consistencia.calcularConsistencia(matriz)) { dato.actualizarMatrizCriterio(id_proyecto, id_experto, true); MessageBox.Show("Matriz consistente."); } else { string NombreCriterioA; string NombreCriterioB; mejorada = consistencia.buscarMejoresConsistencia(matriz); double[] posicionRecomendada = MaxValueIJ(mejorada); Int32 fila = (Int32)posicionRecomendada[0]; Int32 columna = (Int32)posicionRecomendada[1]; List<criterio> listaCriterios = dato.criteriosPorProyecto(id_proyecto); NombreCriterioA = listaCriterios[fila].nombre; NombreCriterioB = listaCriterios[columna].nombre; Int32 M = (Int32)posicionRecomendada[2]; double mejorValor = mejorada[M, 2]; if (mejorada[0, 0] < mejorada[0, 1]) { label9.Text = NombreCriterioA + " " + "deberia ser " + dato.obtenerDescripcion(mejorValor) + " " + NombreCriterioB; } else { label9.Text = NombreCriterioB + " " + "deberia ser " + dato.obtenerDescripcion((double)1 / mejorValor) + " " + NombreCriterioA; } } }