private static Pddl buildShakeysWorldPddl() { // Initial static state of Shakey's World. List<Proposition> initialState = new ArrayList<Proposition>(); // Goal static state of Shakey's World. List<Proposition> goalState = new ArrayList<Proposition>(); // Set up room & location states. for (int roomNum = 1; roomNum <= 4; roomNum++) { // Rooms. initialState.add(RoomProposition.initRoomProposition("Room" + roomNum)); goalState.add(RoomProposition.initRoomProposition("Room" + roomNum)); // Locations. initialState.add(LocationProposition.initLocationProposition("Room" + roomNum)); goalState.add(LocationProposition.initLocationProposition("Room" + roomNum)); initialState.add(LocationProposition.initLocationProposition("Door" + roomNum)); goalState.add(LocationProposition.initLocationProposition("Door" + roomNum)); initialState.add(LocationProposition.initLocationProposition("Switch" + roomNum)); goalState.add(LocationProposition.initLocationProposition("Switch" + roomNum)); // Room space also in room. initialState.add(InProposition.initInProposition("Room" + roomNum, "Room" + roomNum)); goalState.add(InProposition.initInProposition("Room" + roomNum, "Room" + roomNum)); // One switch in each room. initialState.add(InProposition.initInProposition("Switch" + roomNum, "Room" + roomNum)); goalState.add(InProposition.initInProposition("Switch" + roomNum, "Room" + roomNum)); // One door in each room. initialState.add(InProposition.initInProposition("Door" + roomNum, "Room" + roomNum)); goalState.add(InProposition.initInProposition("Door" + roomNum, "Room" + roomNum)); // Same door in corridor. initialState.add(InProposition.initInProposition("Door" + roomNum, "Corridor")); goalState.add(InProposition.initInProposition("Door" + roomNum, "Corridor")); } // Set up box states. for (int boxNum = 1; boxNum <= 4; boxNum++) { // Locations. initialState.add(BoxProposition.initBoxProposition("Box" + boxNum)); goalState.add(BoxProposition.initBoxProposition("Box" + boxNum)); // Four boxes in room #1, initial state. Box #2 in room #2 goal state. initialState.add(AtProposition.initAtProposition("Box" + boxNum, "Room1")); // Four boxes in room #1, box #2 in room #2 goal state. if (boxNum != 2) { goalState.add(AtProposition.initAtProposition("Box" + boxNum, "Room1")); } else { goalState.add(AtProposition.initAtProposition("Box" + boxNum, "Room" + boxNum)); } } // Corridor is location. initialState.add(RoomProposition.initRoomProposition("Corridor")); goalState.add(RoomProposition.initRoomProposition("Corridor")); // Shakey's initial location. initialState.add(AtProposition.initAtProposition("Shakey", "Room3")); // Shakey's goal location. goalState.add(AtProposition.initAtProposition("Shakey", "Room2")); // Actions. List<Action> actions = new ArrayList<Action>(); actions.add(GoAction.initGoAction()); actions.add(PushAction.initPushAction()); return new ShakeysWorldPddl(initialState, goalState, actions); }