BTExpansionCode

This commit is contained in:
Caiyishuai 2024-01-05 14:11:54 +08:00
parent c5bba17cf8
commit bc65467ca5
22 changed files with 63209 additions and 4736 deletions

View File

@ -66,8 +66,8 @@ class BTExpAlgorithm:
valid = True
# 这样剪枝存在错误性
if conflict(c_attr):
continue
# if conflict(c_attr):
# continue
for j in self.traversed: # 剪枝操作
if j <= c_attr:
@ -98,6 +98,11 @@ class BTExpAlgorithm:
return bt
def run_algorithm_test(self, start, goal, actions):
self.bt = self.run_algorithm_selTree(start, goal, actions)
return True
def run_algorithm(self, start, goal, actions):
# goal_ls = goal.replace(" ", "")

View File

@ -1,27 +0,0 @@
import py_trees as ptree
from typing import Any
from EXP.behavior_lib._base.Cond import Cond
class AnomalyDetected(Cond):
def __init__(self):
super().__init__()
def _update(self) -> ptree.common.Status:
# if self.scene.status?
light_set = {'Is(HallLight,Off)', 'Is(TubeLight,Off)', 'Is(Curtain,Off)'}
if light_set.issubset(self.scene.state["condition_set"]):
self.scene.state["anomaly"] = "NoLight"
return ptree.common.Status.SUCCESS
# light_set = {'Is(Curtain,On)'}
# if light_set.issubset(self.scene.state["condition_set"]):
# self.scene.chat_bubble("太暗了,开灯")
# self.scene.state["anomaly"] = "NoLight"
# return ptree.common.Status.SUCCESS
return ptree.common.Status.FAILURE

View File

@ -1,33 +0,0 @@
import py_trees as ptree
from typing import Any
from EXP.behavior_lib._base.Cond import Cond
class Chatting(Cond):
def __init__(self):
super().__init__()
def _update(self) -> ptree.common.Status:
# if self.scene.status?
if self.scene.state['chat_list'] == []:
return ptree.common.Status.FAILURE
name,sentence = self.scene.state['chat_list'][0]
if name == "Goal":
return ptree.common.Status.SUCCESS
if "customer" in self.scene.state["attention"]:
attention_customer = self.scene.state["attention"]["customer"]
if name == attention_customer:
return ptree.common.Status.SUCCESS
else:
# self.scene.chat_bubble("请稍等一下") # 机器人输出对话
# self.scene.wait_history.add(sentence)
return ptree.common.Status.FAILURE
else:
self.scene.state["attention"]["customer"] = name
return ptree.common.Status.SUCCESS

View File

@ -1,33 +0,0 @@
import py_trees as ptree
from typing import Any
from EXP.behavior_lib._base.Cond import Cond
import itertools
class CustomerServed(Cond):
can_be_expanded = True
def __init__(self,*args):
super().__init__(*args)
def _update(self) -> ptree.common.Status:
# if self.scene.status?
customer = self.scene.state["attention"]["customer"]
serve_state = self.scene.state["serve_state"][customer]
if serve_state['served']:
return ptree.common.Status.SUCCESS
else:
return ptree.common.Status.FAILURE
# if self.scene.state["attention"]["customer"]
#
# if self.name in self.scene.state["condition_set"]:
# return ptree.common.Status.SUCCESS
# else:
# return ptree.common.Status.FAILURE
# if self.scene.state['chat_list'] == []:
# return ptree.common.Status.FAILURE
# else:
# return ptree.common.Status.SUCCESS

View File

@ -1,20 +0,0 @@
import py_trees as ptree
from typing import Any
from EXP.behavior_lib._base.Cond import Cond
class FocusingCustomer(Cond):
def __init__(self):
super().__init__()
def _update(self) -> ptree.common.Status:
# if self.scene.status?
if "customer" in self.scene.state['attention']:
# if self.scene.take_picture:
# self.scene.get_obstacle_point(self.scene.db, self.status, map_ratio=self.scene.map_ratio)
return ptree.common.Status.SUCCESS
else:
goal = Cond.place_xy_yaw_dic['Bar']
self.scene.walk_to(goal[0] - 5, goal[1], 180, 180, 0)
return ptree.common.Status.FAILURE

View File

@ -1,14 +0,0 @@
import py_trees as ptree
from typing import Any
from EXP.behavior_lib._base.Cond import Cond
class HasSubTask(Cond):
def __init__(self):
super().__init__()
def _update(self) -> ptree.common.Status:
# if self.scene.status?
if not self.scene.sub_task_seq or not self.scene.sub_task_seq.children:
return ptree.common.Status.FAILURE
else:
return ptree.common.Status.SUCCESS

View File

@ -1,23 +0,0 @@
import py_trees as ptree
from typing import Any
from EXP.behavior_lib._base.Cond import Cond
class NeedExplore(Cond):
def __init__(self):
super().__init__()
def _update(self) -> ptree.common.Status:
# arg_str = self.arg_str
#
# if f'EnvExplored()' not in self.scene.state["condition_set"]:
# return ptree.common.Status.SUCCESS
# else:
# return ptree.common.Status.FAILURE
return ptree.common.Status.FAILURE
# if self.scene.status?
# if self.scene.state['map']['2d'] == None:
# return ptree.common.Status.FAILURE
# else:
# return ptree.common.Status.SUCCESS

View File

@ -1,41 +0,0 @@
import py_trees as ptree
from typing import Any
from EXP.behavior_lib._base.Cond import Cond
import itertools
class NewCustomer(Cond):
can_be_expanded = False
num_params = 0
valid_args = ()
def __init__(self,*args):
super().__init__(*args)
def _update(self) -> ptree.common.Status:
if self.scene.show_ui:
self.scene.get_obstacle_point(self.scene.db, self.status, map_ratio=self.scene.map_ratio)
# 获取customer的位置
# bar (247.0, 520.0, 100.0)
close_to_bar = False
scene = self.scene.status
queue_list = []
for walker in scene.walkers:
x, y, yaw = walker.pose.X, walker.pose.Y, walker.pose.Yaw
# 到达一定区域就打招呼
if y >= 450 and y <= 620 and x >= 40 and x <= 100 and yaw>=-10 and yaw <=10: #450-620
# close_to_bar = True
queue_list.append((x,y,walker.name))
if queue_list == []:
return ptree.common.Status.FAILURE
queue_list.sort()
x,y,name = queue_list[0]
if name not in self.scene.state["greeted_customers"]:
self.scene.state['attention']["customer"] = name
return ptree.common.Status.SUCCESS
else:
return ptree.common.Status.FAILURE

View File

@ -1,9 +1,13 @@
from EXP.exp_tools import collect_action_nodes,get_start,BTTest,goal_transfer_str
import copy
import random
seed = 1
random.seed(seed)
action_list = collect_action_nodes()
action_list = collect_action_nodes(random)
for act in action_list:
print(act.name,act.cost)
start_robowaiter = get_start()
@ -21,15 +25,17 @@ print(goal_states)
# goal_set_ls.append(goal)
# print(goal_set_ls)
goal_states={"On_Dessert_Bar"}
goal_states={"On_MilkDrink_Bar2"}
# goal_states={"On_Dessert_Bar"}
# goal_states={"On_MilkDrink_Bar2"}
# goal_states={"Is_TubeLight_On"}
# goal_states = goal_set_ls
# goal_states = [{'On(VacuumCup,WaterTable)'}]
# goal_states = {'On(VacuumCup,WaterTable)'}
# goal_states = {'At(Robot,WaterTable)'}
# goal_states = {'Is(Table1,Clean)'}
# todo: 行为树鲁棒性测试,随机生成规划问题
# # 设置生成规划问题集的超参数:文字数、解深度、迭代次数
seed = 1
BTTest(bt_algo_opt=True, goal_states=goal_states,action_list=action_list,start_robowaiter=start_robowaiter)
print("\n")
# 对比

View File

@ -3,7 +3,7 @@
from utils.bt.load import load_behavior_tree_lib
from OptimalBTExpansionAlgorithm import Action,OptBTExpAlgorithm
import random
import copy
from tabulate import tabulate
import numpy as np
@ -50,11 +50,45 @@ def goal_transfer_str(goal):
goal_set.append(g_set)
return goal_set
def collect_action_nodes():
def collect_action_nodes(random):
multiple_num=2
action_list = []
behavior_dict = load_behavior_tree_lib()
for cls in behavior_dict["act"].values():
if cls.can_be_expanded:
print(f"可扩展动作:{cls.__name__}, 存在{len(cls.valid_args)}个有效论域组合")
if cls.num_args == 0:
for num in range(multiple_num):
info = cls.get_info()
action_list.append(Action(name=cls.get_ins_name() + str(num), **info))
if cls.num_args == 1:
for num in range(multiple_num):
for arg in cls.valid_args:
info = cls.get_info(arg)
action_list.append(Action(name=cls.get_ins_name(arg) + str(num), **info))
if cls.num_args > 1:
for num in range(multiple_num):
for args in cls.valid_args:
info = cls.get_info(*args)
action_list.append(Action(name=cls.get_ins_name(*args) + str(num),**info))
action_list = sorted(action_list, key=lambda x: x.name)
for i in range(len(action_list)):
cost = random.randint(1, 100)
action_list[i].cost=cost
return action_list
def collect_action_nodes_old(random):
action_list = []
behavior_dict = load_behavior_tree_lib()
behavior_ls = list()
# behavior_ls.sort()
behavior_ls = [cls for cls in behavior_ls]
behavior_ls = sorted(behavior_ls, key=lambda x: x.__class__.__name__)
for cls in behavior_ls:
if cls.can_be_expanded:
print(f"可扩展动作:{cls.__name__}, 存在{len(cls.valid_args)}个有效论域组合")
if cls.num_args == 0:
@ -126,28 +160,17 @@ def BTTest(bt_algo_opt,goal_states,action_list,start_robowaiter):
success_count = 0
failure_count = 0
planning_time_total = 0.0
states = []
states=[] ####
actions = copy.deepcopy(action_list)
start = copy.deepcopy(start_robowaiter)
state = copy.deepcopy(start)
states.append(state)
error=False
for count, goal_str in enumerate(goal_states):
# if count>=2:
# break
# goal = goal_str
goal = copy.deepcopy(goal_transfer_str(goal_str))
print("count:", count, "goal:", goal)
# 生成一个规划问题,包括随机的状态和行动,以及目标状态
states = []
actions = copy.deepcopy(action_list)
start = copy.deepcopy(start_robowaiter)
state = copy.deepcopy(start)
states.append(state)
if bt_algo_opt:
# if count==874:
@ -165,21 +188,24 @@ def BTTest(bt_algo_opt,goal_states,action_list,start_robowaiter):
# print_action_data_table(goal, start, list(actions))
if algo.run_algorithm(start, goal, actions): # 运行算法规划后行为树为algo.bt
total_tree_size.append(algo.bt.count_size() - 1)
# if count==11:
# if count==10:
# algo.print_solution()
# algo.print_solution() # 打印行为树
# 画出行为树
# ptml_string = algo.get_ptml()
ptml_string = algo.get_ptml_many_act()
file_name = "sub_task"
file_path = f'./{file_name}.ptml'
with open(file_path, 'w') as file:
file.write(ptml_string)
ptml_path = os.path.join(root_path, 'BTExpansionCode/EXP/sub_task.ptml')
behavior_lib_path = os.path.join(root_path, 'BTExpansionCode/EXP/behavior_lib')
bt = load_bt_from_ptml(None, ptml_path, behavior_lib_path)
render_dot_tree(bt.root, target_directory="", name="expanded_bt", png_only=False)
# if count == 11:
# ptml_string = algo.get_ptml_many_act()
# file_name = "sub_task"
# file_path = f'./{file_name}.ptml'
# with open(file_path, 'w') as file:
# file.write(ptml_string)
# ptml_path = os.path.join(root_path, 'BTExpansionCode/EXP/sub_task.ptml')
# behavior_lib_path = os.path.join(root_path, 'BTExpansionCode/EXP/behavior_lib')
# bt = load_bt_from_ptml(None, ptml_path, behavior_lib_path)
# if bt_algo_opt:
# render_dot_tree(bt.root, target_directory="", name="expanded_bt_obt", png_only=False)
# else:
# render_dot_tree(bt.root, target_directory="", name="expanded_bt_xiaocai", png_only=False)
else:
print("error")

View File

