Example: Putting on a pair of shoes
Init()
Goal(RightShoeOn∧LeftShoeOn)
Action(RightShoe,PRECOND: RightSockOn,EFFECT: RightShoeOn)
Action(RightSock,EFFECT: RightSockOn)
Action(LeftShoe,PRECOND: LeftSockOn,EFFECT: LeftShoeOn)
Action(LeftSock,EFFECT: LeftSockOn)
Partial-order planner would come up seperately with:
[RightSock,RightShoe]
for goal
RightShoeOn
[LeftSock,LeftShoe]
for goal
LeftShoeOn
Then these sequences would be combined to construct a final plan.
Every action sequence that maintains the partial order is a solution.
"Every linearisation of a partial-order solution is a total-order solution whose execution from the initial state will reach a goal
state."
Solution by POP
Actions
{RightSock,RightShoe,LeftSock,LeftShoe,Start,Finish}
Orderings
{Start≺RightSock≺ RightShoe, Left Sock≺LeftShoe≺Finish}
Links
{RightSock⟶RightSockOnRightShoe, LeftSock⟶LeftSockOn LeftShoe, RightShoe⟶RightShoeOnFinish, LeftShoe⟶LeftShoeOnFinish}
Open preconditions