All Downloads are FREE. Search and download functionalities are using the official Maven repository.

aima.core.environment.vacuum.TableDrivenVacuumAgent Maven / Gradle / Ivy

Go to download

AIMA-Java Core Algorithms from the book Artificial Intelligence a Modern Approach 3rd Ed.

The newest version!
package aima.core.environment.vacuum;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import aima.core.agent.Action;
import aima.core.agent.Percept;
import aima.core.agent.impl.AbstractAgent;
import aima.core.agent.impl.aprog.TableDrivenAgentProgram;

/**
 * Artificial Intelligence A Modern Approach (3rd Edition): Figure 2.3, page 36.
*
* Figure 2.3 Partial tabulation of a simple agent function for the * vacuum-cleaner world shown in Figure 2.2. * * @author Ciaran O'Reilly * */ public class TableDrivenVacuumAgent extends AbstractAgent { public TableDrivenVacuumAgent() { super(new TableDrivenAgentProgram(getPerceptSequenceActions())); } // // PRIVATE METHODS // private static Map, Action> getPerceptSequenceActions() { Map, Action> perceptSequenceActions = new HashMap, Action>(); // NOTE: While this particular table could be setup simply // using a few loops, the intent is to show how quickly a table // based approach grows and becomes unusable. List ps; // // Level 1: 4 states ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); // // Level 2: 4x4 states // 1 ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); // 2 ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); // 3 ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); // 4 ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); // // Level 3: 4x4x4 states // 1-1 ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); // 1-2 ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); // 1-3 ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); // 1-4 ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); // 2-1 ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); // 2-2 ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); // 2-3 ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); // 2-4 ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); // 3-1 ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); // 3-2 ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); // 3-3 ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); // 3-4 ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); // 4-1 ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); // 4-2 ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); // 4-3 ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); // 4-4 ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_A, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Clean)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT); ps = createPerceptSequence(new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty), new LocalVacuumEnvironmentPercept( VacuumEnvironment.LOCATION_B, VacuumEnvironment.LocationState.Dirty)); perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK); // // Level 4: 4x4x4x4 states // ... return perceptSequenceActions; } private static List createPerceptSequence(Percept... percepts) { List perceptSequence = new ArrayList(); for (Percept p : percepts) { perceptSequence.add(p); } return perceptSequence; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy