Inteligencia artificial

Solo disponible en BuenasTareas
  • Páginas : 6 (1290 palabras )
  • Descarga(s) : 0
  • Publicado : 19 de diciembre de 2010
Leer documento completo
Vista previa del texto
INGENIERÍA INFORMÁTICA SUPERIOR

INTELIGENCÍA ARTIFICIAL

PRÁCTICA PIEDRA-PAPEL-TIJERA:

DISEÑO DE UN ALGORITMO EVOLUTIVO PARA CONSEGUIR LA EVOLUCIÓN DE JUGADORES ENTRENANDO CONTRA ENTRENADORES

CURSO 2007-08

INTRODUCCIÓN AL PROBLEMA

El problema que se aborda en esta práctica consiste en la elaboración de un programa, que a partir de una implementación de algoritmogenético sea capaz de ganar a un jugador de piedra-papel-tijeras suministrado por los profesores que evaluarán la práctica.

Se ha suministrado una serie de clases las cuales no se pueden cambiar y que implementan la mayor parte del juego, con lo cual solamente se ha implementado el lanzador del juego, una interfaz gráfica para introducir los datos y mostrar los gráficos de los resultadosy los operadores propios de los algoritmos genéticos tales como la selección, el cruce y la mutación.

Para la resolución del problema se debe almacenar las ultimas jugadas del oponente y a partir de ahí decidir qué se debe hacer para ganar, así que para ello se ponen a jugar a varios jugadores con un cromosoma creado de manera aleatoria que con el paso de las partidas iránevolucionando de manera genética hasta ganar un gran porcentaje de los enfrentamientos al entrenador elegido.

2- LISTADO FUENTE

Juego.java

package es.urjc.rps.practica;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.io.File;
import java.io.IOException;

import es.urjc.rps.trainer.*;
import es.urjc.rps.match.MatchResult;
importes.urjc.rps.player.Player;

import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.FileAppender;
import org.apache.log4j.Logger;
import org.apache.log4j.SimpleLayout;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.LegendItem;
import org.jfree.chart.plot.PlotOrientation;
importorg.jfree.chart.title.LegendTitle;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
public class Juego {
Training training;
List players;
int valor_victoria=3;
int valor_empate=1;
int maximo_fitness;
int minimo_fitness;
float fitness_medio;
int mejor_victorias;
int mejor_empates;
int mejor_derrotas;
int elite;
int porcentage_elite;
int cruce;
int seleccion;int mutacion;
float porcentage_mutacion;
int parada;
int rondas;
int entrenador;
private static Logger m_logger;

/*
* Devuelve los datos en un string
*/
private String imprimirDatos(List datos)
{
String dat= new String();
for (int i=1; i=((MiJugador)players.get(participante1)).getFitness())&&(((MiJugador)players.get(participante2)).getFitness()>=((MiJugador)players.get(participante3)).getFitness()))
{

j1.setName(((MiJugador)players.get(participante2)).getName());
j1.setCromosoma(((MiJugador)players.get(participante2)).getCromosoma());
}
else
{
j1.setName(((MiJugador)players.get(participante3)).getName());
j1.setCromosoma(((MiJugador)players.get(participante3)).getCromosoma());
}
//seleccionamosganador 2
participante1 = MiJugador.getRand().nextInt(players.size());
participante2 = MiJugador.getRand().nextInt(players.size());
while(participante2==participante1)
{
participante2 = MiJugador.getRand().nextInt(players.size());
}
participante3 = MiJugador.getRand().nextInt(players.size());while((participante3==participante1)||(participante3==participante2))
{
participante3 = MiJugador.getRand().nextInt(players.size());
}
if((((MiJugador)players.get(participante1)).getFitness()>=((MiJugador)players.get(participante2)).getFitness())&&
(((MiJugador)players.get(participante1)).getFitness()>=((MiJugador)players.get(participante3)).getFitness()))
{

j2.setName(((MiJugador)players.get(participante1)).getName());...
tracking img