@ -1,641 +0,0 @@
digraph pastafarianism {
ordering=out;
graph [fontname="times-roman"];
node [fontname="times-roman"];
edge [fontname="times-roman"];
"b3eb0566-c750-43a0-94cc-a5ce1383d2a8" [fillcolor="#B0FFFF", fontcolor=black, fontsize=20, height=0.01, label="?", shape=box, style=filled, width=0.01];
"cb3e3b43-c0b7-4ed3-879a-ff11e3eff193" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="On(MilkDrink,Bar2)", shape=ellipse, style=filled];
"b3eb0566-c750-43a0-94cc-a5ce1383d2a8" -> "cb3e3b43-c0b7-4ed3-879a-ff11e3eff193";
"7d290e06-450b-4d6a-873e-cb1add89b66a" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"b3eb0566-c750-43a0-94cc-a5ce1383d2a8" -> "7d290e06-450b-4d6a-873e-cb1add89b66a";
"c16089c9-362b-4a60-8c32-f5f5bff3637d" [fillcolor="#B0FFFF", fontcolor=black, fontsize=20, height=0.01, label="?", shape=box, style=filled, width=0.01];
"7d290e06-450b-4d6a-873e-cb1add89b66a" -> "c16089c9-362b-4a60-8c32-f5f5bff3637d";
"2b126874-c3aa-4db5-9d9e-506d18287d98" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "2b126874-c3aa-4db5-9d9e-506d18287d98";
"ac7a52a4-be91-4eec-b832-3d11eb642f57" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "ac7a52a4-be91-4eec-b832-3d11eb642f57";
"cbff45f9-d7ce-46f6-a04c-33e10b807a2b" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "cbff45f9-d7ce-46f6-a04c-33e10b807a2b";
"4cd5bc0c-dd37-49cb-ac58-6f4f9030b991" [fillcolor="#B0FFFF", fontcolor=black, fontsize=20, height=0.01, label="?", shape=box, style=filled, width=0.01];
"cbff45f9-d7ce-46f6-a04c-33e10b807a2b" -> "4cd5bc0c-dd37-49cb-ac58-6f4f9030b991";
"30fdd783-867c-4de3-b395-7318156630f0" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"4cd5bc0c-dd37-49cb-ac58-6f4f9030b991" -> "30fdd783-867c-4de3-b395-7318156630f0";
"50d308bd-0b9f-4e78-9faf-09443718d733" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4cd5bc0c-dd37-49cb-ac58-6f4f9030b991" -> "50d308bd-0b9f-4e78-9faf-09443718d733";
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" [fillcolor="#B0FFFF", fontcolor=black, fontsize=20, height=0.01, label="?", shape=box, style=filled, width=0.01];
"50d308bd-0b9f-4e78-9faf-09443718d733" -> "4613e442-b6f7-4bcf-9e67-f0dc6873cdb3";
"acc8e037-9586-4dea-b069-8352470356c7" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "acc8e037-9586-4dea-b069-8352470356c7";
"a4c1d6fa-915c-4d11-839f-1eb1d89bcef2" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "a4c1d6fa-915c-4d11-839f-1eb1d89bcef2";
"3c6f0dc6-37d2-4c2e-a7d5-48d4989f50b5" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "3c6f0dc6-37d2-4c2e-a7d5-48d4989f50b5";
"bf523e58-f4b7-48ed-bb19-ff3fbbdac825" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"3c6f0dc6-37d2-4c2e-a7d5-48d4989f50b5" -> "bf523e58-f4b7-48ed-bb19-ff3fbbdac825";
"d63ceb7c-64ec-4978-9c6a-dd37071eed2d" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Is(HallLight,On)", shape=ellipse, style=filled];
"3c6f0dc6-37d2-4c2e-a7d5-48d4989f50b5" -> "d63ceb7c-64ec-4978-9c6a-dd37071eed2d";
"21e5f34b-df90-426d-9ed4-a5284e71b766" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"3c6f0dc6-37d2-4c2e-a7d5-48d4989f50b5" -> "21e5f34b-df90-426d-9ed4-a5284e71b766";
"4cbecb8a-2176-493f-8ad7-2c978d8aee78" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Clean(Table)", shape=box, style=filled];
"3c6f0dc6-37d2-4c2e-a7d5-48d4989f50b5" -> "4cbecb8a-2176-493f-8ad7-2c978d8aee78";
"d6141816-9ec5-4f69-8294-95e6afedf2df" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "d6141816-9ec5-4f69-8294-95e6afedf2df";
"dd03d5ad-298e-4879-b410-4cebe7e5301b" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"d6141816-9ec5-4f69-8294-95e6afedf2df" -> "dd03d5ad-298e-4879-b410-4cebe7e5301b";
"6ac400ea-28fc-4579-ae01-1271cc108eef" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Is(HallLight,On)", shape=ellipse, style=filled];
"d6141816-9ec5-4f69-8294-95e6afedf2df" -> "6ac400ea-28fc-4579-ae01-1271cc108eef";
"28caac60-3bc2-4cbc-924e-592fcb75b220" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"d6141816-9ec5-4f69-8294-95e6afedf2df" -> "28caac60-3bc2-4cbc-924e-592fcb75b220";
"fe4a0aef-1611-4dee-b36c-3d68b1768f55" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Clean(Floor)", shape=box, style=filled];
"d6141816-9ec5-4f69-8294-95e6afedf2df" -> "fe4a0aef-1611-4dee-b36c-3d68b1768f55";
"73993498-2bd7-42c4-92b9-af98cd9355be" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "73993498-2bd7-42c4-92b9-af98cd9355be";
"8383d4cf-83fb-402b-8989-2eefe3527780" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"73993498-2bd7-42c4-92b9-af98cd9355be" -> "8383d4cf-83fb-402b-8989-2eefe3527780";
"5d863aca-2e38-4d78-951a-5ee5384461ca" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Is(HallLight,On)", shape=ellipse, style=filled];
"73993498-2bd7-42c4-92b9-af98cd9355be" -> "5d863aca-2e38-4d78-951a-5ee5384461ca";
"267a5828-5a67-43fe-bc23-91883e18dd5c" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"73993498-2bd7-42c4-92b9-af98cd9355be" -> "267a5828-5a67-43fe-bc23-91883e18dd5c";
"34a9bc45-5d40-4780-9e34-435ec597b474" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Clean(Chairs)", shape=box, style=filled];
"73993498-2bd7-42c4-92b9-af98cd9355be" -> "34a9bc45-5d40-4780-9e34-435ec597b474";
"221a92eb-77ca-4b46-a447-6ced2dde199e" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "221a92eb-77ca-4b46-a447-6ced2dde199e";
"46da3cba-4037-43ad-a28b-ed1713085eb1" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"221a92eb-77ca-4b46-a447-6ced2dde199e" -> "46da3cba-4037-43ad-a28b-ed1713085eb1";
"e1270279-2b0c-451f-96ce-cf858a78fc2a" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Is(HallLight,On)", shape=ellipse, style=filled];
"221a92eb-77ca-4b46-a447-6ced2dde199e" -> "e1270279-2b0c-451f-96ce-cf858a78fc2a";
"d4885691-9035-4e4c-986f-08bde5cd1140" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"221a92eb-77ca-4b46-a447-6ced2dde199e" -> "d4885691-9035-4e4c-986f-08bde5cd1140";
"7e4fd7f6-9542-4d1a-9c5a-b561399862dd" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Clean(Table)", shape=box, style=filled];
"221a92eb-77ca-4b46-a447-6ced2dde199e" -> "7e4fd7f6-9542-4d1a-9c5a-b561399862dd";
"3893c45b-be0e-4870-916b-be83e76b6eca" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "3893c45b-be0e-4870-916b-be83e76b6eca";
"ca9a5bd5-8e39-433c-9b33-0db38b7e1cef" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"3893c45b-be0e-4870-916b-be83e76b6eca" -> "ca9a5bd5-8e39-433c-9b33-0db38b7e1cef";
"38324a6a-57a8-4f85-9287-4e4242c0b576" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Is(HallLight,On)", shape=ellipse, style=filled];
"3893c45b-be0e-4870-916b-be83e76b6eca" -> "38324a6a-57a8-4f85-9287-4e4242c0b576";
"20b6fd32-d773-4df3-897f-d8f7365fa41f" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"3893c45b-be0e-4870-916b-be83e76b6eca" -> "20b6fd32-d773-4df3-897f-d8f7365fa41f";
"81f32838-fc32-42b9-b71c-8b2837afb48b" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Clean(Floor)", shape=box, style=filled];
"3893c45b-be0e-4870-916b-be83e76b6eca" -> "81f32838-fc32-42b9-b71c-8b2837afb48b";
"7adf22ba-3552-42dd-973c-5083a2e9df3f" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "7adf22ba-3552-42dd-973c-5083a2e9df3f";
"4efe8d2f-7463-4871-b406-fef9e9b849b0" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"7adf22ba-3552-42dd-973c-5083a2e9df3f" -> "4efe8d2f-7463-4871-b406-fef9e9b849b0";
"0e23d529-cc12-4590-8a80-4e5a20d1b2c4" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Is(HallLight,On)", shape=ellipse, style=filled];
"7adf22ba-3552-42dd-973c-5083a2e9df3f" -> "0e23d529-cc12-4590-8a80-4e5a20d1b2c4";
"64b4013d-3084-4187-aca5-2523f3d62d9a" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"7adf22ba-3552-42dd-973c-5083a2e9df3f" -> "64b4013d-3084-4187-aca5-2523f3d62d9a";
"adfbcb36-dc0b-4be8-9b0e-93439598f01f" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Clean(Chairs)", shape=box, style=filled];
"7adf22ba-3552-42dd-973c-5083a2e9df3f" -> "adfbcb36-dc0b-4be8-9b0e-93439598f01f";
"318e8f0a-c94e-4004-8a50-044ba9a940e3" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "318e8f0a-c94e-4004-8a50-044ba9a940e3";
"be2b6bb9-5aee-4e23-9395-f2abed7c7760" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"318e8f0a-c94e-4004-8a50-044ba9a940e3" -> "be2b6bb9-5aee-4e23-9395-f2abed7c7760";
"b423d136-ceba-4ccb-b0a8-88c2a2679a65" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"318e8f0a-c94e-4004-8a50-044ba9a940e3" -> "b423d136-ceba-4ccb-b0a8-88c2a2679a65";
"4bb85ff0-bf11-4384-bc1b-12d57d7864fc" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Make(Coffee)", shape=box, style=filled];
"318e8f0a-c94e-4004-8a50-044ba9a940e3" -> "4bb85ff0-bf11-4384-bc1b-12d57d7864fc";
"bced885c-967e-492a-8f9f-ca4f60a8d3ae" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "bced885c-967e-492a-8f9f-ca4f60a8d3ae";
"a0fd2a70-d401-4222-aac9-32dd0cafc391" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"bced885c-967e-492a-8f9f-ca4f60a8d3ae" -> "a0fd2a70-d401-4222-aac9-32dd0cafc391";
"5d0166a7-5577-47ad-b279-67f2826a70a9" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"bced885c-967e-492a-8f9f-ca4f60a8d3ae" -> "5d0166a7-5577-47ad-b279-67f2826a70a9";
"8ba192fa-9371-453e-8bbc-e46f9f62f67f" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Make(Water)", shape=box, style=filled];
"bced885c-967e-492a-8f9f-ca4f60a8d3ae" -> "8ba192fa-9371-453e-8bbc-e46f9f62f67f";
"dd4b5f3e-d3f3-447b-939a-9fbde458f34a" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "dd4b5f3e-d3f3-447b-939a-9fbde458f34a";
"11fcb082-2d08-4d47-9e4b-ed12ff852cf2" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"dd4b5f3e-d3f3-447b-939a-9fbde458f34a" -> "11fcb082-2d08-4d47-9e4b-ed12ff852cf2";
"059f330d-1acd-4f1d-8228-46226e35d352" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"dd4b5f3e-d3f3-447b-939a-9fbde458f34a" -> "059f330d-1acd-4f1d-8228-46226e35d352";
"29df8bf2-d992-4b8e-ad29-954c97ac37e4" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Make(Dessert)", shape=box, style=filled];
"dd4b5f3e-d3f3-447b-939a-9fbde458f34a" -> "29df8bf2-d992-4b8e-ad29-954c97ac37e4";
"c539da29-e5e0-40f5-bd90-fbeb5d318b27" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "c539da29-e5e0-40f5-bd90-fbeb5d318b27";
"fed083fe-4ce3-45f5-933a-105002353a6d" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"c539da29-e5e0-40f5-bd90-fbeb5d318b27" -> "fed083fe-4ce3-45f5-933a-105002353a6d";
"74d447e1-9deb-493d-becd-7717cab47f1e" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"c539da29-e5e0-40f5-bd90-fbeb5d318b27" -> "74d447e1-9deb-493d-becd-7717cab47f1e";
"39651307-860f-44d6-9e4a-f4159af82219" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Make(Coffee)", shape=box, style=filled];
"c539da29-e5e0-40f5-bd90-fbeb5d318b27" -> "39651307-860f-44d6-9e4a-f4159af82219";
"a4f0ce82-2e33-4342-a7d2-7093398e97cb" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "a4f0ce82-2e33-4342-a7d2-7093398e97cb";
"474dbf8f-fac5-43d8-a0eb-425fb2bec1b4" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"a4f0ce82-2e33-4342-a7d2-7093398e97cb" -> "474dbf8f-fac5-43d8-a0eb-425fb2bec1b4";
"c251b754-ca9a-41cc-8a05-65ee5214e948" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"a4f0ce82-2e33-4342-a7d2-7093398e97cb" -> "c251b754-ca9a-41cc-8a05-65ee5214e948";
"6cdebed6-9524-416a-8dda-1b18430b4f5c" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Make(Water)", shape=box, style=filled];
"a4f0ce82-2e33-4342-a7d2-7093398e97cb" -> "6cdebed6-9524-416a-8dda-1b18430b4f5c";
"8a67ce82-8716-4210-b50e-ccdafee410f4" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "8a67ce82-8716-4210-b50e-ccdafee410f4";
"3348b2d0-12ee-4857-8dc8-d5e394167931" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"8a67ce82-8716-4210-b50e-ccdafee410f4" -> "3348b2d0-12ee-4857-8dc8-d5e394167931";
"5e00ce08-f61b-4469-a8fd-1afc9b94ed63" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"8a67ce82-8716-4210-b50e-ccdafee410f4" -> "5e00ce08-f61b-4469-a8fd-1afc9b94ed63";
"296bfdd0-7d70-4d37-b02e-6c32bc1ba261" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Make(Dessert)", shape=box, style=filled];
"8a67ce82-8716-4210-b50e-ccdafee410f4" -> "296bfdd0-7d70-4d37-b02e-6c32bc1ba261";
"4de16a97-73ae-44ed-8b98-25ea2ee0725e" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "4de16a97-73ae-44ed-8b98-25ea2ee0725e";
"2f46975d-5f7f-43ab-8f26-f3e4cd0aecb9" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"4de16a97-73ae-44ed-8b98-25ea2ee0725e" -> "2f46975d-5f7f-43ab-8f26-f3e4cd0aecb9";
"5eed14de-c9e4-4968-b2b7-0df15ced8282" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Exist(MilkDrink)", shape=ellipse, style=filled];
"4de16a97-73ae-44ed-8b98-25ea2ee0725e" -> "5eed14de-c9e4-4968-b2b7-0df15ced8282";
"56f947c3-a7ef-482c-88d3-1e892d03e971" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="MoveTo(MilkDrink)", shape=box, style=filled];
"4de16a97-73ae-44ed-8b98-25ea2ee0725e" -> "56f947c3-a7ef-482c-88d3-1e892d03e971";
"9761f0df-20ad-4368-b815-7576f6c9b4f4" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "9761f0df-20ad-4368-b815-7576f6c9b4f4";
"5fdcb93a-7d36-4d4d-a08c-a68e5ddb55f3" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"9761f0df-20ad-4368-b815-7576f6c9b4f4" -> "5fdcb93a-7d36-4d4d-a08c-a68e5ddb55f3";
"08bf7582-b422-4976-87cf-b25b746e19fb" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Exist(MilkDrink)", shape=ellipse, style=filled];
"9761f0df-20ad-4368-b815-7576f6c9b4f4" -> "08bf7582-b422-4976-87cf-b25b746e19fb";
"e9c25e50-1e8f-4d0f-9ad1-76ca67f37002" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="MoveTo(MilkDrink)", shape=box, style=filled];
"9761f0df-20ad-4368-b815-7576f6c9b4f4" -> "e9c25e50-1e8f-4d0f-9ad1-76ca67f37002";
"10512191-862f-45f4-b4ff-daa01cfeaa44" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "10512191-862f-45f4-b4ff-daa01cfeaa44";
"80c77308-4fb9-4cbe-9d37-f270f324e26a" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"10512191-862f-45f4-b4ff-daa01cfeaa44" -> "80c77308-4fb9-4cbe-9d37-f270f324e26a";
"dac9f6fd-9b96-4da1-ae54-d214d02bce62" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(Anything,Anywhere)", shape=box, style=filled];
"10512191-862f-45f4-b4ff-daa01cfeaa44" -> "dac9f6fd-9b96-4da1-ae54-d214d02bce62";
"dbc5d392-21be-4e06-876d-2ee6b5057385" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "dbc5d392-21be-4e06-876d-2ee6b5057385";
"38bb3c20-e2b7-429d-aff5-56d65fd2f556" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"dbc5d392-21be-4e06-876d-2ee6b5057385" -> "38bb3c20-e2b7-429d-aff5-56d65fd2f556";
"dd5b035d-0570-4897-9f68-edf69deca78b" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(Anything,Anywhere)", shape=box, style=filled];
"dbc5d392-21be-4e06-876d-2ee6b5057385" -> "dd5b035d-0570-4897-9f68-edf69deca78b";
"001db2b2-a63b-4dbf-9891-d545b67b55dd" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "001db2b2-a63b-4dbf-9891-d545b67b55dd";
"737bea98-cadc-41be-a0cf-b224c4e8d916" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"001db2b2-a63b-4dbf-9891-d545b67b55dd" -> "737bea98-cadc-41be-a0cf-b224c4e8d916";
"3abb4835-1ade-4d5c-8f76-706728f224f4" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"001db2b2-a63b-4dbf-9891-d545b67b55dd" -> "3abb4835-1ade-4d5c-8f76-706728f224f4";
"d1091912-39d2-4121-8498-f1028f426d91" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Is(AC,Off)", shape=ellipse, style=filled];
"001db2b2-a63b-4dbf-9891-d545b67b55dd" -> "d1091912-39d2-4121-8498-f1028f426d91";
"c16e8314-3dae-4e78-b3be-67c178fcb824" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Turn(AC,On)", shape=box, style=filled];
"001db2b2-a63b-4dbf-9891-d545b67b55dd" -> "c16e8314-3dae-4e78-b3be-67c178fcb824";
"ba9a025d-704e-46ad-8914-f1c3cb37bf9b" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "ba9a025d-704e-46ad-8914-f1c3cb37bf9b";
"b7f165c3-8330-4d5f-a4dd-7b49ed02a2ca" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"ba9a025d-704e-46ad-8914-f1c3cb37bf9b" -> "b7f165c3-8330-4d5f-a4dd-7b49ed02a2ca";
"25286e27-8a1d-43a7-9d45-5d45f6013ddf" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Is(AC,On)", shape=ellipse, style=filled];
"ba9a025d-704e-46ad-8914-f1c3cb37bf9b" -> "25286e27-8a1d-43a7-9d45-5d45f6013ddf";
"4fa868aa-8de3-4309-8962-8b111bfbe118" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"ba9a025d-704e-46ad-8914-f1c3cb37bf9b" -> "4fa868aa-8de3-4309-8962-8b111bfbe118";
"5c24e079-1cc0-4108-ab42-3d6c70fca4eb" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Turn(AC,Off)", shape=box, style=filled];
"ba9a025d-704e-46ad-8914-f1c3cb37bf9b" -> "5c24e079-1cc0-4108-ab42-3d6c70fca4eb";
"6e642af8-2255-4359-96b0-20ef4e019923" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "6e642af8-2255-4359-96b0-20ef4e019923";
"955e69c2-7ed0-4d8f-a5fc-00204a52250a" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"6e642af8-2255-4359-96b0-20ef4e019923" -> "955e69c2-7ed0-4d8f-a5fc-00204a52250a";
"0b8fbdd3-8217-49da-a772-b03c38e46479" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Is(TubeLight,Off)", shape=ellipse, style=filled];
"6e642af8-2255-4359-96b0-20ef4e019923" -> "0b8fbdd3-8217-49da-a772-b03c38e46479";
"2a766e0f-b111-40d8-9e25-eddd17a632b4" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"6e642af8-2255-4359-96b0-20ef4e019923" -> "2a766e0f-b111-40d8-9e25-eddd17a632b4";
"ddcdd6cf-30db-44a4-a0c9-c1a9d8c137d8" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Turn(TubeLight,On)", shape=box, style=filled];
"6e642af8-2255-4359-96b0-20ef4e019923" -> "ddcdd6cf-30db-44a4-a0c9-c1a9d8c137d8";
"34b7a2df-c9ad-4f1f-9cb4-ec26ea94ebab" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "34b7a2df-c9ad-4f1f-9cb4-ec26ea94ebab";
"50ce95f0-3c0f-422d-95f9-8afafdbe63a3" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"34b7a2df-c9ad-4f1f-9cb4-ec26ea94ebab" -> "50ce95f0-3c0f-422d-95f9-8afafdbe63a3";
"7841cb82-d316-4229-831e-2e0cc9264060" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Is(TubeLight,On)", shape=ellipse, style=filled];
"34b7a2df-c9ad-4f1f-9cb4-ec26ea94ebab" -> "7841cb82-d316-4229-831e-2e0cc9264060";
"3bce6c5b-78cd-4a98-9670-e26d7a997274" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"34b7a2df-c9ad-4f1f-9cb4-ec26ea94ebab" -> "3bce6c5b-78cd-4a98-9670-e26d7a997274";
"84cf96c8-87a2-4f74-a9f3-273ffaca42fb" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Turn(TubeLight,Off)", shape=box, style=filled];
"34b7a2df-c9ad-4f1f-9cb4-ec26ea94ebab" -> "84cf96c8-87a2-4f74-a9f3-273ffaca42fb";
"d081bc62-37e9-456c-a712-33f0416040a7" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "d081bc62-37e9-456c-a712-33f0416040a7";
"a8acf507-a0a6-47b9-b107-17519abe05ce" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"d081bc62-37e9-456c-a712-33f0416040a7" -> "a8acf507-a0a6-47b9-b107-17519abe05ce";
"9b15dd48-fa96-4f58-93e2-685297c63e8d" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Is(HallLight,Off)", shape=ellipse, style=filled];
"d081bc62-37e9-456c-a712-33f0416040a7" -> "9b15dd48-fa96-4f58-93e2-685297c63e8d";
"708c11c8-5c85-4e04-99a3-756a736688d9" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"d081bc62-37e9-456c-a712-33f0416040a7" -> "708c11c8-5c85-4e04-99a3-756a736688d9";
"6de67c8e-3a77-4f5d-9b31-e283d79b4095" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Turn(HallLight,On)", shape=box, style=filled];
"d081bc62-37e9-456c-a712-33f0416040a7" -> "6de67c8e-3a77-4f5d-9b31-e283d79b4095";
"939040ff-67a9-48b2-9454-35dba4ea130a" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "939040ff-67a9-48b2-9454-35dba4ea130a";
"6c935d52-7772-4a9b-bc87-bc268bed9756" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"939040ff-67a9-48b2-9454-35dba4ea130a" -> "6c935d52-7772-4a9b-bc87-bc268bed9756";
"242fe73d-0383-4ab4-93fd-160d423c771c" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Is(HallLight,On)", shape=ellipse, style=filled];
"939040ff-67a9-48b2-9454-35dba4ea130a" -> "242fe73d-0383-4ab4-93fd-160d423c771c";
"8b928a54-08d2-4e09-beae-54650a7449a3" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"939040ff-67a9-48b2-9454-35dba4ea130a" -> "8b928a54-08d2-4e09-beae-54650a7449a3";
"22de8e14-52c5-48ca-8860-f2951858f8e2" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Turn(HallLight,Off)", shape=box, style=filled];
"939040ff-67a9-48b2-9454-35dba4ea130a" -> "22de8e14-52c5-48ca-8860-f2951858f8e2";
"32864bf8-4a64-4301-9ab6-24bec24e9836" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "32864bf8-4a64-4301-9ab6-24bec24e9836";
"81364b16-3506-491d-8392-1adf51543636" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"32864bf8-4a64-4301-9ab6-24bec24e9836" -> "81364b16-3506-491d-8392-1adf51543636";
"ff4c4c05-b10d-4e36-9975-a8ad9ea0cd29" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Is(AC,On)", shape=ellipse, style=filled];
"32864bf8-4a64-4301-9ab6-24bec24e9836" -> "ff4c4c05-b10d-4e36-9975-a8ad9ea0cd29";
"422e8f14-6c84-4e8f-802e-f73ea4ce3d81" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"32864bf8-4a64-4301-9ab6-24bec24e9836" -> "422e8f14-6c84-4e8f-802e-f73ea4ce3d81";
"d37c83f7-5b70-4f65-be46-9bab9fc47868" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Turn(ACTemperature,Up)", shape=box, style=filled];
"32864bf8-4a64-4301-9ab6-24bec24e9836" -> "d37c83f7-5b70-4f65-be46-9bab9fc47868";
"7459d628-3506-4bdd-a0fd-7325819e626c" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "7459d628-3506-4bdd-a0fd-7325819e626c";
"9fc39acf-713f-495a-b972-874d3c793f99" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"7459d628-3506-4bdd-a0fd-7325819e626c" -> "9fc39acf-713f-495a-b972-874d3c793f99";
"269b4979-a414-44c6-9c01-fdd61158ac2c" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Is(AC,On)", shape=ellipse, style=filled];
"7459d628-3506-4bdd-a0fd-7325819e626c" -> "269b4979-a414-44c6-9c01-fdd61158ac2c";
"b83da396-4a42-47ea-977d-df965e2ff3cd" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"7459d628-3506-4bdd-a0fd-7325819e626c" -> "b83da396-4a42-47ea-977d-df965e2ff3cd";
"17a1ebd7-5cb6-4fff-b37f-bd7333ab4ddd" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Turn(ACTemperature,Down)", shape=box, style=filled];
"7459d628-3506-4bdd-a0fd-7325819e626c" -> "17a1ebd7-5cb6-4fff-b37f-bd7333ab4ddd";
"a3ad5938-33c0-47a7-be37-686168a53b55" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "a3ad5938-33c0-47a7-be37-686168a53b55";
"cc12b125-bff5-42ed-b7a3-2b80725e8dec" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"a3ad5938-33c0-47a7-be37-686168a53b55" -> "cc12b125-bff5-42ed-b7a3-2b80725e8dec";
"76fc0d73-28cc-49d5-8a5c-cad3be059655" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"a3ad5938-33c0-47a7-be37-686168a53b55" -> "76fc0d73-28cc-49d5-8a5c-cad3be059655";
"249cb1d0-00b0-4833-96d9-cd11d92ea7c2" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Is(AC,Off)", shape=ellipse, style=filled];
"a3ad5938-33c0-47a7-be37-686168a53b55" -> "249cb1d0-00b0-4833-96d9-cd11d92ea7c2";
"2a83e205-f096-45d9-983e-4343ab93e058" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Turn(AC,On)", shape=box, style=filled];
"a3ad5938-33c0-47a7-be37-686168a53b55" -> "2a83e205-f096-45d9-983e-4343ab93e058";
"073e0971-7d89-4eca-9c94-95eb314eda8f" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "073e0971-7d89-4eca-9c94-95eb314eda8f";
"5bd43615-d488-42fc-b758-09eee1cec801" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"073e0971-7d89-4eca-9c94-95eb314eda8f" -> "5bd43615-d488-42fc-b758-09eee1cec801";
"02a46df5-6bd1-4fab-ac60-c9f0b47d3182" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Is(AC,On)", shape=ellipse, style=filled];
"073e0971-7d89-4eca-9c94-95eb314eda8f" -> "02a46df5-6bd1-4fab-ac60-c9f0b47d3182";
"98bfaf44-89ee-4ca3-ae79-8c13bd067c98" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"073e0971-7d89-4eca-9c94-95eb314eda8f" -> "98bfaf44-89ee-4ca3-ae79-8c13bd067c98";
"28e3cc40-e68f-4191-b6f0-7f9f011dcc55" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Turn(AC,Off)", shape=box, style=filled];
"073e0971-7d89-4eca-9c94-95eb314eda8f" -> "28e3cc40-e68f-4191-b6f0-7f9f011dcc55";
"f7cc45fb-a77c-4abd-aff2-7109ccc9e494" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "f7cc45fb-a77c-4abd-aff2-7109ccc9e494";
"a936bbd6-d791-4cda-abb3-434ac6da461b" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"f7cc45fb-a77c-4abd-aff2-7109ccc9e494" -> "a936bbd6-d791-4cda-abb3-434ac6da461b";
"14797305-0794-4fe2-8703-51a5eb4e8344" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Is(TubeLight,Off)", shape=ellipse, style=filled];
"f7cc45fb-a77c-4abd-aff2-7109ccc9e494" -> "14797305-0794-4fe2-8703-51a5eb4e8344";
"ec5db45f-f9c8-4827-b31a-5a4b7e28de15" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"f7cc45fb-a77c-4abd-aff2-7109ccc9e494" -> "ec5db45f-f9c8-4827-b31a-5a4b7e28de15";
"78e72fcf-00a6-4d70-86df-e38413cc8ad4" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Turn(TubeLight,On)", shape=box, style=filled];
"f7cc45fb-a77c-4abd-aff2-7109ccc9e494" -> "78e72fcf-00a6-4d70-86df-e38413cc8ad4";
"e6811893-4a0d-4533-8b5c-9a9c711c361a" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "e6811893-4a0d-4533-8b5c-9a9c711c361a";
"34701c0b-cbff-4873-9a07-e6d0ed8c6f2c" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"e6811893-4a0d-4533-8b5c-9a9c711c361a" -> "34701c0b-cbff-4873-9a07-e6d0ed8c6f2c";
"b89d488d-787d-4ccd-bfed-ae956f89c508" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Is(TubeLight,On)", shape=ellipse, style=filled];
"e6811893-4a0d-4533-8b5c-9a9c711c361a" -> "b89d488d-787d-4ccd-bfed-ae956f89c508";
"0a55efd3-5cb0-46b8-85a2-10a714cfea3f" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"e6811893-4a0d-4533-8b5c-9a9c711c361a" -> "0a55efd3-5cb0-46b8-85a2-10a714cfea3f";
"2bf92f3e-eb03-4c76-9745-167718e64f69" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Turn(TubeLight,Off)", shape=box, style=filled];
"e6811893-4a0d-4533-8b5c-9a9c711c361a" -> "2bf92f3e-eb03-4c76-9745-167718e64f69";
"01869c3a-f558-44b5-aae2-1af1bd0b666f" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "01869c3a-f558-44b5-aae2-1af1bd0b666f";
"6c6c52df-e609-4e06-8b72-1ac98530a9b6" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"01869c3a-f558-44b5-aae2-1af1bd0b666f" -> "6c6c52df-e609-4e06-8b72-1ac98530a9b6";
"a9c0da3d-8cbf-4a6b-9f0e-0a43e3983dd2" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Is(HallLight,Off)", shape=ellipse, style=filled];
"01869c3a-f558-44b5-aae2-1af1bd0b666f" -> "a9c0da3d-8cbf-4a6b-9f0e-0a43e3983dd2";
"1d08bf09-a00d-44c6-bd2a-d324c076e80b" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"01869c3a-f558-44b5-aae2-1af1bd0b666f" -> "1d08bf09-a00d-44c6-bd2a-d324c076e80b";
"c6127297-a8db-4ff9-a09b-a7c6f63a52bf" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Turn(HallLight,On)", shape=box, style=filled];
"01869c3a-f558-44b5-aae2-1af1bd0b666f" -> "c6127297-a8db-4ff9-a09b-a7c6f63a52bf";
"cd593bf4-6f41-4455-a5df-d67372db6211" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "cd593bf4-6f41-4455-a5df-d67372db6211";
"be40bff1-fdb0-4523-9a3a-0b711b0eef27" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"cd593bf4-6f41-4455-a5df-d67372db6211" -> "be40bff1-fdb0-4523-9a3a-0b711b0eef27";
"e921cc5b-d565-461d-b685-6b3a70aec1f3" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Is(HallLight,On)", shape=ellipse, style=filled];
"cd593bf4-6f41-4455-a5df-d67372db6211" -> "e921cc5b-d565-461d-b685-6b3a70aec1f3";
"e6810aaf-ac01-4f22-8837-a9f0d313c3f7" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"cd593bf4-6f41-4455-a5df-d67372db6211" -> "e6810aaf-ac01-4f22-8837-a9f0d313c3f7";
"a3cfb0c8-0a2a-4284-87e0-3f36389969fa" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Turn(HallLight,Off)", shape=box, style=filled];
"cd593bf4-6f41-4455-a5df-d67372db6211" -> "a3cfb0c8-0a2a-4284-87e0-3f36389969fa";
"255c953a-e35c-4bd7-a12b-374f106d6d1a" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "255c953a-e35c-4bd7-a12b-374f106d6d1a";
"2746be80-fc4a-4165-a13a-966b5613685c" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"255c953a-e35c-4bd7-a12b-374f106d6d1a" -> "2746be80-fc4a-4165-a13a-966b5613685c";
"4f88c26f-a89b-4029-8d34-024796a7180c" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Is(AC,On)", shape=ellipse, style=filled];
"255c953a-e35c-4bd7-a12b-374f106d6d1a" -> "4f88c26f-a89b-4029-8d34-024796a7180c";
"14561f75-02ea-46de-804f-c16bf350be29" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"255c953a-e35c-4bd7-a12b-374f106d6d1a" -> "14561f75-02ea-46de-804f-c16bf350be29";
"c7654899-39ad-468d-9730-9396e8174808" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Turn(ACTemperature,Up)", shape=box, style=filled];
"255c953a-e35c-4bd7-a12b-374f106d6d1a" -> "c7654899-39ad-468d-9730-9396e8174808";
"4a17d628-61fa-4ce2-af96-54b974553d66" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4613e442-b6f7-4bcf-9e67-f0dc6873cdb3" -> "4a17d628-61fa-4ce2-af96-54b974553d66";
"99b783b6-25f7-4119-ae88-b04aee929420" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"4a17d628-61fa-4ce2-af96-54b974553d66" -> "99b783b6-25f7-4119-ae88-b04aee929420";
"0df71fd0-3dbb-470c-bca5-4ffc0dc02e08" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Is(AC,On)", shape=ellipse, style=filled];
"4a17d628-61fa-4ce2-af96-54b974553d66" -> "0df71fd0-3dbb-470c-bca5-4ffc0dc02e08";
"d21a5e33-b4c6-446a-b5a8-5e4136682612" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"4a17d628-61fa-4ce2-af96-54b974553d66" -> "d21a5e33-b4c6-446a-b5a8-5e4136682612";
"8ab02be1-32af-42e7-a1db-e528e916656d" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="Turn(ACTemperature,Down)", shape=box, style=filled];
"4a17d628-61fa-4ce2-af96-54b974553d66" -> "8ab02be1-32af-42e7-a1db-e528e916656d";
"e3534efa-3884-4192-8ca5-9bf7b8047ca3" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PickUp(MilkDrink)", shape=box, style=filled];
"50d308bd-0b9f-4e78-9faf-09443718d733" -> "e3534efa-3884-4192-8ca5-9bf7b8047ca3";
"1d7380cc-249b-44dc-9cfe-c4bf8988f0a2" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"4cd5bc0c-dd37-49cb-ac58-6f4f9030b991" -> "1d7380cc-249b-44dc-9cfe-c4bf8988f0a2";
"be6b509f-4e17-4fc9-95e6-b091cf2a0064" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled];
"1d7380cc-249b-44dc-9cfe-c4bf8988f0a2" -> "be6b509f-4e17-4fc9-95e6-b091cf2a0064";
"46f12db5-5245-4e82-89e7-e819024ec4fe" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,MilkDrink)", shape=ellipse, style=filled];
"1d7380cc-249b-44dc-9cfe-c4bf8988f0a2" -> "46f12db5-5245-4e82-89e7-e819024ec4fe";
"3830f76b-a181-4db5-9cc1-36203fe66bea" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PickUp(MilkDrink)", shape=box, style=filled];
"1d7380cc-249b-44dc-9cfe-c4bf8988f0a2" -> "3830f76b-a181-4db5-9cc1-36203fe66bea";
"a466cc8d-2b66-47e0-9381-99369e6ab41b" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="MoveTo(Bar)", shape=box, style=filled];
"cbff45f9-d7ce-46f6-a04c-33e10b807a2b" -> "a466cc8d-2b66-47e0-9381-99369e6ab41b";
"c08b5eb3-0fb4-4dd6-8bb4-0dd32ab0f57c" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "c08b5eb3-0fb4-4dd6-8bb4-0dd32ab0f57c";
"1644107b-3086-48a6-8323-e8962edc3656" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"c08b5eb3-0fb4-4dd6-8bb4-0dd32ab0f57c" -> "1644107b-3086-48a6-8323-e8962edc3656";
"3fe13d3c-0a08-419a-92aa-3de1c52116e1" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="MoveTo(Bar)", shape=box, style=filled];
"c08b5eb3-0fb4-4dd6-8bb4-0dd32ab0f57c" -> "3fe13d3c-0a08-419a-92aa-3de1c52116e1";
"bf1fa06b-1e89-484c-8a4c-dcfcc37e568c" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "bf1fa06b-1e89-484c-8a4c-dcfcc37e568c";
"37cc0bd8-70d6-486f-9cfc-a4bd51f2f9a0" [fillcolor="#B0FFFF", fontcolor=black, fontsize=20, height=0.01, label="?", shape=box, style=filled, width=0.01];
"bf1fa06b-1e89-484c-8a4c-dcfcc37e568c" -> "37cc0bd8-70d6-486f-9cfc-a4bd51f2f9a0";
"dfb9ad02-9898-4ad8-a861-8121da623ae5" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"37cc0bd8-70d6-486f-9cfc-a4bd51f2f9a0" -> "dfb9ad02-9898-4ad8-a861-8121da623ae5";
"be2dcdfb-39d1-40a6-b78d-b0b6376e9c3a" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Softdrink)", shape=ellipse, style=filled];
"37cc0bd8-70d6-486f-9cfc-a4bd51f2f9a0" -> "be2dcdfb-39d1-40a6-b78d-b0b6376e9c3a";
"083586cc-9313-4246-a37c-322179f894ba" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"37cc0bd8-70d6-486f-9cfc-a4bd51f2f9a0" -> "083586cc-9313-4246-a37c-322179f894ba";
"488f979d-00cf-493b-9f41-e46a1ab3deed" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(Softdrink,Bar)", shape=box, style=filled];
"bf1fa06b-1e89-484c-8a4c-dcfcc37e568c" -> "488f979d-00cf-493b-9f41-e46a1ab3deed";
"f8204ec2-b0b6-4cd6-b3a1-c7b88a69bb6f" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "f8204ec2-b0b6-4cd6-b3a1-c7b88a69bb6f";
"bc5dee25-9b6c-409a-ac8f-0e7272de2250" [fillcolor="#B0FFFF", fontcolor=black, fontsize=20, height=0.01, label="?", shape=box, style=filled, width=0.01];
"f8204ec2-b0b6-4cd6-b3a1-c7b88a69bb6f" -> "bc5dee25-9b6c-409a-ac8f-0e7272de2250";
"6a154453-6991-414c-9222-558a75a4d7ed" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"bc5dee25-9b6c-409a-ac8f-0e7272de2250" -> "6a154453-6991-414c-9222-558a75a4d7ed";
"879d0bd0-941c-4793-81a2-6d5185b32780" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"bc5dee25-9b6c-409a-ac8f-0e7272de2250" -> "879d0bd0-941c-4793-81a2-6d5185b32780";
"147bd700-e355-42bd-9eb2-d9e848b9cb2a" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Bernachon)", shape=ellipse, style=filled];
"bc5dee25-9b6c-409a-ac8f-0e7272de2250" -> "147bd700-e355-42bd-9eb2-d9e848b9cb2a";
"adddbafa-7866-447f-b51c-cc6fd375097e" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(Bernachon,Bar)", shape=box, style=filled];
"f8204ec2-b0b6-4cd6-b3a1-c7b88a69bb6f" -> "adddbafa-7866-447f-b51c-cc6fd375097e";
"a250d5e9-3079-478b-9bab-b92bc372a6ef" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "a250d5e9-3079-478b-9bab-b92bc372a6ef";
"542f7157-5919-4494-b1c7-8347fde1ba81" [fillcolor="#B0FFFF", fontcolor=black, fontsize=20, height=0.01, label="?", shape=box, style=filled, width=0.01];
"a250d5e9-3079-478b-9bab-b92bc372a6ef" -> "542f7157-5919-4494-b1c7-8347fde1ba81";
"4203eb66-331b-4523-9e0d-bd352085372e" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"542f7157-5919-4494-b1c7-8347fde1ba81" -> "4203eb66-331b-4523-9e0d-bd352085372e";
"1344d196-da12-4225-9e6f-694dc08cb6e4" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(NFCJuice)", shape=ellipse, style=filled];
"542f7157-5919-4494-b1c7-8347fde1ba81" -> "1344d196-da12-4225-9e6f-694dc08cb6e4";
"01e9f37e-743e-491a-b156-20321d0e08de" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"542f7157-5919-4494-b1c7-8347fde1ba81" -> "01e9f37e-743e-491a-b156-20321d0e08de";
"e645636e-828d-4340-9322-5e77c021fa79" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(NFCJuice,Bar)", shape=box, style=filled];
"a250d5e9-3079-478b-9bab-b92bc372a6ef" -> "e645636e-828d-4340-9322-5e77c021fa79";
"7940c5fc-8811-458c-8ba6-20c1af78eb78" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "7940c5fc-8811-458c-8ba6-20c1af78eb78";
"a6aa9a54-860b-47a0-a740-56f627904462" [fillcolor="#B0FFFF", fontcolor=black, fontsize=20, height=0.01, label="?", shape=box, style=filled, width=0.01];
"7940c5fc-8811-458c-8ba6-20c1af78eb78" -> "a6aa9a54-860b-47a0-a740-56f627904462";
"423f937e-01a3-4792-9289-69802f12f401" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"a6aa9a54-860b-47a0-a740-56f627904462" -> "423f937e-01a3-4792-9289-69802f12f401";
"6a7a49d5-c4ab-4e2a-9a88-b53a34c13344" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"a6aa9a54-860b-47a0-a740-56f627904462" -> "6a7a49d5-c4ab-4e2a-9a88-b53a34c13344";
"ba9d685b-2598-403f-bcda-db7037e42d3a" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Chips)", shape=ellipse, style=filled];
"a6aa9a54-860b-47a0-a740-56f627904462" -> "ba9d685b-2598-403f-bcda-db7037e42d3a";
"4478c605-5af6-4de4-b76f-0153ce265b80" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(Chips,Bar)", shape=box, style=filled];
"7940c5fc-8811-458c-8ba6-20c1af78eb78" -> "4478c605-5af6-4de4-b76f-0153ce265b80";
"01dcea8e-eca2-4b08-994f-b91577ff857d" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "01dcea8e-eca2-4b08-994f-b91577ff857d";
"29d46846-cbac-4f70-bd03-79b1cef1c6ef" [fillcolor="#B0FFFF", fontcolor=black, fontsize=20, height=0.01, label="?", shape=box, style=filled, width=0.01];
"01dcea8e-eca2-4b08-994f-b91577ff857d" -> "29d46846-cbac-4f70-bd03-79b1cef1c6ef";
"de004850-94e6-4951-a449-1f67780d4234" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Water)", shape=ellipse, style=filled];
"29d46846-cbac-4f70-bd03-79b1cef1c6ef" -> "de004850-94e6-4951-a449-1f67780d4234";
"bb964d79-cc71-49e4-b3d5-b7640ebbdb4d" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"29d46846-cbac-4f70-bd03-79b1cef1c6ef" -> "bb964d79-cc71-49e4-b3d5-b7640ebbdb4d";
"a7d83f00-dba0-4ee2-bfc5-f48c0a0cfd33" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"29d46846-cbac-4f70-bd03-79b1cef1c6ef" -> "a7d83f00-dba0-4ee2-bfc5-f48c0a0cfd33";
"b2cb2241-6e78-4bb4-be39-b8a5f8de311a" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(Water,Bar)", shape=box, style=filled];
"01dcea8e-eca2-4b08-994f-b91577ff857d" -> "b2cb2241-6e78-4bb4-be39-b8a5f8de311a";
"182ba254-1346-40aa-b578-4a6bb67fee5a" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "182ba254-1346-40aa-b578-4a6bb67fee5a";
"e036ee91-0689-4407-9702-89c9cb1df247" [fillcolor="#B0FFFF", fontcolor=black, fontsize=20, height=0.01, label="?", shape=box, style=filled, width=0.01];
"182ba254-1346-40aa-b578-4a6bb67fee5a" -> "e036ee91-0689-4407-9702-89c9cb1df247";
"3c2592a4-0500-413b-89ac-636b75739834" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(BottledDrink)", shape=ellipse, style=filled];
"e036ee91-0689-4407-9702-89c9cb1df247" -> "3c2592a4-0500-413b-89ac-636b75739834";
"6278e4b6-e5c0-47ab-a869-6e5203caa2f0" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"e036ee91-0689-4407-9702-89c9cb1df247" -> "6278e4b6-e5c0-47ab-a869-6e5203caa2f0";
"d4f187d2-0da7-403b-aca9-3b6f997ee8c3" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"e036ee91-0689-4407-9702-89c9cb1df247" -> "d4f187d2-0da7-403b-aca9-3b6f997ee8c3";
"5ba8a58b-b041-4aee-8a04-9b3b45a9f16d" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(BottledDrink,Bar)", shape=box, style=filled];
"182ba254-1346-40aa-b578-4a6bb67fee5a" -> "5ba8a58b-b041-4aee-8a04-9b3b45a9f16d";
"51c6f61b-112c-4e76-9cfa-b2bea8a11ec0" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "51c6f61b-112c-4e76-9cfa-b2bea8a11ec0";
"0768ab4b-fdd9-4996-8834-a162ea5de5ef" [fillcolor="#B0FFFF", fontcolor=black, fontsize=20, height=0.01, label="?", shape=box, style=filled, width=0.01];
"51c6f61b-112c-4e76-9cfa-b2bea8a11ec0" -> "0768ab4b-fdd9-4996-8834-a162ea5de5ef";
"3929c98a-3444-4f2b-9f23-9572bf5bfbeb" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"0768ab4b-fdd9-4996-8834-a162ea5de5ef" -> "3929c98a-3444-4f2b-9f23-9572bf5bfbeb";
"22181a9b-e398-491a-9c57-d53c16ed51ea" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"0768ab4b-fdd9-4996-8834-a162ea5de5ef" -> "22181a9b-e398-491a-9c57-d53c16ed51ea";
"3118f39d-cf42-4209-bfee-6ef3461dafc6" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Dessert)", shape=ellipse, style=filled];
"0768ab4b-fdd9-4996-8834-a162ea5de5ef" -> "3118f39d-cf42-4209-bfee-6ef3461dafc6";
"9d0993d8-e2db-4cac-aba1-218bec400b24" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(Dessert,Bar)", shape=box, style=filled];
"51c6f61b-112c-4e76-9cfa-b2bea8a11ec0" -> "9d0993d8-e2db-4cac-aba1-218bec400b24";
"17e658ad-112c-4274-b068-a8357db2555e" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "17e658ad-112c-4274-b068-a8357db2555e";
"54d7cc55-402c-4390-9d36-17f5bbeef1e8" [fillcolor="#B0FFFF", fontcolor=black, fontsize=20, height=0.01, label="?", shape=box, style=filled, width=0.01];
"17e658ad-112c-4274-b068-a8357db2555e" -> "54d7cc55-402c-4390-9d36-17f5bbeef1e8";
"6947e039-aa99-47b9-9294-78fcbc113cc9" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"54d7cc55-402c-4390-9d36-17f5bbeef1e8" -> "6947e039-aa99-47b9-9294-78fcbc113cc9";
"bc51cc2e-26a2-47a1-85c9-ab3a6317aeb3" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(SpringWater)", shape=ellipse, style=filled];
"54d7cc55-402c-4390-9d36-17f5bbeef1e8" -> "bc51cc2e-26a2-47a1-85c9-ab3a6317aeb3";
"b7e3228e-a634-4073-8bdc-99b2d4b7dc45" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"54d7cc55-402c-4390-9d36-17f5bbeef1e8" -> "b7e3228e-a634-4073-8bdc-99b2d4b7dc45";
"abfb9be4-85cc-4ab5-bc95-bbee33a0ddd3" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(SpringWater,Bar)", shape=box, style=filled];
"17e658ad-112c-4274-b068-a8357db2555e" -> "abfb9be4-85cc-4ab5-bc95-bbee33a0ddd3";
"f6e6bf0b-5751-4c23-a432-4dcea9143cda" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "f6e6bf0b-5751-4c23-a432-4dcea9143cda";
"291447ed-1951-4814-b8be-730d9b57e51a" [fillcolor="#B0FFFF", fontcolor=black, fontsize=20, height=0.01, label="?", shape=box, style=filled, width=0.01];
"f6e6bf0b-5751-4c23-a432-4dcea9143cda" -> "291447ed-1951-4814-b8be-730d9b57e51a";
"2774cd34-2c04-4174-84c6-81548241f78f" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"291447ed-1951-4814-b8be-730d9b57e51a" -> "2774cd34-2c04-4174-84c6-81548241f78f";
"b1e770ad-c211-475f-b3d8-a13e23063a1d" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"291447ed-1951-4814-b8be-730d9b57e51a" -> "b1e770ad-c211-475f-b3d8-a13e23063a1d";
"26cbe8ac-83b4-4b6b-bf66-c4a591e3031b" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Milk)", shape=ellipse, style=filled];
"291447ed-1951-4814-b8be-730d9b57e51a" -> "26cbe8ac-83b4-4b6b-bf66-c4a591e3031b";
"a970259e-20f6-434f-8ded-4f37db6d76cf" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(Milk,Bar)", shape=box, style=filled];
"f6e6bf0b-5751-4c23-a432-4dcea9143cda" -> "a970259e-20f6-434f-8ded-4f37db6d76cf";
"b8ae0f43-a7a9-4705-b9e3-3eb3bb5bd64f" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "b8ae0f43-a7a9-4705-b9e3-3eb3bb5bd64f";
"3746b6f6-0c15-4b64-94e5-ec74246cc303" [fillcolor="#B0FFFF", fontcolor=black, fontsize=20, height=0.01, label="?", shape=box, style=filled, width=0.01];
"b8ae0f43-a7a9-4705-b9e3-3eb3bb5bd64f" -> "3746b6f6-0c15-4b64-94e5-ec74246cc303";
"b43c7cd5-f898-44b7-a6e4-5d12667ee735" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"3746b6f6-0c15-4b64-94e5-ec74246cc303" -> "b43c7cd5-f898-44b7-a6e4-5d12667ee735";
"dc10f464-b59f-4bdb-8782-6b92d0a78ddc" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(VacuumCup)", shape=ellipse, style=filled];
"3746b6f6-0c15-4b64-94e5-ec74246cc303" -> "dc10f464-b59f-4bdb-8782-6b92d0a78ddc";
"8ec27e4a-a76d-4518-917a-226a6926b9c1" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"3746b6f6-0c15-4b64-94e5-ec74246cc303" -> "8ec27e4a-a76d-4518-917a-226a6926b9c1";
"c3989486-941b-4098-9f3a-240f3fe88e4b" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(VacuumCup,Bar)", shape=box, style=filled];
"b8ae0f43-a7a9-4705-b9e3-3eb3bb5bd64f" -> "c3989486-941b-4098-9f3a-240f3fe88e4b";
"a7d48b08-1bb2-4a73-9c65-42491a102689" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "a7d48b08-1bb2-4a73-9c65-42491a102689";
"382a4b70-3888-42ec-8f64-fea45299647e" [fillcolor="#B0FFFF", fontcolor=black, fontsize=20, height=0.01, label="?", shape=box, style=filled, width=0.01];
"a7d48b08-1bb2-4a73-9c65-42491a102689" -> "382a4b70-3888-42ec-8f64-fea45299647e";
"2076aeb9-be66-4686-bb73-358ba2022941" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Yogurt)", shape=ellipse, style=filled];
"382a4b70-3888-42ec-8f64-fea45299647e" -> "2076aeb9-be66-4686-bb73-358ba2022941";
"f4b6f980-21fa-4cf6-b803-7c07221cebc5" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"382a4b70-3888-42ec-8f64-fea45299647e" -> "f4b6f980-21fa-4cf6-b803-7c07221cebc5";
"fb5c1657-e9c5-485f-bd4f-a8dd29aed3ae" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"382a4b70-3888-42ec-8f64-fea45299647e" -> "fb5c1657-e9c5-485f-bd4f-a8dd29aed3ae";
"12d87012-108b-439e-883f-1b419e84041a" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(Yogurt,Bar)", shape=box, style=filled];
"a7d48b08-1bb2-4a73-9c65-42491a102689" -> "12d87012-108b-439e-883f-1b419e84041a";
"4bc12752-f3d7-4627-a627-ec1f43520d8f" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "4bc12752-f3d7-4627-a627-ec1f43520d8f";
"4f162e9a-e745-49e2-b92d-7a6c6cf0b2e5" [fillcolor="#B0FFFF", fontcolor=black, fontsize=20, height=0.01, label="?", shape=box, style=filled, width=0.01];
"4bc12752-f3d7-4627-a627-ec1f43520d8f" -> "4f162e9a-e745-49e2-b92d-7a6c6cf0b2e5";
"523fd084-b5f2-4657-9dc0-0033395e59c9" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"4f162e9a-e745-49e2-b92d-7a6c6cf0b2e5" -> "523fd084-b5f2-4657-9dc0-0033395e59c9";
"22bc3fe5-d861-4798-915b-51e7f785c223" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(ADMilk)", shape=ellipse, style=filled];
"4f162e9a-e745-49e2-b92d-7a6c6cf0b2e5" -> "22bc3fe5-d861-4798-915b-51e7f785c223";
"a95802ce-bf2a-44ee-aae6-0fa4a95e3a25" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"4f162e9a-e745-49e2-b92d-7a6c6cf0b2e5" -> "a95802ce-bf2a-44ee-aae6-0fa4a95e3a25";
"4d8f8dc8-71c7-439a-aa6c-9864cd9601ad" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(ADMilk,Bar)", shape=box, style=filled];
"4bc12752-f3d7-4627-a627-ec1f43520d8f" -> "4d8f8dc8-71c7-439a-aa6c-9864cd9601ad";
"4d7755da-33ed-47e1-9983-a20a75a8f42e" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "4d7755da-33ed-47e1-9983-a20a75a8f42e";
"848a2572-11f3-4d2c-bb7b-628b79b7dc70" [fillcolor="#B0FFFF", fontcolor=black, fontsize=20, height=0.01, label="?", shape=box, style=filled, width=0.01];
"4d7755da-33ed-47e1-9983-a20a75a8f42e" -> "848a2572-11f3-4d2c-bb7b-628b79b7dc70";
"918a6e60-f9f6-4354-b865-4498cca28ff4" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"848a2572-11f3-4d2c-bb7b-628b79b7dc70" -> "918a6e60-f9f6-4354-b865-4498cca28ff4";
"e4e4c515-81e2-4261-8e59-5dc3109fb871" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"848a2572-11f3-4d2c-bb7b-628b79b7dc70" -> "e4e4c515-81e2-4261-8e59-5dc3109fb871";
"3fc7322f-76f4-4513-a768-97f564d246b8" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Coffee)", shape=ellipse, style=filled];
"848a2572-11f3-4d2c-bb7b-628b79b7dc70" -> "3fc7322f-76f4-4513-a768-97f564d246b8";
"10cabde0-a935-4cda-b210-c773ccc0ded6" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(Coffee,Bar)", shape=box, style=filled];
"4d7755da-33ed-47e1-9983-a20a75a8f42e" -> "10cabde0-a935-4cda-b210-c773ccc0ded6";
"dc5cb3dd-f6e7-4b93-b788-9f2862a0cfa9" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "dc5cb3dd-f6e7-4b93-b788-9f2862a0cfa9";
"36b36b29-fa15-4d42-b625-f2c234167673" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"dc5cb3dd-f6e7-4b93-b788-9f2862a0cfa9" -> "36b36b29-fa15-4d42-b625-f2c234167673";
"08c98ebc-1ac7-4a01-93cd-9bccd7a48e72" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Softdrink)", shape=ellipse, style=filled];
"dc5cb3dd-f6e7-4b93-b788-9f2862a0cfa9" -> "08c98ebc-1ac7-4a01-93cd-9bccd7a48e72";
"b0d4dfdb-2e86-4116-ab4b-7aca1c0c253f" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"dc5cb3dd-f6e7-4b93-b788-9f2862a0cfa9" -> "b0d4dfdb-2e86-4116-ab4b-7aca1c0c253f";
"78351f8b-40d9-4ca2-a7e4-51ecc67cdbdb" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(Softdrink,Bar)", shape=box, style=filled];
"dc5cb3dd-f6e7-4b93-b788-9f2862a0cfa9" -> "78351f8b-40d9-4ca2-a7e4-51ecc67cdbdb";
"7798fb41-706e-4fdc-86f5-73f69e98d58b" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "7798fb41-706e-4fdc-86f5-73f69e98d58b";
"cd2b377e-a73a-4d23-b97a-caebd44d093b" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"7798fb41-706e-4fdc-86f5-73f69e98d58b" -> "cd2b377e-a73a-4d23-b97a-caebd44d093b";
"f119569e-3499-41d1-9017-e5549bdbd17b" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"7798fb41-706e-4fdc-86f5-73f69e98d58b" -> "f119569e-3499-41d1-9017-e5549bdbd17b";
"9f75f355-b50f-4af9-87ca-3dbc72919f27" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Bernachon)", shape=ellipse, style=filled];
"7798fb41-706e-4fdc-86f5-73f69e98d58b" -> "9f75f355-b50f-4af9-87ca-3dbc72919f27";
"67338261-a68a-4a3e-a228-d031f7fd49d5" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(Bernachon,Bar)", shape=box, style=filled];
"7798fb41-706e-4fdc-86f5-73f69e98d58b" -> "67338261-a68a-4a3e-a228-d031f7fd49d5";
"d27bfb36-f2e6-492a-87f7-0c6517348697" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "d27bfb36-f2e6-492a-87f7-0c6517348697";
"03893732-2163-41b9-afb8-f31b900d5bcd" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"d27bfb36-f2e6-492a-87f7-0c6517348697" -> "03893732-2163-41b9-afb8-f31b900d5bcd";
"5ce16741-ca81-4f3d-97f3-042a79f2ae1d" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(NFCJuice)", shape=ellipse, style=filled];
"d27bfb36-f2e6-492a-87f7-0c6517348697" -> "5ce16741-ca81-4f3d-97f3-042a79f2ae1d";
"0445fc42-f9cd-49c5-b561-66d220e95c20" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"d27bfb36-f2e6-492a-87f7-0c6517348697" -> "0445fc42-f9cd-49c5-b561-66d220e95c20";
"60e2142c-ca48-4936-9f74-15860e8c388a" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(NFCJuice,Bar)", shape=box, style=filled];
"d27bfb36-f2e6-492a-87f7-0c6517348697" -> "60e2142c-ca48-4936-9f74-15860e8c388a";
"40493118-57ee-4082-952d-147f8ef32b53" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "40493118-57ee-4082-952d-147f8ef32b53";
"46f3f8a7-d9e3-4500-b125-6b65fad814f2" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"40493118-57ee-4082-952d-147f8ef32b53" -> "46f3f8a7-d9e3-4500-b125-6b65fad814f2";
"e834c89f-c3a1-481a-964f-d17712a234b2" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"40493118-57ee-4082-952d-147f8ef32b53" -> "e834c89f-c3a1-481a-964f-d17712a234b2";
"f6581294-8006-4897-96f0-2f8a63d43faf" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Chips)", shape=ellipse, style=filled];
"40493118-57ee-4082-952d-147f8ef32b53" -> "f6581294-8006-4897-96f0-2f8a63d43faf";
"07a610ed-90d4-4f8c-9c3d-60cf62877f5a" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(Chips,Bar)", shape=box, style=filled];
"40493118-57ee-4082-952d-147f8ef32b53" -> "07a610ed-90d4-4f8c-9c3d-60cf62877f5a";
"b8b7c80e-ab74-4167-b090-d911d9279854" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "b8b7c80e-ab74-4167-b090-d911d9279854";
"7c4fe8f0-3960-40ec-9c6b-ed86e85e4300" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Water)", shape=ellipse, style=filled];
"b8b7c80e-ab74-4167-b090-d911d9279854" -> "7c4fe8f0-3960-40ec-9c6b-ed86e85e4300";
"ae561e81-6131-4f61-a626-8c7007d609d4" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"b8b7c80e-ab74-4167-b090-d911d9279854" -> "ae561e81-6131-4f61-a626-8c7007d609d4";
"724134fb-4b97-4949-8501-4cde449d3859" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"b8b7c80e-ab74-4167-b090-d911d9279854" -> "724134fb-4b97-4949-8501-4cde449d3859";
"70572626-cfc5-4864-9696-3f39ea3e7c72" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(Water,Bar)", shape=box, style=filled];
"b8b7c80e-ab74-4167-b090-d911d9279854" -> "70572626-cfc5-4864-9696-3f39ea3e7c72";
"083162b7-6455-4358-809e-6ee578edc7ae" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "083162b7-6455-4358-809e-6ee578edc7ae";
"d12c3c7a-2c88-4636-9b73-6f782f771e9d" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(BottledDrink)", shape=ellipse, style=filled];
"083162b7-6455-4358-809e-6ee578edc7ae" -> "d12c3c7a-2c88-4636-9b73-6f782f771e9d";
"3fe89acf-9022-47a4-9d61-1d2b250ed0f6" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"083162b7-6455-4358-809e-6ee578edc7ae" -> "3fe89acf-9022-47a4-9d61-1d2b250ed0f6";
"01b8ff5c-8365-4c6e-9c4f-edceed501fa0" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"083162b7-6455-4358-809e-6ee578edc7ae" -> "01b8ff5c-8365-4c6e-9c4f-edceed501fa0";
"e7e046b8-72d5-4c9d-89c3-b07456dc7b73" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(BottledDrink,Bar)", shape=box, style=filled];
"083162b7-6455-4358-809e-6ee578edc7ae" -> "e7e046b8-72d5-4c9d-89c3-b07456dc7b73";
"b83f73a7-b5e8-4049-ae43-05e6a16e96c2" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "b83f73a7-b5e8-4049-ae43-05e6a16e96c2";
"b41a7721-c955-4184-a1ed-72047647e3c1" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"b83f73a7-b5e8-4049-ae43-05e6a16e96c2" -> "b41a7721-c955-4184-a1ed-72047647e3c1";
"9fb804e2-044d-44a9-8c41-40174ff70004" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"b83f73a7-b5e8-4049-ae43-05e6a16e96c2" -> "9fb804e2-044d-44a9-8c41-40174ff70004";
"01c6142c-2ff7-4a92-a91e-27575850af81" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Dessert)", shape=ellipse, style=filled];
"b83f73a7-b5e8-4049-ae43-05e6a16e96c2" -> "01c6142c-2ff7-4a92-a91e-27575850af81";
"d9c9a356-a5f8-42ad-b3f0-9129ed5d35c2" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(Dessert,Bar)", shape=box, style=filled];
"b83f73a7-b5e8-4049-ae43-05e6a16e96c2" -> "d9c9a356-a5f8-42ad-b3f0-9129ed5d35c2";
"89cd87e5-f4a0-493c-9460-819a9d0f8870" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "89cd87e5-f4a0-493c-9460-819a9d0f8870";
"aefd565a-f6c7-4911-85cf-188476492418" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"89cd87e5-f4a0-493c-9460-819a9d0f8870" -> "aefd565a-f6c7-4911-85cf-188476492418";
"c0ccd327-af6f-4fef-adb7-b1411d14a59e" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(SpringWater)", shape=ellipse, style=filled];
"89cd87e5-f4a0-493c-9460-819a9d0f8870" -> "c0ccd327-af6f-4fef-adb7-b1411d14a59e";
"466fe1ba-2890-4691-861f-d29b70a5e11f" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"89cd87e5-f4a0-493c-9460-819a9d0f8870" -> "466fe1ba-2890-4691-861f-d29b70a5e11f";
"2abeda39-c181-4b3e-b5fb-fa9517c4c17d" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(SpringWater,Bar)", shape=box, style=filled];
"89cd87e5-f4a0-493c-9460-819a9d0f8870" -> "2abeda39-c181-4b3e-b5fb-fa9517c4c17d";
"47e4b3b0-160e-47c7-952c-ba6301d69ca7" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "47e4b3b0-160e-47c7-952c-ba6301d69ca7";
"b98ba6db-8280-4490-9e84-49487fde3390" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"47e4b3b0-160e-47c7-952c-ba6301d69ca7" -> "b98ba6db-8280-4490-9e84-49487fde3390";
"4e420313-0d1c-48dd-966d-ea13066fc57c" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"47e4b3b0-160e-47c7-952c-ba6301d69ca7" -> "4e420313-0d1c-48dd-966d-ea13066fc57c";
"4c67a617-c585-4cff-a7af-80a296d284bd" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Milk)", shape=ellipse, style=filled];
"47e4b3b0-160e-47c7-952c-ba6301d69ca7" -> "4c67a617-c585-4cff-a7af-80a296d284bd";
"c02c9dd2-069f-4e1b-a172-f4aa3e47efb9" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(Milk,Bar)", shape=box, style=filled];
"47e4b3b0-160e-47c7-952c-ba6301d69ca7" -> "c02c9dd2-069f-4e1b-a172-f4aa3e47efb9";
"64b7af7f-af4e-4ac0-a762-454230c2182b" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "64b7af7f-af4e-4ac0-a762-454230c2182b";
"4255d0f0-5351-47ec-8bcc-cb920993938e" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"64b7af7f-af4e-4ac0-a762-454230c2182b" -> "4255d0f0-5351-47ec-8bcc-cb920993938e";
"100f8154-f3d0-477e-a5ec-73ee2073c26a" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(VacuumCup)", shape=ellipse, style=filled];
"64b7af7f-af4e-4ac0-a762-454230c2182b" -> "100f8154-f3d0-477e-a5ec-73ee2073c26a";
"166c120d-cb73-44c6-8731-c1424a64cbc0" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"64b7af7f-af4e-4ac0-a762-454230c2182b" -> "166c120d-cb73-44c6-8731-c1424a64cbc0";
"271a95d8-3651-4c9e-936c-dbdcc69e354e" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(VacuumCup,Bar)", shape=box, style=filled];
"64b7af7f-af4e-4ac0-a762-454230c2182b" -> "271a95d8-3651-4c9e-936c-dbdcc69e354e";
"7b9e2e65-34e2-4727-b92a-6e433410a967" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "7b9e2e65-34e2-4727-b92a-6e433410a967";
"e374c32a-9a09-4f00-9776-c568b38c7838" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Yogurt)", shape=ellipse, style=filled];
"7b9e2e65-34e2-4727-b92a-6e433410a967" -> "e374c32a-9a09-4f00-9776-c568b38c7838";
"7ec7305a-ee6e-4410-9e7d-8fdbb72a9d91" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"7b9e2e65-34e2-4727-b92a-6e433410a967" -> "7ec7305a-ee6e-4410-9e7d-8fdbb72a9d91";
"be476221-722d-4cb4-9113-5e359e524e71" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"7b9e2e65-34e2-4727-b92a-6e433410a967" -> "be476221-722d-4cb4-9113-5e359e524e71";
"0605a547-3a8f-4502-8efa-1896d0b6cf1e" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(Yogurt,Bar)", shape=box, style=filled];
"7b9e2e65-34e2-4727-b92a-6e433410a967" -> "0605a547-3a8f-4502-8efa-1896d0b6cf1e";
"d86a7a63-841b-427c-bfb1-a0348e95f899" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "d86a7a63-841b-427c-bfb1-a0348e95f899";
"680344f3-a7c8-4c39-a0d2-8235f99a7d5e" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"d86a7a63-841b-427c-bfb1-a0348e95f899" -> "680344f3-a7c8-4c39-a0d2-8235f99a7d5e";
"6d77ce27-4ee9-4d98-aa6a-2dc0d80af7c3" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(ADMilk)", shape=ellipse, style=filled];
"d86a7a63-841b-427c-bfb1-a0348e95f899" -> "6d77ce27-4ee9-4d98-aa6a-2dc0d80af7c3";
"68455b9a-fe5a-4b55-b34a-3b286769af32" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"d86a7a63-841b-427c-bfb1-a0348e95f899" -> "68455b9a-fe5a-4b55-b34a-3b286769af32";
"c2c8a77b-4424-4660-b04a-1badc4d4c918" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(ADMilk,Bar)", shape=box, style=filled];
"d86a7a63-841b-427c-bfb1-a0348e95f899" -> "c2c8a77b-4424-4660-b04a-1badc4d4c918";
"992d22b0-61b3-4bff-a0b3-ffb39ed57a83" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"c16089c9-362b-4a60-8c32-f5f5bff3637d" -> "992d22b0-61b3-4bff-a0b3-ffb39ed57a83";
"0304efc1-278b-4123-9279-e81912d89f27" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"992d22b0-61b3-4bff-a0b3-ffb39ed57a83" -> "0304efc1-278b-4123-9279-e81912d89f27";
"7a2a94bc-9582-496d-bd8e-49d683fedfaf" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"992d22b0-61b3-4bff-a0b3-ffb39ed57a83" -> "7a2a94bc-9582-496d-bd8e-49d683fedfaf";
"82ebb4a8-ecd2-421b-8477-59c0795e76cc" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(Coffee)", shape=ellipse, style=filled];
"992d22b0-61b3-4bff-a0b3-ffb39ed57a83" -> "82ebb4a8-ecd2-421b-8477-59c0795e76cc";
"0a56cf17-de4c-4dea-b77f-fd201707d0f3" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(Coffee,Bar)", shape=box, style=filled];
"992d22b0-61b3-4bff-a0b3-ffb39ed57a83" -> "0a56cf17-de4c-4dea-b77f-fd201707d0f3";
"64bdab11-8733-486c-8be1-42ee6ea6972e" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(MilkDrink,Bar)", shape=box, style=filled];
"7d290e06-450b-4d6a-873e-cb1add89b66a" -> "64bdab11-8733-486c-8be1-42ee6ea6972e";
"fffb61a5-c080-435f-b642-96656a4c8bd1" [fillcolor="#FF8080", fontcolor=black, fontsize=20, height=0.01, label="&rarr;", shape=box, style=filled, width=0.01];
"b3eb0566-c750-43a0-94cc-a5ce1383d2a8" -> "fffb61a5-c080-435f-b642-96656a4c8bd1";
"91f406b6-4141-4b9d-8685-3358c1f38016" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="Holding(MilkDrink)", shape=ellipse, style=filled];
"fffb61a5-c080-435f-b642-96656a4c8bd1" -> "91f406b6-4141-4b9d-8685-3358c1f38016";
"461000b9-b5b4-41d8-93be-0daca9273dcf" [fillcolor="#FFFF80", fontcolor=black, fontsize=20, label="At(Robot,Bar2)", shape=ellipse, style=filled];
"fffb61a5-c080-435f-b642-96656a4c8bd1" -> "461000b9-b5b4-41d8-93be-0daca9273dcf";
"4a2642bb-b191-45e1-82f5-7303cb7dddd8" [fillcolor=lightgreen, fontcolor=black, fontsize=20, label="PutDown(MilkDrink,Bar)", shape=box, style=filled];
"fffb61a5-c080-435f-b642-96656a4c8bd1" -> "4a2642bb-b191-45e1-82f5-7303cb7dddd8";
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 287 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 1.6 MiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 343 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 2.5 MiB

