Mundo de Wumpus
Short Description
Download Mundo de Wumpus...
Description
Universidad Mariano Gálvez Ingeniería en Sistemas. Inteligencia Artificial. Ing. Hugo Díaz Ing. Samuel Recinos
PROYECTO MUNDO DE WUMPUS
Integrantes: Hugo Eduardo Morán M. 0900-08-9561 Hugo Alexander Muñoz García 0900-07-53 Byron Duarte 0900-09-12461 Efrain Paredes 0900-07-3598
AGENTE BASADO EN MUNDO DE WUMPUS).
CONOCIMIENTOS
(SOLUCIÓN
La Inteligencia Artificial empezó como resultado de la investigación en psicología cognitiva y lógica matemática. Se ha encaminado sobre explicación del trabajo mental y construcción de algoritmos de solución problemas de propósito general. Punto de vista que favorece la abstracción y generalidad.
la la a la
La Inteligencia Artificial es una mezcla de la ciencia del computador, fisiología y filosofía, tan general y amplio como eso, es que reúne varios campos (robótica, sistemas expertos, por ejemplo), todos los cuales tienen en común la creación de máquinas que pueden "pensar" Es así como los sistemas de administración de base de datos cada vez más sofisticados, la estructura de datos y el desarrollo de algoritmos de inserción, anulado y traspaso de datos, así como el ensayo de introducir máquinas capaces de realizar tareas que son pensadas como típicas del ámbito de la inteligencia humana, batieron el término Inteligencia Artificial en 1956 Disciplina científico-técnica que trata de introducir sistemas artificiales capaces de conductas que, de ser ejecutados por seres humanos, se expresaría que solicitan inteligencia. Estudio de los dispositivos de la inteligencia y las tecnologías que lo mantienen. Desde sus comienzos hasta la actualidad, la Inteligencia Artificial ha tenido que hacer frente a una serie de problemas. Sistemas Basados en Conocimiento. Los procedimientos generales desarrollados para la resolución de dificultades y técnicas de búsqueda al inicio de la era de la Inteligencia Artificial demostraron no ser bastantes para resolver los problemas encaminados a las aplicaciones, ni fueron capaces de satisfacer las difíciles exigencias de la investigación. A este conjunto de métodos, procedimientos y técnicas, se lo presenta como Inteligencia Artificial Débil. La principal conclusión que se procedió de este trabajo inicial fue que los problemas difíciles sólo lograrían ser resueltos con el auxilio del conocimiento específico acerca del dominio del problema. Experiencia, Habilidades y Conocimiento. Los ejemplos de experiencia que son de interés en los métodos basados en conocimiento, pueden ser clasificados en tres categorías: asociativa, motora y teórica. Los sistemas basados en conocimiento son excelentes para simbolizar conocimiento asociativo. Este ejemplo de experiencia refleja la destreza
heurística o el conocimiento que es logrado mayoritariamente, a través de la investigación. Puede ser que no se perciba puntualmente lo que sucede al interior de un sistema (caja negra), pero se pueden asociar entradas o estímulos con salidas o respuestas, para solucionar problemas que han estado previamente conocidos. La práctica motora es más física que cognitiva. La destreza se logra esencialmente a través del ejercicio y la práctica física constante La experiencia teórica y el conocimiento profundo permite que los humanos logren solucionar problemas que no se han visto antes, es decir, no existe una posibilidad asociativa. El diseño de un sistema basado en conocimiento de alguna manera manifiesta la estructura cognitiva y los procesos humanos. La primera parte es la memoria de largo plazo, en la que guarda los casos (Base de Hechos) y los conocimientos (Base de Conocimientos) acerca del dominio en el que tiene experiencia. Tecnología de los Sistemas Basados en Conocimiento. Desde el punto de vista tecnológico, los Sistemas Basados en Conocimiento logran mostrar varias formas de aplicación: Aislada: un Sistema Basado en Conocimiento único se relaciona con el entorno. Integrada: varios Sistemas Basados en Conocimiento interrelacionados a bases de conocimiento comunes Embebida: un Sistema Basado en Conocimiento está compuesto con otros sistemas y no se lo distingue. Componentes: software de interfaz, base de datos, programa computacional. 1) El software de interfaz, mediante el cual el usuario expresa preguntas a éste, el sistema experto pide más información a partir del usuario y éste le expone al usuario la causa de razonamiento utilizado para alcanzar a una respuesta. 2) La base de datos, llamada la base de conocimiento que consiste de axiomas (hechos) y reglas para hacer inferencias a partir de esos hechos acerca del dominio del sistema. 3) El programa computacional, llamado el motor de inferencia, elabora el proceso de hacer inferencias, interpreta y evalúa los hechos en la base de conocimiento para proveer una respuesta.
PROBLEMA MUNDO DE WUMPUS
Descripción del agente Percepciones (restringidas a la casilla que ocupa): I El agente percibe si en su casilla se encuentra el wumpus I En los cuadros adyacentes al wumpus, percibe su hedor I En los cuadros adyacentes a un pozo, percibe la brisa I Donde está el oro, percibe su brillo La percepción es representable por tres símbolos (Hedor, brisa, brillo) Acciones: I Avanzar, I Girar 90o grados a izq. o der., I El agente muere si entra en un pozo, u ocupa una casilla en la Que esta un wumpus vivo Objetivo: encontrar el oro y seguir con vida.
Representación y funcionamiento Si el agente cazador es un agente basado en conocimiento, su comportamiento estará determinado por la base de conocimiento de que dispone. La base de conocimiento contendrá un conocimiento inicial, pero su contenido ira variando con el funcionamiento del agente. El bucle de funcionamiento básico será: 1. Percibir y añadir la información obtenida a la base de conocimiento. 2. Deducir que acción llevar a cabo, de acuerdo con el conocimiento disponible. 3. Llevar a cabo la acción seleccionada y añadir esta información en la base de conocimiento. Conocimiento y modelos posibles Dada una base de conocimiento K, hay que considerar tres clases De modelos: 1. Los modelos lógicos de K. 2. Los modelos que representan entornos reales. 3. El modelo que representa al entorno en el que está el agente.
SOLUCION Se procedió a crear un programa utilizando el lenguaje java para tratar de crear un agente basado en conocimientos que logrará simular un movimiento inteligente, donde sin ayuda del usuario pueda resolver el problema, eligiendo cuidadosamente qué camino seguir en consideración a su base de conocimientos, logrando así alcanzar el objetivo de alcanzar el oro o bien seguir con vida. A continuación presentaremos el código fuente generado para este programa, donde se explicará que realiza cada una de las funcionalidades del código.
import java.awt.Image;
// r =riesgo
import java.awt.*;
// m = muerte
import java.awt.event.*;
// s = segura
//Librería para el Random
//Para imagen
import java.util.Random;
Image img, img2, img3, img4;
//Acá la clase principal que se extiende pero ojo, implementa dos interfaces public class wumpus extends java.applet.Applet implements Runnable,ActionListener { //Manejo de procesos guardando 0 tiempo 1 estado del proceso 2 resto //Estados 1-4 siendo 4 el último // d = desconocido
String[][] memoria = new String[4][4]; //Creo el hilo y su manejador Thread t = null; boolean threadSuspended; //Variables de Paint Image offscreenImage; Graphics offscreeng;
//Declara variable de manejo de repaint que son default boolean error = false;
Label l_instruccion1, l_titulo; TextField campo_texto, txt_p_w, txt_p_o1, txt_p_o2,txt_p_o3, txt_p_o;
boolean iniciar = false;
//Variables de resultados
//variables de manipulación
String error_mensaje;
int p_w, p_o1,p_o2, p_o3, p_o; int p_a = 13, total_movimiento =0,xa=3, ya=0; int quantum =2500; //Manejador de casilla casilla[][] tablero = new casilla [4][4];
//Permite buscar información dentro de arreglo private static buscar_arreglo(int[] nums, element) {
for (int i = 0; i < nums.length; i++) { if(nums[i] == element){
//Constantes
return i;
final Color rojo = Color.red;
}
final Color verde = Color.green;
}
final Color blanco = Color.white;
return -1;
final Color negro = Color.BLACK; final Color.YELLOW;
int int
Color
amarillo
} =
public int alea(int min, int max) { max++;
final Color marron = new Color(140,63,51); final Color naranja = new Color(249,152,47); final Color Color(39,45,105);
azul
final Color Color(232,232,232);
gris
=
int rango = max - min;
new
return r.nextInt(rango) + min;
=
new
Font f; //Resto de variables a usar Button b_iniciar;
Random r = new Random();
} //Crea botones y agrega su Action Listener public Button crear_boton( String nombre_boton, int x, int y){
Button boton; boton Button( nombre_boton );
=
new
boton.setActionCommand(nom bre_boton); boton.setBounds(x, y, 100, 25);
campo_texto = new TextField(tamano); campo_texto.setForeground(a zul); campo_texto.setBackground( color); campo_texto.setBounds(x, y, tamano, 25);
add( boton ); boton.addActionListener(this);
if(pass)
return boton;
campo_texto.setEchoChar( '*');
}
add(campo_texto);
//Crear Etiquitas con posicion y color public Label crear_etiqueta(String nombre, Color color,int alto, int ancho, int x, int y){ Label etiqueta; etiqueta = new Label(nombre); etiqueta.setForeground(color) ; etiqueta.setFont(f); etiqueta.setBounds(x, y, ancho, alto); add(etiqueta); return etiqueta; } //Metodo crea text area con posicion public TextField crear_campo_texto(int tamano, int x, int y, Color color, boolean pass){
return campo_texto; } public void init() { img=getImage(getCodeBase(), "http://www.produccioneschapinas.n et/images/miniluffy.jpg"); img2=getImage(getCodeBase( ),"http://www.produccioneschapinas .net/images/wumpu.jpg"); img3=getImage(getCodeBase( ),"http://www.produccioneschapinas .net/images/tesoro.jpg"); img4=getImage(getCodeBase( ),"http://www.produccioneschapinas .net/images/oyo.jpg"); //Configuracion lienso y double buffer setSize(700,550);
offscreenImage=createImage( getSize().width,getSize().height); offscreeng=offscreenImage.ge tGraphics(); offscreeng.setColor(naranja); setBackground(naranja); setLayout(null);
txt_p_o1.setText("5"); l_instruccion1 = crear_etiqueta(" Oyo 1",azul,25,125, 50, 105); txt_p_o2 = crear_campo_texto(40, 10, 135, blanco, false); txt_p_o2.setText("8");
//Creando objetos de etiqueta f = new ("verdana",Font.BOLD,30);
Font
l_instruccion1 = crear_etiqueta(" Oyo 2",azul,25,125, 50, 135); txt_p_o3 = 10, 165,
l_titulo = crear_etiqueta("ONE PIECE WUMPUS WORLD",marron, 40,450, 150, 0);
crear_campo_texto(40, blanco, false);
f = new ("verdana",Font.BOLD,12);
Font
//Manejadores de espacio
l_instruccion1 = crear_etiqueta(" Oyo 3",azul,25,200, 50, 165);
l_instruccion1 = crear_etiqueta("PARAMETROS:",negr o,25,400, 10, 40);
txt_p_o = crear_campo_texto(40, 10, 195, blanco, false);
f = new ("verdana",Font.PLAIN,10);
Font
//Manejadores de variables crear_campo_texto(40, blanco, false);
txt_p_w = 10, 75,
txt_p_w.setText("1"); l_instruccion1 = crear_etiqueta(" Posicion Wumpu",azul,25,200, 50, 75); txt_p_o1 = crear_campo_texto(40, 10, 105, blanco, false);
txt_p_o3.setText("12");
txt_p_o.setText("4"); l_instruccion1 = crear_etiqueta("Oro",azul,25,200, 50, 195); //Integrantes f = new ("verdana",Font.BOLD,12);
Font
l_instruccion1 = crear_etiqueta("Hugo Morán 090008-9561 (HEMM)",marron,25,200, 450, 50);
l_instruccion1 = crear_etiqueta("Byron Duarte 090009-12461",marron,25,200, 450, 70);
notify(); } }
l_instruccion1 = crear_etiqueta("Alex Muñoz 090007-53",marron,25,200, 450, 90); l_instruccion1 = crear_etiqueta("Efraín Paredez 0900-07-3598",marron,25,200, 450, 110);
} } //Declaro las acciones que deseo realizar public void actionPerformed(ActionEvent ev)
//Creando botones de control b_iniciar crear_boton( "Iniciar",50,225);
=
//Construyendo tablero con opciones
{ //Comparando viendo el evento
botones
y
if ("Iniciar".equals(ev.getActionComm and())) {
this.limpiar_tablero();
error = false;
}
if(iniciar){
public void start() {
iniciar = false;
if ( t == null ) { t = new Thread( this );
b_iniciar.setLabel("Iniciar" ); this.limpiar_tablero();
t.setPriority( Thread.MIN_PRIO RITY );
}else{
threadSuspended = false;
iniciar = true;
t.start();
b_iniciar.setLabel("Detene r");
} else { if ( threadSuspended ) { threadSuspended = false; synchronized( this ) {
try{ //Obteniendo los valores de posición p_w = Integer.parseInt(txt_p_w.getText());
p_o1 = Integer.parseInt(txt_p_o1.getText()); p_o2 = Integer.parseInt(txt_p_o2.getText());
iniciar = false; b_iniciar.setLabel("Inici ar"); }
p_o3 = Integer.parseInt(txt_p_o3.getText());
nums[2] = p_o1;
p_o = Integer.parseInt(txt_p_o.getText());
if(buscar_arreglo(nums,p_ o2) != -1 || p_o2 16 ){ error = true;
}catch(Exception err){ error = true; error_mensaje = "Problemas con los datos ingresados recuerde deben ser numericos";
error_mensaje = "Error en la posición del Oyo 2"; iniciar = false; b_iniciar.setLabel("Inici ar");
}
}
int[] nums = {p_a, p_o1,p_o2,p_o3, p_o}; if(buscar_arreglo(nums,p_ w) != -1 || p_w 16 ){
nums[3] = p_o2; if(buscar_arreglo(nums,p_ o3) != -1 || p_o3 16 ){ error = true;
error = true; error_mensaje = "Error en la posicion del Wumpu ";
error_mensaje = "Error en la posición del Oyo 3"; iniciar = false;
iniciar = false; b_iniciar.setLabel("Inici ar");
b_iniciar.setLabel("Inici ar"); }
} nums[1] = p_w; if(buscar_arreglo(nums,p_ o1) != -1 || p_o1 16 ){ error = true; error_mensaje = "Error en la posición del Oyo 1";
nums[4] = p_o3; if(buscar_arreglo(nums,p_ o) != -1 || p_o 16 ){ error = true; error_mensaje = "Error en la posición del Oro";
iniciar = false;
tablero[i]
b_iniciar.setLabel("Inici
[j].agregar_miembro("t");
ar");
vec = tablero[i] [j].vec;
} int[] oyos ={p_o1,p_o2,p_o3};
this.agregar_elem ento(vec,"r"); }
int[][] vec; }
//Asignamos la ubicacion
}
for(int i =0; i
View more...
Comments