Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lab 2ProcesosInteligentes
Lab 2ProcesosInteligentes
I. OBJETIVO GENERAL
• Conocer el funcionamiento de los agentes inteligentes.
• Realizar el programa para un agente inteligente.
III. PROCEDIMIENTO
1. Para el problema del 8 puzzle, realice un programa en Matlab que permita al usuario “desarrollar” el
juego del 8 puzzle en el computador.
a) Genere un estado inicial y uno final definido por el usuario.
%Buscar 0
for j = 1:3
for i = 1:3
if Mt(i,j) == 0
x=i;
y=j;
end
end
end
While(Mf(1,1)~=Mt(1,1)||Mf(1,2)~=Mt(1,2)||Mf(1,3)~=Mt(1,3)||Mf(2,1)~
=Mt(2,1)||Mf(2,2)~=Mt(2,2)||Mf(2,3)~=Mt(2,3)||Mf(3,1)~=Mt(3,1)||Mf(3
,2)~=Mt(3,2)||Mf(3,3)~=Mt(3,3))
%Comparacion de matrices
while
(Mf(1,1)~=Mt(1,1)||Mf(1,2)~=Mt(1,2)||Mf(1,3)~=Mt(1,3)||Mf(2,1)~=Mt(2,1)||
Mf(2,2)~=Mt(2,2)||Mf(2,3)~=Mt(2,3)||Mf(3,1)~=Mt(3,1)||Mf(3,2)~=Mt(3,2)||M
f(3,3)~=Mt(3,3))
mov=input('Introduzca el numero de movimiento 1?,2?,3?,4?,:')
%Buscar 0
for j = 1:3 Inicia el ciclo para resolver el 8 puzzle mientras
for i = 1:3 la matriz temporal sea diferente a la final, luego
if Mt(i,j) == 0 asignamos el tipo de movimiento que
x=i;
realizaremos, antes del movimiento buscamos la
y=j;
end posición 0
end
end
switch mov
end
%Movimientos realizados
fprintf('el numero total de movimientos realizados es ')
count
if A(1,3)==player
pare=player;
end
end
end
if A(1,1)==player
if A(1,2)==player
if A(1,3)==player
pare=player;
end
end
if A(2,1)==player
if A(3,1)==player
pare=player;
end
end
end
if A(3,3)==player
if A(3,2)==player
if A(3,1)==player
pare=player;
end
end
if A(2,3)==player
if A(1,3)==player
pare=player;
end
end
%Mensajes finales
if pare==88
jugando=0;
fprintf 'Gana el jugador X \n'
end
if pare==79
jugando=0;
fprintf 'Gana el jugador O \n'
end
if pare==3
jugando=0;
fprintf 'Nadie gana\n'
end
UNIVERSIDAD CATOLICA DE SANTA MARIA
ESCUELA PROFESIONAL DE INGENIERIA MECANICA, MECANICA ELECTRICA Y
MECATRONICA
GUIA DE LABORATORIO
CÓDIGO: 4E10204
ASIGNATURA: PROCESOS INTELIGENTES N° 02
%Inicio de partida
if jugando==0
fprintf ('El primer turno es del jugador 1 \n',' O');
end
jugando=1;
if A(2,2)==player
if A(1,2)==player
if A(3,2)==player
pare=player;
end
end
if A(2,1)==player
if A(2,3)==player
pare=player;
end
end
if A(1,1)==player
if A(3,3)==player
pare=player; Definiendo todas las
end condiciones de ganador
end para terminar el juego
if A(3,1)==player
if A(1,3)==player
pare=player;
end
end
end
if A(1,1)==player
if A(1,2)==player
if A(1,3)==player
pare=player;
end
end
if A(2,1)==player
if A(3,1)==player
pare=player;
end
end
end
if A(3,3)==player
if A(3,2)==player
if A(3,1)==player
pare=player;
end
end
if A(2,3)==player
if A(1,3)==player
pare=player;
end
end
end
%Mensajes finales
if pare==88
jugando=0;
fprintf 'Gana el jugador X \n'
end
if pare==79
jugando=0; Mensaje que anuncia el
fprintf 'Gana el jugador O \n' ganador
end
if pare==3
jugando=0;
fprintf 'Nadie gana\n'
end
%Buscar 0
for j = 1:3
for i = 1:3
if Mt(i,j) == 0
x=i;
y=j;
end
end
end
UNIVERSIDAD CATOLICA DE SANTA MARIA
ESCUELA PROFESIONAL DE INGENIERIA MECANICA, MECANICA ELECTRICA Y
MECATRONICA
GUIA DE LABORATORIO
CÓDIGO: 4E10204
ASIGNATURA: PROCESOS INTELIGENTES N° 02
switch mov
%Desplazamiento hacia arriba
case 1
if (x~=1)
tempv=Mt(x-1,y);
Mt(x-1,y)=0;
Mt(x,y)=tempv;
Mt
count=count+1;
end
end
%Movimientos realizados
fprintf('el numero total de movimientos realizados es ')
count
3. Realice un programa en Matlab que permita interactuar a un usuario contra la máquina en el juego del 3
en raya.
clear all, close all,clc
%Mensaje Inicio
fprintf '\n'
fprintf 'WELCOME TO 3 en raya \n'
fprintf '\n'
%Inicio de partida
if jugando==0
fprintf ('El primer turno es del jugador 1 \n',' O');
end
jugando=1;
jugando=0;
fprintf 'Gana el jugador X \n'
end
if pare==79
jugando=0;
fprintf 'Gana el jugador O \n'
end
if pare==3
jugando=0;
fprintf 'Nadie gana\n'
end
A comparación del código para el tres en raya anterior, es prácticamente el mismo exceptuando por un par de
líneas de código donde el primer jugador tendría que insertar los valores es remplazado por una función ‘randi’
que es limitado en valores de 1 a 3 permite dar valores enteros al azar entre los limites definidos con este código
podemos desafiar a la maquina en un juego 3 en raya
5. Explique las ventajas de utilizar Matlab como software para la programación de un agente.
Al ser una calculadora programable muy potente, permite realizar programar líneas de código complejas y
extensas, también podemos resaltar que tomando de ejemplo esta práctica, los algoritmos de búsqueda
utilizados son no informados o presenta pocas condiciones por lo tanto se recurre a la constante iteración hasta
llega al resultado propuesto, así mismo es necesario un dispositivo que soporte dicha cantidad de trabajo
V. CONCLUSIONES
El programa permite, resolver problemas mediante códigos de búsqueda, pero sin una estrategia predeterminada
o algún algoritmo de búsqueda complejo puesto que recurrimos a la aleatoriedad y aprovechamos la gran
capacidad del programa para soportar dichas iteraciones
Para encontrar una solución en un menor tiempo seria necesario colocar una mayor cantidad de condiciones al
código propuesto, sobre todo al tres en raya el cual a diferencia del primer puzzle el tablero cambia
constantemente debido a los movimientos del jugador
Gracias al programa utilizado podemos representar el juego mediante distintas formas como es el caso de
matrices, un guide, simulink entre otras alternativas.
Los códigos realizados se pueden pulir mucho más, mejorando la jugabilidad, tiempo de búsqueda, interfaz
agregar opciones como es el terminar una partida cuando el jugador desee, las posibilidades son bastas y todo
estas mejores pueden ser ejecutadas por el programa Matlab.