View File

@ -172,7 +172,7 @@ class OptBTExpAlgorithm:
if c <= start:
if self.bt_merge:
bt = copy.deepcopy(self.merge_adjacent_conditions_stack(bt))
bt = self.merge_adjacent_conditions_stack(bt)
return bt,min_cost
else:
subtree.add_child([copy.deepcopy(pair_node.act_leaf)])
@ -188,8 +188,14 @@ class OptBTExpAlgorithm:
# 遍历所有动作, 寻找符合条件的动作
current_mincost = pair_node.cond_leaf.mincost # 当前的最短路径是多少
traversed_current=[]
for i in range(0, len(actions)):
# if "MoveTo(WaterTable)" in actions[i].name:
# print(actions[i].name,"cost=",actions[i].cost)
if not c & ((actions[i].pre | actions[i].add) - actions[i].del_set) <= set() :
if (c - actions[i].del_set) == c:
if self.verbose:
@ -214,19 +220,14 @@ class OptBTExpAlgorithm:
a_attr_node = Leaf(type='act', content=actions[i], mincost=current_mincost + actions[i].cost)
cond_anc_pair = CondActPair(cond_leaf=c_attr_node, act_leaf=a_attr_node)
self.nodes.append(copy.deepcopy(cond_anc_pair)) # condition node list
self.traversed.append(c_attr) # 重点 the set of expanded conditions
traversed_current.append(c_attr)
# self.traversed.append(c_attr) # 重点 the set of expanded conditions
# 把符合条件的动作节点都放到列表里
if self.verbose:
print("———— -- %s 符合条件放入列表,对应的c为 %s" % (actions[i].name,c_attr))
# self.merge_adjacent_conditions_stack()
# self.merge_adjacent_conditions_stack_old()
# self.merge_adjacent_conditions()
# if self.verbose:
# print("算法结束!\n")
# return True
self.traversed.extend(traversed_current)
if self.bt_merge:
bt = copy.deepcopy(self.merge_adjacent_conditions_stack(bt))
bt = self.merge_adjacent_conditions_stack(bt)
if self.verbose:
print("算法结束!\n")
return bt,min_cost
@ -253,6 +254,10 @@ class OptBTExpAlgorithm:
self.bt,mincost = self.run_algorithm_selTree(start, goal[0], actions)
return True
def run_algorithm_test(self, start, goal, actions):
self.bt,mincost = self.run_algorithm_selTree(start, goal, actions)
return True
def merge_adjacent_conditions_stack(self,bt_sel):
# 只针对第一层合并,之后要考虑层层递归合并
@ -296,7 +301,7 @@ class OptBTExpAlgorithm:
and isinstance(last_child.children[2].content, Action) and isinstance( child.children[1].content, Action) \
and last_child.children[2].content.name == child.children[1].content.name \
and c1==set() and c2!=set():
last_child.children[1].add_child([copy.deepcopy(c2_node)])
last_child.children[1].add_child([c2_node])
continue
elif len(last_child.children)==3:
stack.append(child)
@ -310,30 +315,30 @@ class OptBTExpAlgorithm:
if c2==set():
tmp_tree = ControlBT(type='>')
tmp_tree.add_child(
[copy.deepcopy(inter_node), copy.deepcopy(a1_node)])
[inter_node, a1_node])
else:
_sel = ControlBT(type='?')
_sel.add_child([copy.deepcopy(c1_node), copy.deepcopy(c2_node)])
_sel.add_child([c1_node, c2_node])
tmp_tree = ControlBT(type='>')
tmp_tree.add_child(
[copy.deepcopy(inter_node), copy.deepcopy(_sel),copy.deepcopy(a1_node)])
[inter_node, _sel,a1_node])
else:
if c1 == set():
seq1 = copy.deepcopy(last_child.children[1])
seq1 = last_child.children[1]
else:
seq1 = ControlBT(type='>')
seq1.add_child([copy.deepcopy(c1_node), copy.deepcopy(a1_node)])
seq1.add_child([c1_node, a1_node])
if c2 == set():
seq2 = copy.deepcopy(child.children[1])
seq2 = child.children[1]
else:
seq2 = ControlBT(type='>')
seq2.add_child([copy.deepcopy(c2_node), copy.deepcopy(a2_node)])
seq2.add_child([c2_node, a2_node])
sel = ControlBT(type='?')
sel.add_child([seq1, seq2])
tmp_tree = ControlBT(type='>')
tmp_tree.add_child(
[copy.deepcopy(inter_node), copy.deepcopy(sel)])
[inter_node,sel])
stack.pop()
stack.append(tmp_tree)
@ -347,7 +352,7 @@ class OptBTExpAlgorithm:
for tree in stack:
sbtree.add_child([tree])
bt_sel = copy.deepcopy(bt)
bt_sel = bt
return bt_sel

