Domain specification |
|
domain
{ types { Location, Object, Truck } world { predicate Link(Location,Location); numeric Distance(Location,Location); } state { function Location PosRobot(Truck); function Location PosObject(Object); function Truck OnWhichTruck(Object); } /************************************ A c t i o n s *************************************/ action Drive(Truck t, Location orig, Location dest){ duration: normal 1.2 * Distance(orig, dest) Distance(orig, dest)*0.1; conditions: @start: orig != dest; @start: PosRobot(t) = orig; @start: Link(orig, dest); effects: @end: PosRobot(t) = dest; } action Load(Truck t, Location l, Object o){ duration: uniform 30 60; conditions: @overall: PosRobot(t) = l; @start: PosObject(o) = l; @start: OnWhichTruck(o) = undefined; effects: @end: PosObject(o) = undefined; @end: OnWhichTruck(o) = t; } action Unload(Truck t, Location l, Object o){ duration: uniform 30 60; conditions: @overall: PosRobot(t) = l; @start: OnWhichTruck(o) = t; @start: PosObject(o) = undefined; effects: @end: PosObject(o) = l; @end: OnWhichTruck(o) = undefined; } } |
Problem
{ Objects { Location l0, l1, l2, l3, l4, l5, l6, l7, l8, l9; Object b0, b1; Truck r0; } WorldState { Link(l0,l1); Link(l1,l0); Link(l0,l4); Link(l4,l0); [...] Distance(l0,l0)=0.0; Distance(l0,l1)=237.5137835588944; Distance(l0,l2)=478.54588497403375; Distance(l0,l3)=509.89036111283906; Distance(l0,l4)=279.1982989828561; Distance(l0,l5)=485.38268248461407; [...] } InitialState{ PosRobot(r0)=l2; PosObject(b0)=l9; OnWhichTruck(b0) = undefined; PosObject(b1)=l4; OnWhichTruck(b1) = undefined; } Goal{ PosObject(b0)=l6[1820.0]; PosObject(b1)=l8[4000.0]; } } |
Plan { a0: Drive(r0,l2,l1); a1: Drive(r0,l1,l4); a2: Load(r0,l4,b1); a3: Drive(r0,l4,l9); a4: Load(r0,l9,b0); a5: Drive(r0,l9,l6); a6: Unload(r0,l6,b0); a7: Drive(r0,l6,l8); a8: Unload(r0,l8,b1); a0 < a1; a1 < a2; a1 < a3; a2 < a3; a2 < a8; a3 < a4; a3 < a5; a4 < a5; a4 < a6; a5 < a6; a5 < a7; a6 < a7; a7 < a8; } |
ConditionalPlan { s0{ Drive(r0,l2,l1) [0;∞] {} -> s1 t1; } s1{ Drive(r0,l1,l4) [0;∞] {t1 } -> s2 t10; } s2{ Load(r0,l4,b1) [0;∞] {t10 } -> s3 t38; } s3{ Drive(r0,l4,l8) [0;635.3] {t10 t38 } -> s4 54; Drive(r0,l4,l9) [635.3;∞] {t10 t38 } -> s5 t55; } s4{ Unload(r0,l8,b1) [0;∞] {t38 t54 } -> s6 t114; } s6{ Drive(r0,l8,l9) [0;∞] {t54 t114 } -> s7 t122; } s5{ Load(r0,l9,b0) [0;∞] {t55 } -> s8 t58; } s8{ Drive(r0,l9,l6) [0;∞] {t55 t58 } -> s9 t67; } s9{ Unload(r0,l6,b0) [0;∞] {t58 t67 } -> s10 t310; } s10{ Drive(r0,l6,l8) [0;∞] {t67 t310 } -> s11 t323; } s11{ Unload(r0,l8,b1) [0;∞] {t38 t323 } -> s12 t425; } s12{ } s7{ Load(r0,l9,b0) [0;∞] {t122 } -> s13 t130; } s13{ Drive(r0,l9,l6) [0;∞] {t122 t130 } -> s14 t138; } s14{ Unload(r0,l6,b0) [0;∞] {t130 t138 } -> s15 t428; } s15{ } } |
© Éric Beaudry, 2009-2014.
All rights reserved.