Class Agent

java.lang.Object
es.ull.mazesolver.agent.Agent
All Implemented Interfaces:
Serializable, Cloneable
Direct Known Subclasses:
HeuristicAgent, PATableAgent, RecursiveAgent, SARulesAgent, WallFollowerAgent

public abstract class Agent extends Object implements Cloneable, Serializable
Clase que representa un agente abstracto que se encuentra en algún laberinto. Sus subclases implementan los distintos algoritmos para resolver laberintos.

Cada agente debe implementar los métodos de serialización para poder guardarse y cargarse correctamente, en caso de que requiriesen configuración adicional a la genérica.
See Also:
Serialized Form
  • Field Details

    • m_env

      protected transient Environment m_env
      Entorno en el que reside el agente.
    • m_pos

      protected transient Point m_pos
      Posición en la que se encuentra el agente.
  • Constructor Details

    • Agent

      protected Agent(Environment env)
      Crea un nuevo agente en el entorno. Le asigna un ID único y lo coloca en el punto (0,0).
      Parameters:
      env - Entorno al que va a ser asignado dicho agente.
  • Method Details

    • setPosition

      public void setPosition(Point pos)
      Establece la posición del agente.

      Este método se puede sobrecargar en las clases derivadas para mantener coherente la memoria de la que disponga el mismo.
      Parameters:
      pos - Nueva posición del agente.
    • getX

      public int getX()
      Obtiene la posición en el eje X del agente.
      Returns:
      Posición en el eje X del agente.
    • getY

      public int getY()
      Obtiene la posición en el eje Y del agente.
      Returns:
      Posición en el eje Y de agente.
    • getPos

      public Point getPos()
      Obtiene la posición del agente.
      Returns:
      Posición del agente.
    • setEnvironment

      public void setEnvironment(Environment env)
      Cambia el entorno en el que se sitúa el agente.

      Este método debería sobrecargarse en las clases derivadas que contengan información acerca del camino a seguir por el agente (un plan) de forma que éste siga siendo coherente tras el cambio de laberinto.
      Parameters:
      env - Entorno donde colocar el agente.
    • getEnvironment

      public Environment getEnvironment()
      Obtiene el entorno en el que se encuentra el agente.
      Returns:
      Entorno en el que se encuentra el agente.
    • look

      public MazeCell.Vision look(Direction dir)
      Obtiene la visión que tiene el agente al mirar en la dirección indicada.
      Parameters:
      dir - Dirección hacia la que mirar.
      Returns:
      Lo que vería el agente si mira en la dirección especificada.
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • doMovement

      public void doMovement(Direction dir)
      Hace que el agente realice el movimiento especificado, sin comprobar que se trata de un movimiento válido.

      La clase base sólo cambia la posición del agente, si se desea más funcionalidad, se debe sobrecargar en las clases derivadas.
      Parameters:
      dir - Dirección hacia la que mover el agente.
    • setAgentName

      public void setAgentName(String name)
      Cambia el nombre del agente.
      Parameters:
      name - Nombre del agente.
    • getAgentName

      public String getAgentName()
      Pregunta al agente el nombre que le identifica.
      Returns:
      Nombre identificador del agente. Por defecto incluye el nombre del algoritmo que implementa.
    • setAgentColor

      public void setAgentColor(Color color)
      Cambia el color del agente.
      Parameters:
      color - Nuevo color del agente.
    • getAgentColor

      public Color getAgentColor()
      Pregunta al agente su color.
      Returns:
      El color del agente.
    • loadFile

      public static Agent loadFile(String filename, Environment env) throws IOException
      Carga la descripción serializada del agente de un fichero, lo crea y lo devuelve.
      Parameters:
      filename - Nombre del fichero de entrada.
      env - Entorno en el que cargar el agente.
      Returns:
      El agente creado.
      Throws:
      IOException - Si no es posible leer el fichero.
    • saveFile

      public void saveFile(String filename) throws IOException
      Guarda la instancia del agente en un fichero utilizando su serialización.
      Parameters:
      filename - Nombre del fichero de salida.
      Throws:
      IOException - Si no es posible guardar el fichero.
    • getAlgorithmName

      public abstract String getAlgorithmName()
      Pregunta al agente el nombre del algoritmo que implementa.
      Returns:
      Nombre del algoritmo que implementa.
    • getAlgorithmColor

      public abstract Color getAlgorithmColor()
      Pregunta al agente el color por defecto de los agentes de su tipo.
      Returns:
      Color por defecto de los agentes que implementan ese algoritmo.
    • getNextMovement

      public abstract Direction getNextMovement()
      Obtiene el siguiente movimiento dado el estado actual del agente.
      Returns:
      La dirección en la que el agente quiere realizar el siguiente movimiento.
    • resetMemory

      public abstract void resetMemory()
      Elimina la memoria que el agente tenga sobre el entorno. No elimina su configuración, sino que lo deja en el estado inicial.
    • getConfigurationPanel

      public abstract AgentConfigurationPanel getConfigurationPanel()
      Obtiene el panel de configuración asociado al agente.
      Returns:
      Un panel de configuración para el agente.
    • clone

      public abstract Object clone()
      Overrides:
      clone in class Object