View File

@ -6,7 +6,7 @@ from BehaviorTree import Leaf,ControlBT # 行为结点类:叶子结点和非
from OptimalBTExpansionAlgorithm_single_goal import Action,OptBTExpAlgorithm # 调用最优行为树扩展算法
from BTExpansionAlgorithm import BTExpAlgorithm
from OptimalBTExpansionAlgorithm_single_goal import generate_random_state,state_transition
from tools import print_action_data_table,BTTest
from tools import print_action_data_table,BTTest,BTTest_act_start_goal,get_act_start_goal
from Examples import MoveBtoB_num,MoveBtoB,Cond2BelongsToCond3 # 导入三个例子
from Examples import *
# from utils.bt.draw import render_dot_tree
@ -157,9 +157,16 @@ if __name__ == '__main__' :
# # 设置生成规划问题集的超参数:文字数、解深度、迭代次数
seed=1
literals_num= 10
depth = 50
depth = 10
iters= 10
BTTest(bt_algo_opt=True,seed=seed,literals_num=literals_num,depth=depth,iters=iters)
act_list, start_list, goal_list = get_act_start_goal(seed=seed,literals_num=literals_num,depth=depth,iters=iters,total_count=1)
BTTest_act_start_goal(bt_algo_opt=True,act_list=act_list, start_list=start_list, goal_list=goal_list)
print("\n")
BTTest_act_start_goal(bt_algo_opt=False, act_list=act_list, start_list=start_list, goal_list=goal_list)
# BTTest(bt_algo_opt=True,seed=seed,literals_num=literals_num,depth=depth,iters=iters)
# print("\n")
# 对比
BTTest(bt_algo_opt=False,seed=seed,literals_num=literals_num,depth=depth,iters=iters)
# BTTest(bt_algo_opt=False,seed=seed,literals_num=literals_num,depth=depth,iters=iters)

