/// <summary> /// Método para mostrar el modulo de justificación de la inferencia /// </summary> private void mostrarModuloDeJustificación() { dialogo = new FormDialogoPanel(ventana_justificacion); List <string> log = new List <string>(); if (tipo_de_encadenamiento == ENCADENAMIENTO_HACIA_ATRAS) { log = motor_atras.loggeo_inferencia; } else { log = motor_adelante.loggeo_inferencia; } for (int i = 0; i < log.Count; i++) { string texto = _procesador_log_inferencia.ProcesarLineaDeLoggeo(log[i]); if (texto != null) { ventana_justificacion.agregarLineaLog(texto); } } // ventana_justificacion.agregarLineaLog(log[i]); dialogo.FormClosing += dialogo_justificacion_FormClosing; ventana_justificacion.evento_guardar += ventana_justificacion_evento_guardar; ventana_justificacion.evento_ventana_lista += evento_ventana_respuesta_lista; dialogo.ShowDialog(ventana_padre); dialogo = null; }
int[] motor_inferencia_evento_confimar_hecho(string id_hecho, string id_regla) { Regla regla = base_conocimiento.leerRegla(id_regla); Hecho hecho = base_conocimiento.leerHecho(id_hecho); Variable variable = base_conocimiento.leerVariable(hecho.id_variable); string[] lista_de_antecedentes = regla.listarAntecedentes(); Hecho[] hechos_antecedente = new Hecho[lista_de_antecedentes.Length]; for (int i = 0; i < lista_de_antecedentes.Length; i++) { hechos_antecedente[i] = base_conocimiento.leerHecho(lista_de_antecedentes[i]); } dialogo = new FormDialogoPanel(ventana_validar_hecho); dialogo.FormClosing += dialogo_FormClosing; ventana_validar_hecho.evento_respuesta_lista += evento_ventana_respuesta_lista; ventana_validar_hecho.inciarConsultaHecho(id_regla, hecho, hechos_antecedente, variable.ruta_texto_descriptivo); dialogo.ShowDialog(ventana_padre); if (terminar_inferencia) { return(null); } int[] respuestas = new int[3]; if (ventana_validar_hecho.hecho_validado) { respuestas[0] = ConstantesShell.HECHO_CONFIRMADO; } else { respuestas[0] = ConstantesShell.HECHO_DESCARTADO; } if (ventana_validar_hecho.se_soluciono_el_problema) { respuestas[1] = ConstantesShell.PROBLEMA_SOLUCIONADO; } else { respuestas[1] = ConstantesShell.PROBLEMA_NO_SOLUCIONADO; } if (ventana_validar_hecho.continuar_inferencia) { respuestas[2] = ConstantesShell.CONTINUAR_PROCESO; } else { respuestas[2] = ConstantesShell.DETENER_PROCESO; } return(respuestas); }
/// <summary> /// Método que muestra la selección del objetivo a buscar en el encadenaiento hacia atrás /// </summary> private void iniciarSeleccionDeObjetivo() { dialogo = new FormDialogoPanel(ventana_selecion_de_objetivo); dialogo.FormClosing += dialogo_FormClosing; ventana_selecion_de_objetivo.evento_comenzar += ventana_selecion_de_objetivo_evento_comenzar; ventana_selecion_de_objetivo.evento_cambio_en_seleccion_variable += ventana_selecion_de_objetivo_evento_cambio_en_seleccion_variable; string[] id_variables_objetivo = motor_atras.obtenerPosiblesVariablesObjetivos(); for (int i = 0; i < id_variables_objetivo.Length; i++) { Variable variable = base_conocimiento.leerVariable(id_variables_objetivo[i]); ventana_selecion_de_objetivo.agregarOpcionPanelVariables(variable.id_variable, variable.nombre_variable); } ventana_selecion_de_objetivo.titulo = metadatos.titulo_sistema_experto; dialogo.ShowDialog(ventana_padre); dialogo = null; if (!terminar_inferencia) { motor_atras.establecerHechoObjetivo(ventana_selecion_de_objetivo.id_estado_chequeada); } }
/// <summary> /// Método que inicializa en motor de inferencia y muestra la ventana inicial /// </summary> private void iniciarVentana() { if (tipo_de_encadenamiento == ENCADENAMIENTO_HACIA_ATRAS) { motor_atras = new EncadenamientoHaciaAtras(); string errores = motor_atras.inicializarEncadenamiento(); if (errores != null) { MessageBox.Show(errores, "Proceso de inferencia", MessageBoxButtons.OK, MessageBoxIcon.Error); terminar_inferencia = true; return; } } else if (tipo_de_encadenamiento == ENCADENAMIENTO_HACIA_ADELANTE) { motor_adelante = new EncadenamientoHaciaAdelante(); string errores = motor_adelante.inicializarEncadenamiento(); if (errores != null) { MessageBox.Show(errores, "Proceso de inferencia", MessageBoxButtons.OK, MessageBoxIcon.Error); terminar_inferencia = true; return; } } else { throw new System.ArgumentException("Opción invalida de encadenamiento", "GestorMotorInferencia - iniciarVentana"); } ventana_inicial.tiulo_sistema_experto = metadatos.titulo_sistema_experto; ventana_inicial.ruta_rtf_descripcion = metadatos.ruta_rtf_descripcion_sistema_experto; ventana_inicial.ruta_imagen_logo = metadatos.ruta_imagen_logo_sistema_experto; dialogo = new FormDialogoPanel(ventana_inicial); ventana_inicial.evento_continuar += pantalla_inicial_evento_continuar; dialogo.FormClosing += dialogo_FormClosing; dialogo.ShowDialog(ventana_padre); ventana_inicial.liberarRecursosImagenLogo(); dialogo = null; }
ArrayList motor_inferencia_evento_consultar_variable(string id_variable) { Variable variable = base_conocimiento.leerVariable(id_variable); dialogo = new FormDialogoPanel(ventana_preguntar_variable); dialogo.FormClosing += dialogo_FormClosing; ventana_preguntar_variable.evento_respuesta_lista += evento_ventana_respuesta_lista; ventana_preguntar_variable.consultarVariable(variable); dialogo.ShowDialog(ventana_padre); if (terminar_inferencia) { return(null); } ArrayList respuesta_pregunta = ventana_preguntar_variable.obtenerResultadosPregunta(); //Limpiando dialogo //evento_interno = true; //dialogo.Dispose(); dialogo = null; return(respuesta_pregunta); }