sistema experto básico en netbeans
TRANSCRIPT
-
8/15/2019 Sistema Experto Básico en NetBeans
1/20
Héctor Noguez Cruz
Tópicos de Control Avanzado
Tarea 2: “ Sistema Experto para orientación vocacional”
Descripción: Se realiza las capturas de pantalla del ejercicio 4
Realizado en MatLab.
Bibliografía:
-
Apuntes de Clase.
-
https://www.youtube.com/watch?v=W85qBjRVJEA
-
https://www.youtube.com/watch?v=W85qBjRVJEAhttps://www.youtube.com/watch?v=W85qBjRVJEAhttps://www.youtube.com/watch?v=W85qBjRVJEA
-
8/15/2019 Sistema Experto Básico en NetBeans
2/20
INTRODUCCIÓN
Se plantea un SE para la orientación vocacional de los alumnos de preparatoria, para dar una ayuda
a tomar la decisión de la carrera o profesión para la que son buenos y a la que se deberían encaminar
después de concluir sus estudio de educación preparatoria.
INTERFAZ DEL USUARIO
Es una interfaz gráfica, programada en java que consta de un cuadro de diálogo para iteractuar con
la persona. La interacción se hará en base a una serie de preguntas que después de ser procesadas
entregara el resultado en pantalla.
MECANIZMO DE INFERENCIA
Está basado en un mecanismo IF THEN, y registrado en una matriz de 10 x 6 para guardar los datos
de las respuestas del usuario.
Ilustración 1Pantalla de interfaz con el usuario
Ilustración 2Mecanizmo de inferencia
programado en NETBEANS
-
8/15/2019 Sistema Experto Básico en NetBeans
3/20
BASE DE CONOCIMIENTO
La base de conocimiento está fundamentada en el cuestionario de habilidades y aptitudes de Luis
Herrera y Montes. El cuál ofrece una guía a los psicologos que realizan los perfiles vocacionales de
algunos de los jovenes de nuestro estado. Consta de un listado de 60 preguntas las cuales se
acomodan en 10 columnas de 6 espacios cada una la suma de las respuestas dadas por columna se
pondera con un listado de porcentajes por cantidad de puntos ddo por el mismo autor, al tener el
porcentaje se comparan las columnas y la de vlor mas alto gana desplegando un mensaje con la
orientacióon vocacional.
RESULTADOS
Ilustración 3Se despliegan as preguntas y el cuadro de dialogo para anotar la calificación del 0 al 4
Ilustración 4 Al terminar las preguntas, despliega la respuesta en un cuadro de diálogo de igual manera
-
8/15/2019 Sistema Experto Básico en NetBeans
4/20
CÓDIGO EN NETBEANS
import javax.swing.JOptionPane;
import javax.swing.ImageIcon;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Noguez
*/
public class Vprin extends javax.swing.JFrame {
int ren[][];
int cont1=0, cont2=0;
int boton=0;
double suma1, suma2, suma3, suma4, suma5, suma6, suma7, suma8, suma9, suma10;
double s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;
String calif;
/**
* Creates new form Vprin
*/
public Vprin() {
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
-
8/15/2019 Sistema Experto Básico en NetBeans
5/20
*/
@SuppressWarnings("unchecked")
//
private void initComponents() {
buttonGroup1 = new javax.swing.ButtonGroup();
jTextField1 = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
jButton2 = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jTextField1.setText("Bienvenido pulsa comenzar");
jTextField1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTextField1ActionPerformed(evt);
}
});
jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jTextArea1.setText("4 Me gustaría mucho\n3 Me gustaría un poco\n2 Me es indiferente\n1
Me desagrada un poco\n0 Me desagrada mucho\n");
jScrollPane1.setViewportView(jTextArea1);
jButton2.setText("Comenzar");
jButton2.addActionListener(new java.awt.event.ActionListener() {
-
8/15/2019 Sistema Experto Básico en NetBeans
6/20
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jLabel1.setBackground(new java.awt.Color(102, 153, 255));
jLabel1.setFont(new java.awt.Font("Times New Roman", 2, 18)); // NOI18N
jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel1.setText("Programa de orientación Vocacional");
jLabel2.setText("Panel de Preguntas ");
jLabel3.setIcon(new javax.swing.ImageIcon("C:\\Users\\Noguez\\Desktop\\vocacional.jpg"));
// NOI18N
jLabel3.setText("jLabel3");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jTextField1)
.addContainerGap())
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 332,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
-
8/15/2019 Sistema Experto Básico en NetBeans
7/20
.addGap(41, 41, 41)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 191,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(67, 67, 67)
.addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 277,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 78,
Short.MAX_VALUE)
.addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 143,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(89, 89, 89))
.addGroup(layout.createSequentialGroup()
.addGap(20, 20, 20)
.addComponent(jLabel2)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(20, Short.MAX_VALUE)
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 35,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel1)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 57,
javax.swing.GroupLayout.PREFERRED_SIZE)
-
8/15/2019 Sistema Experto Básico en NetBeans
8/20
.addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 240,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(75, 75, 75))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING,
layout.createSequentialGroup()
.addGap(91, 91, 91)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 159,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())))
);
pack();
}//
private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
ren= new int[6][10];
int i;
int j;
for (i=0;i
-
8/15/2019 Sistema Experto Básico en NetBeans
9/20
jTextField1.setText("¿Que tan hábil me concidero para ser jefe de un equipo o grupo?");
}
if (i==0 && j==2){
jTextField1.setText("¿Que tan hábil me concidero para expresarme en clase o platicar con mis
amigos?");
}
if (i==0 && j==3){
jTextField1.setText("¿Que tan hábil me concidero para dibujar objetos, figuras humanas, etc?");
}
if (i==0 && j==4){
jTextField1.setText("¿Que tan hábil me concidero para cantar en un coro?");
}
if (i==0 && j==5){
jTextField1.setText("¿Que tan hábil me concidero para llevar en orden y fora correcta mis
apuntes de clase?");
}
if (i==0 && j==6){
jTextField1.setText("¿Que tan hábil me concidero para Entender experimentos y principios de
biologia?");
}
if (i==0 && j==7){
jTextField1.setText("¿Que tan hábil me concidero para ejecutar con rapidez y exactitud
operaciones aritmeticas?");
}
if (i==0 && j==8){
jTextField1.setText("¿Que tan hábil me concidero para armar y componer objetos electricos-
mecanicos?");
}
if (i==0 && j==9){
jTextField1.setText("¿Que tan hábil me concidero para Realizar actividades que requieren
destreza manual?");
}
if (i==1 && j==0){
-
8/15/2019 Sistema Experto Básico en NetBeans
10/20
jTextField1.setText("¿Que tan hábil me concidero para ser miembro activo y participar en un
club social?");
}
if (i==1 && j==1){
jTextField1.setText("¿Que tan hábil me concidero para dirigir y organizar encuentros deportivos,
festivales, excursiones o campañas?");
}
if (i==1 && j==2){
jTextField1.setText("¿Que tan hábil me concidero para redactar composiciones o artículos
periodísticos?");
}
if (i==1 && j==3){
jTextField1.setText("¿Que tan hábil me concidero para pintar paisajes?");
}
if (i==1 && j==4){
jTextField1.setText("¿Que tan hábil me concidero para aprender a tocar un instrumento
musical?");
}
if (i==1 && j==5){
jTextField1.setText("¿Que tan hábil me concidero para ordenar y clasificar debidamentedocumentos en una oficina?");
}
if (i==1 && j==6){
jTextField1.setText("¿Que tan hábil me concidero para entender principios y experimentos de
Física?");
}
if (i==1 && j==7){
jTextField1.setText("¿Que tan hábil me concidero para resolver principios de Aritmética?");
}
if (i==1 && j==8){
jTextField1.setText("¿Que tan hábil me concidero para desarmar, armar y componer objetos
complicados?");
}
-
8/15/2019 Sistema Experto Básico en NetBeans
11/20
if (i==1 && j==9){
jTextField1.setText("¿Que tan hábil me concidero para manejar herramientas de carpintería?");
}
if (i==2 && j==0){
jTextField1.setText("¿Que tan hábil me concidero para colaborar con otros para el bien?");
}
if (i==2 && j==1){
jTextField1.setText("¿Que tan hábil me concidero para convencer a otros para que hagan lo que
tú crees que se debe hacer?");
}
if (i==2 && j==2){
jTextField1.setText("¿Que tan hábil me concidero para componer versos en serio o en chiste?");
}
if (i==2 && j==3){
jTextField1.setText("¿Que tan hábil me concidero para decorar artísticamente un salón,
corredor o patio para un festival?");
}
if (i==2 && j==4){
jTextField1.setText("¿Que tan hábil me concidero para distinguir cuando alguien desentona al
cantar o al tocar un instrumento?");
}
if (i==2 && j==5){
jTextField1.setText("¿Que tan hábil me concidero para contestar y redactar correctamente
cartas y oficios?");
}
if (i==2 && j==6){
jTextField1.setText("¿Que tan hábil me concidero para entender principios y experimentos de
Química?");
}
if (i==2 && j==7){
jTextField1.setText("¿Que tan hábil me concidero para resolver rompecabezas de números?");
}
-
8/15/2019 Sistema Experto Básico en NetBeans
12/20
if (i==2 && j==8){
jTextField1.setText("¿Que tan hábil me concidero para armar rompecabezas de alambre y
madera?");
}
if (i==2 && j==9){
jTextField1.setText("¿Que tan hábil me concidero para manejar herramientas mecánicas como
pinzas, desarmadores o llaves de tuercas?");
}
if (i==3 && j==0){
jTextField1.setText("¿Que tan hábil me concidero para escuchar a otros con paciencia y
entender sus puntos de vista?");
}
if (i==3 && j==1){
jTextField1.setText("¿Que tan hábil me concidero para dar órdenes a otros con seguridad y
naturalidad?");
}
if (i==3 && j==2){
jTextField1.setText("¿Que tan hábil me concidero para escribir cuentos, narraciones o
historietas?");
}
if (i==3 && j==3){
jTextField1.setText("¿Que tan hábil me concidero para moldear con barro, plastilina o grabar
madera?");
}
if (i==3 && j==4){
jTextField1.setText("¿Que tan hábil me concidero para aprender a entonar canciones de
moda?");
}
if (i==3 && j==5){
jTextField1.setText("¿Que tan hábil me concidero para manejar y anotar con exactitud y rapidez
nombres, números y datos en general?");
}
if (i==3 && j==6){
-
8/15/2019 Sistema Experto Básico en NetBeans
13/20
jTextField1.setText("¿Que tan hábil me concidero para entender principios y hechos económicos
y sociales?");
}
if (i==3 && j==7){
jTextField1.setText("¿Que tan hábil me concidero para resolver problemas de Algebra.?");
}
if (i==3 && j==8){
jTextField1.setText("¿Que tan hábil me concidero para armar y componer muebles?");
}
if (i==3 && j==9){
jTextField1.setText("¿Que tan hábil me concidero para manejar con habilidad pequeñas
herramientas de relojería y joyería?");
}
if (i==4 && j==0){
jTextField1.setText("¿Que tan hábil me concidero para conversar en las reuniones y fiestas con
acierto y naturalidad?");
}
if (i==4 && j==1){
jTextField1.setText("¿Que tan hábil me concidero para dirigir un grupo o equipo en
situaciones?");
}
if (i==4 && j==2){
jTextField1.setText("¿Que tan hábil me concidero para saber distinguir y apreciar la buena
literatura?");
}
if (i==4 && j==3){
jTextField1.setText("¿Que tan hábil me concidero para saber distinguir y apreciar la buenapintura?");
}
if (i==4 && j==4){
jTextField1.setText("¿Que tan hábil me concidero para saber distinguir y apreciar la buena
música?");
}
-
8/15/2019 Sistema Experto Básico en NetBeans
14/20
if (i==4 && j==5){
jTextField1.setText("¿Que tan hábil me concidero para ncargarme de recibir, anotar y dar
recados sin olvidar detalles?");
}
if (i==4 && j==6){
jTextField1.setText("¿Que tan hábil me concidero para entender las causas que determinan los
acontecimientos históricos?");
}
if (i==4 && j==7){
jTextField1.setText("¿Que tan hábil me concidero para resolver problemas de geometría?");
}
if (i==4 && j==8){
jTextField1.setText("¿Que tan hábil me concidero para aprender el funcionamiento de
mecanismos con motores, bombas, etc?");
}
if (i==4 && j==9){
jTextField1.setText("¿Que tan hábil me concidero para hacer trazos geométricos con ayuda de la
“T” las escuadras y el compás?");
}
if (i==5 && j==0){
jTextField1.setText("¿Que tan hábil me concidero para actuar con desinterés y condolencia?");
}
if (i==5 && j==1){
jTextField1.setText("¿Que tan hábil me concidero para corregir a los demás sin ofenderlos?");
}
if (i==5 && j==2){
jTextField1.setText("¿Que tan hábil me concidero para exponer juicios públicamente sin
preocupaciones de la crítica?");
}
if (i==5 && j==3){
jTextField1.setText("¿Que tan hábil me concidero para colaborar en la elaboración de un libro
sobre Arte o Arquitectura?");
}
-
8/15/2019 Sistema Experto Básico en NetBeans
15/20
if (i==5 && j==4){
jTextField1.setText("¿Que tan hábil me concidero para dirigir un conjunto musical?");
}
if (i==5 && j==5){
jTextField1.setText("¿Que tan hábil me concidero para colaborar en el desarrollo de métodosmás eficientes de trabajo?");
}
if (i==5 && j==6){
jTextField1.setText("¿Que tan hábil me concidero para realizar investigaciones científicas?");
}
if (i==5 && j==7){
jTextField1.setText("¿Que tan hábil me concidero para enseñar a resolver problemas dematemáticas?");
}
if (i==5 && j==8){
jTextField1.setText("¿Que tan hábil me concidero para inducir a las gentes a obtener resultados
prácticos?");
}
if (i==5 && j==9){
jTextField1.setText("¿Que tan hábil me concidero para participar en concursos de modalismo de
coches, aviones, barcos, etc?");
}
calif=JOptionPane.showInputDialog("Califica cuanto te gusta del 0 al 4");
boton=Integer.parseInt(calif);
ren[i][j]=boton;
}
}
for (j=0;j
-
8/15/2019 Sistema Experto Básico en NetBeans
16/20
if(j==0){
s1=ren[i][j]+s1;
suma1=s1*4.167;
}
if(j==1){
s2=ren[i][j]+s2;
s2=s2*4.167;
}
if(j==2){
s3=ren[i][j]+s3;
suma3=s3*4.167;
}
if(j==3){
s4=ren[i][j]+s4;
suma4=s4*4.167;
}
if(j==4){
s5=ren[i][j]+s5;
suma5=s5*4.167;
}
if(j==5){
s6=ren[i][j]+s6;
suma6=s6*4.167;
}
if(j==6){
s7=ren[i][j]+s7;
suma7=s7*4.167;
}
if(j==7){
s8=ren[i][j]+s8;
-
8/15/2019 Sistema Experto Básico en NetBeans
17/20
suma8=s8*4.167;
}
if(j==8){
s9=ren[i][j]+s9;
suma9=s9*4.167;
}
if(j==9){
s10=ren[i][j]+s10;
suma10=s10*4.167;
}
}
}
if(suma1>suma2&&suma1>suma3&&suma1>suma4&&suma1>suma5&&suma1>suma6&&suma1
>suma7&&suma1>suma8&&suma1>suma9&&suma1>suma10){
JOptionPane.showMessageDialog(null, "Humanidades: Servicio Social");
}
if(suma2>suma1&&suma2>suma3&&suma2>suma4&&suma2>suma5&&suma2>suma6&&suma2
>suma7&&suma2>suma8&&suma2>suma9&&suma2>suma10){
JOptionPane.showMessageDialog(null, "Economico - Administrativo: Ejecutivo Persuasivo");
}
if(suma3>suma2&&suma3>suma1&&suma3>suma4&&suma3>suma5&&suma3>suma6&&suma3
>suma7&&suma3>suma8&&suma3>suma9&&suma3>suma10){
JOptionPane.showMessageDialog(null, "Humanidades y Administrativo: Verbal");
}
if(suma4>suma2&&suma4>suma3&&suma4>suma1&&suma4>suma5&&suma4>suma6&&suma4
>suma7&&suma4>suma8&&suma4>suma9&&suma4>suma10){
JOptionPane.showMessageDialog(null, "Arte: Artístico");
}
if(suma5>suma2&&suma5>suma3&&suma5>suma4&&suma5>suma1&&suma5>suma6&&suma5
>suma7&&suma5>suma8&&suma5>suma9&&suma5>suma10){
JOptionPane.showMessageDialog(null, "Arte: Musical");
-
8/15/2019 Sistema Experto Básico en NetBeans
18/20
}
if(suma6>suma2&&suma6>suma3&&suma6>suma4&&suma6>suma5&&suma6>suma1&&suma6
>suma7&&suma6>suma8&&suma6>suma9&&suma6>suma10){
JOptionPane.showMessageDialog(null, "Administracion: Organizacion");
}
if(suma7>suma2&&suma7>suma3&&suma7>suma4&&suma7>suma5&&suma7>suma6&&suma7
>suma1&&suma7>suma8&&suma7>suma9&&suma7>suma10){
JOptionPane.showMessageDialog(null, "Quimica-Biologia: Científica");
}
if(suma8>suma2&&suma8>suma3&&suma8>suma4&&suma8>suma5&&suma8>suma6&&suma8
>suma7&&suma8>suma1&&suma8>suma9&&suma8>suma10){
JOptionPane.showMessageDialog(null, "Fisica-Matemtica: Cálculo");
}
if(suma9>suma2&&suma9>suma3&&suma9>suma4&&suma9>suma5&&suma9>suma6&&suma9
>suma7&&suma9>suma8&&suma9>suma1&&suma9>suma10){
JOptionPane.showMessageDialog(null, "Fisica-Matematica: Mecánica Constructiva");
}
if(suma10>suma2&&suma10>suma3&&suma10>suma4&&suma10>suma5&&suma10>suma6&&s
uma10>suma7&&suma10>suma8&&suma10>suma9&&suma10>suma1){
JOptionPane.showMessageDialog(null, "Arte, Fisica Matematica, Quimica-Biologia: Destreza
Manual");
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
-
8/15/2019 Sistema Experto Básico en NetBeans
19/20
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Vprin.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Vprin.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Vprin.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Vprin.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
}
//
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Vprin().setVisible(true);
}
});
}
// Variables declaration - do not modify
-
8/15/2019 Sistema Experto Básico en NetBeans
20/20
private javax.swing.ButtonGroup buttonGroup1;
private javax.swing.JButton jButton2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextField jTextField1;
// End of variables declaration
}