View File

@ -4,14 +4,14 @@ from tabulate import tabulate
import numpy as np
import random
from OptimalBTExpansionAlgorithm_single_goal import generate_random_state,state_transition
from OptimalBTExpansionAlgorithm_single_goal import Action,OptBTExpAlgorithm
from OptimalBTExpansionAlgorithm import generate_random_state,state_transition
from OptimalBTExpansionAlgorithm import Action,OptBTExpAlgorithm
from BTExpansionAlgorithm import BTExpAlgorithm # 调用最优行为树扩展算法
import time
np.random.seed(1)
random.seed(1)
def print_action_data_table(goal,start,actions):
data = []
for a in actions:
@ -58,6 +58,8 @@ def BTTest_old(bt_algo_opt=True,seed=1,literals_num=10,depth=10,iters=10,total_c
state = copy.deepcopy(start)
states.append(state)
#print (state)
for i in range (0,depth):
a = Action()
a.generate_from_state(state,literals_num)
@ -233,20 +235,21 @@ def BTTest(bt_algo_opt=True,seed=1,literals_num=10,depth=10,iters=10,total_count
state = copy.deepcopy(start)
states.append(state)
#print (state)
for i in range (0,depth):
a = Action()
a.generate_from_state(state,literals_num)
a.cost = random.randint(1, 100)
if not a in actions:
a.name = "a"+str(action_num)
action_num+=1
actions.append(a)
state = state_transition(state,a)
if state in states:
pass
else:
states.append(state)
#print(state)
for k in range(10):
for i in range (0,depth):
a = Action()
a.generate_from_state(state,literals_num)
a.cost = random.randint(1, 100)
if not a in actions:
a.name = "a"+str(action_num)
action_num+=1
actions.append(a)
state = state_transition(state,a)
if state in states:
pass
else:
states.append(state)
#print(state)
goal = states[-1]
state = copy.deepcopy(start)
@ -277,12 +280,12 @@ def BTTest(bt_algo_opt=True,seed=1,literals_num=10,depth=10,iters=10,total_count
#algo = Weakalgorithm()
start_time = time.time()
# if count == 352 : #874:
# print_action_data_table(goal, start, list(actions))
if count == 0 : #874:
print_action_data_table(goal, start, list(actions))
# print_action_data_table(goal, start, list(actions))
if algo.run_algorithm(start, goal, actions):#运行算法规划后行为树为algo.bt
if algo.run_algorithm_test(start, goal, actions):#运行算法规划后行为树为algo.bt
total_tree_size.append( algo.bt.count_size()-1)
# if count==352:
# if count==0:
# algo.print_solution()
# algo.print_solution() # 打印行为树
else:
@ -361,6 +364,198 @@ def BTTest(bt_algo_opt=True,seed=1,literals_num=10,depth=10,iters=10,total_count
# Average number of actions 20.0
# Planning Time Total: 1.4748523235321045 0.0014748523235321046
# our
# success: 1000 failure: 0
# Total Tree Size: mean= 48.764 std= 20.503626574406358
# Total Steps Num: mean= 1.785 std= 0.8120556843187752
# Average number of states: 20.678
# Average number of actions 20.0
# Planning Time Total: 3.3271877765655518 0.0033271877765655516
def get_act_start_goal(seed=1,literals_num=10,depth=10,iters=10,total_count=1000):
act_list=[]
start_list=[]
goal_list=[]
for count in range(total_count):
# 生成一个规划问题,包括随机的状态和行动,以及目标状态
action_num=1
states = []
actions = []
start = generate_random_state(literals_num)
state = copy.deepcopy(start)
states.append(state)
# print (state)
for k in range(int(iters/5)):
state = copy.deepcopy(start)
for i in range(0, depth):
a = Action()
a.generate_from_state(state, literals_num)
a.cost = random.randint(1, 100)
if not a in actions:
a.name = "a" + str(action_num)
action_num += 1
actions.append(a)
state = state_transition(state, a)
if state in states:
pass
else:
states.append(state)
# print(state)
goal = states[-1]
state = copy.deepcopy(start)
for i in range(0, int(iters/5)):
a = Action()
a.generate_from_state(state, literals_num)
if not a in actions:
a.name = "a" + str(action_num)
action_num += 1
actions.append(a)
state = state_transition(state, a)
if state in states:
pass
else:
states.append(state)
state = random.sample(states, 1)[0]
act_list.append(actions)
start_list.append(start)
goal_list.append(goal)
# print("action:",len(actions))
return act_list, start_list, goal_list
def BTTest_act_start_goal(bt_algo_opt,act_list,start_list,goal_list):
if bt_algo_opt:
print("============= OptBT Test ==============")
else:
print("============= XiaoCai BT Test ==============")
# 设置生成规划问题集的超参数:文字数、解深度、迭代次数
total_tree_size = []
total_action_num = []
total_state_num = []
total_steps_num=[]
total_cost=[]
total_tick=[]
#fail_count=0
#danger_count=0
success_count =0
failure_count = 0
planning_time_total = 0.0
error = False
# 实验1000次
for count, (actions, start, goal) in enumerate(zip(act_list, start_list, goal_list)):
states=[]
# 生成一个规划问题,包括随机的状态和行动,以及目标状态
state = copy.deepcopy(start)
states.append(state)
# 选择测试本文算法btalgorithm或对比算法weakalgorithm
if bt_algo_opt:
# if count==874:
# algo = OptBTExpAlgorithm(verbose=False)
# else:
algo = OptBTExpAlgorithm(verbose=False)
else:
algo = BTExpAlgorithm(verbose=False)
algo.clear()
#algo = Weakalgorithm()
start_time = time.time()
if count == 0 : #874:
print_action_data_table(goal, start, list(actions))
# print_action_data_table(goal, start, list(actions))
if algo.run_algorithm_test(start, goal, actions):#运行算法规划后行为树为algo.bt
total_tree_size.append( algo.bt.count_size()-1)
if count==0:
algo.print_solution()
# algo.print_solution() # 打印行为树
else:
print ("error")
end_time = time.time()
planning_time_total += (end_time-start_time)
#开始从初始状态运行行为树,测试
state=start
steps=0
current_cost = 0
current_tick_time=0
val, obj, cost, tick_time = algo.bt.cost_tick(state,0,0)#tick行为树obj为所运行的行动
current_tick_time+=tick_time
current_cost += cost
while val !='success' and val !='failure':#运行直到行为树成功或失败
state = state_transition(state,obj)
val, obj,cost, tick_time = algo.bt.cost_tick(state,0,0)
current_cost += cost
current_tick_time += tick_time
if(val == 'failure'):
print("bt fails at step",steps)
error = True
break
steps+=1
if(steps>=500):#至多运行500步
break
if not goal <= state:#错误解,目标条件不在执行后状态满足
#print ("wrong solution",steps)
failure_count+=1
error = True
else:#正确解,满足目标条件
#print ("right solution",steps)
success_count+=1
total_steps_num.append(steps)
if error:
print_action_data_table(goal, start, list(actions))
algo.print_solution()
break
algo.clear()
total_action_num.append(len(actions))
total_state_num.append(len(states))
total_cost.append(current_cost)
total_tick.append(current_tick_time)
print("success:",success_count,"failure:",failure_count)#算法成功和失败次数
print("Total Tree Size: mean=",np.mean(total_tree_size), "std=",np.std(total_tree_size, ddof=1))#1000次测试树大小
print("Total Steps Num: mean=",np.mean(total_steps_num),"std=",np.std(total_steps_num,ddof=1))
print("Average Number of States:",np.mean(total_state_num))#1000次问题的平均状态数
print("Average Number of Actions",np.mean(total_action_num))#1000次问题的平均行动数
print("Planning Time Total:",planning_time_total,planning_time_total/1000.0)
print("Average Number of Ticks", np.mean(total_tick),"std=",np.std(total_tick,ddof=1))
print("Average Cost of Execution:", np.mean(total_cost),"std=",np.std(total_cost,ddof=1))
# print(total_steps_num) 第21个
if bt_algo_opt:
print("============= End OptBT Test ==============")
else:
print("============= End XiaoCai BT Test ==============")
# xiao cai
# success: 1000 failure: 0
# Total Tree Size: mean= 35.303 std= 29.71336526001515
# Total Steps Num: mean= 1.898 std= 0.970844240101644
# Average number of states: 20.678
# Average number of actions 20.0
# Planning Time Total: 0.6280641555786133 0.0006280641555786133
# our start
# success: 1000 failure: 0
# Total Tree Size: mean= 17.945 std= 12.841997192488865
# Total Steps Num: mean= 1.785 std= 0.8120556843187752
# Average number of states: 20.678
# Average number of actions 20.0
# Planning Time Total: 1.4748523235321045 0.0014748523235321046
# our
# success: 1000 failure: 0
# Total Tree Size: mean= 48.764 std= 20.503626574406358