# Crane planning problem from graphplanUtils import * # Types OBJ = 'Object' DIR = 'Direction' LOC = 'Location' # Instances truck = Instance('truck', LOC) crane = Instance('crane', LOC) crate = Instance('crate', OBJ) ground = Instance('ground', LOC) left = Instance('left', DIR) right = Instance('right', DIR) Instances = [truck, crane, crate, left, right, ground] #Start and Goal States Start = [Proposition('on', crane, left), Proposition('on', truck, right), Proposition('on', crate, ground), Proposition('on', crate, left)] Goal = [Proposition('on', crane, left), Proposition('on', crate, truck)] # Variables v_to_side = Variable('to_side', DIR) v_from_side = Variable('from_side', DIR) # Operators o_pickup = Operator('pickup', # Preconditions [Proposition('on', crate, ground), Proposition('on', crate, v_from_side), Proposition('on', crane, v_from_side)], # Adds [Proposition('on', crate, crane)], # Deletes [Proposition('on', crate, v_from_side), Proposition('on', crate, ground)]) o_swing = Operator('swing', # Preconditions [Proposition('on', crane, v_from_side), Proposition(NOT_EQUAL, v_from_side, v_to_side)], # Adds [Proposition('on', crane, v_to_side)], # Deletes [Proposition('on', crane, v_from_side)]) o_load = Operator('load', # Preconditions [Proposition('on', crane, v_from_side), Proposition('on', truck, v_from_side), Proposition('on', crate, crane)], # Adds [Proposition('on', crate, v_from_side), Proposition('on', crate, truck)], # Deletes [Proposition('on', crate, crane)]) Operators=[o_pickup, o_swing, o_load] #Problems prob1 = GraphPlanProblem('dockloading', # Instances Instances, # Operators Operators, # Initial state Start, # Goals Goal) prob1.solve() prob1.display() # prob1.dump()