aima.core.environment.vacuum.LocalVacuumEnvironmentPercept Maven / Gradle / Ivy
package aima.core.environment.vacuum;
import aima.core.agent.Agent;
import aima.core.agent.impl.DynamicPercept;
/**
* Represents a local percept in the vacuum environment (i.e. details the
* agent's location and the state of the square the agent is currently at).
*
* @author Ravi Mohan
* @author Ciaran O'Reilly
* @author Mike Stampone
* @author Andrew Brown
*/
public class LocalVacuumEnvironmentPercept extends DynamicPercept {
public static final String ATTRIBUTE_AGENT_LOCATION = "agentLocation";
public static final String ATTRIBUTE_STATE = "state";
/**
* Construct a vacuum environment percept from the agent's perception of the
* current location and state.
*
* @param agentLocation
* the agent's perception of the current location.
* @param state
* the agent's perception of the current state.
*/
public LocalVacuumEnvironmentPercept(String agentLocation,
VacuumEnvironment.LocationState state) {
setAttribute(ATTRIBUTE_AGENT_LOCATION, agentLocation);
setAttribute(ATTRIBUTE_STATE, state);
}
/**
* Return the agent's perception of the current location, which is either A
* or B.
*
* @return the agent's perception of the current location, which is either A
* or B.
*/
public String getAgentLocation() {
return (String) getAttribute(ATTRIBUTE_AGENT_LOCATION);
}
/**
* Return the agent's perception of the current state, which is either
* Clean or Dirty.
*
* @return the agent's perception of the current state, which is either
* Clean or Dirty.
*/
public VacuumEnvironment.LocationState getLocationState() {
return (VacuumEnvironment.LocationState) getAttribute(ATTRIBUTE_STATE);
}
/**
* Determine whether this percept matches an environment state
*
* @param state
* @param agent
* @return true of the percept matches an environment state, false otherwise.
*/
public boolean matches(VacuumEnvironmentState state, Agent agent) {
if (!this.getAgentLocation().equals(state.getAgentLocation(agent))) {
return false;
}
if (!this.getLocationState().equals(
state.getLocationState(this.getAgentLocation()))) {
return false;
}
return true;
}
/**
* Return string representation of this percept.
*
* @return a string representation of this percept.
*/
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("[");
sb.append(getAgentLocation());
sb.append(", ");
sb.append(getLocationState());
sb.append("]");
return sb.toString();
}
}