Skip to content

Commit ada9bc8

Browse files
committed
chore(up): Update problem kinds to match unified-planning#365
1 parent ff9ef00 commit ada9bc8

File tree

1 file changed

+132
-79
lines changed

1 file changed

+132
-79
lines changed

planning/unified/plugin/up_aries/solver.py

Lines changed: 132 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,136 @@
4242

4343
_ARIES_EPSILON = Fraction(1, 10)
4444

45+
_ARIES_SUPPORTED_KIND = up.model.ProblemKind({
46+
# PROBLEM_CLASS
47+
"ACTION_BASED",
48+
"HIERARCHICAL",
49+
# "CONTINGENT", "ACTION_BASED_MULTI_AGENT", "SCHEDULING", "TAMP",
50+
# PROBLEM_TYPE
51+
# "SIMPLE_NUMERIC_PLANNING", "GENERAL_NUMERIC_PLANNING",
52+
# TIME
53+
"CONTINUOUS_TIME",
54+
"DISCRETE_TIME",
55+
"INTERMEDIATE_CONDITIONS_AND_EFFECTS",
56+
"EXTERNAL_CONDITIONS_AND_EFFECTS",
57+
"TIMED_EFFECTS", "TIMED_EFFECT", # backward compat
58+
"TIMED_GOALS",
59+
"DURATION_INEQUALITIES",
60+
# EXPRESSION_DURATION
61+
# "STATIC_FLUENTS_IN_DURATIONS", "STATIC_FLUENTS_IN_DURATION", # backward compat
62+
# "FLUENTS_IN_DURATIONS", "FLUENTS_IN_DURATION", # backward compat
63+
# NUMBERS
64+
# "CONTINUOUS_NUMBERS",
65+
# "DISCRETE_NUMBERS",
66+
# "BOUNDED_TYPES",
67+
# CONDITIONS_KIND
68+
"NEGATIVE_CONDITIONS",
69+
"DISJUNCTIVE_CONDITIONS",
70+
"EQUALITIES", "EQUALITY", # backward compat
71+
# "EXISTENTIAL_CONDITIONS",
72+
# "UNIVERSAL_CONDITIONS",
73+
# EFFECTS_KIND
74+
# "CONDITIONAL_EFFECTS",
75+
# "INCREASE_EFFECTS",
76+
# "DECREASE_EFFECTS",
77+
"STATIC_FLUENTS_IN_BOOLEAN_ASSIGNMENTS",
78+
"STATIC_FLUENTS_IN_NUMERIC_ASSIGNMENTS",
79+
"FLUENTS_IN_BOOLEAN_ASSIGNMENTS",
80+
"FLUENTS_IN_NUMERIC_ASSIGNMENTS",
81+
# TYPING
82+
"FLAT_TYPING",
83+
"HIERARCHICAL_TYPING",
84+
# FLUENTS_TYPE
85+
# "NUMERIC_FLUENTS",
86+
"OBJECT_FLUENTS",
87+
# QUALITY_METRICS
88+
"ACTIONS_COST",
89+
# "FINAL_VALUE",
90+
"MAKESPAN",
91+
"PLAN_LENGTH",
92+
# "OVERSUBSCRIPTION",
93+
# "TEMPORAL_OVERSUBSCRIPTION",
94+
# ACTIONS_COST_KIND
95+
# "STATIC_FLUENTS_IN_ACTIONS_COST",
96+
# "FLUENTS_IN_ACTIONS_COST",
97+
# SIMULATED_ENTITIES
98+
# "SIMULATED_EFFECTS",
99+
# CONSTRAINTS_KIND
100+
# "TRAJECTORY_CONSTRAINTS",
101+
# HIERARCHICAL
102+
"METHOD_PRECONDITIONS",
103+
"TASK_NETWORK_CONSTRAINTS",
104+
"INITIAL_TASK_NETWORK_VARIABLES",
105+
"TASK_ORDER_TOTAL",
106+
"TASK_ORDER_PARTIAL",
107+
# "TASK_ORDER_TEMPORAL",
108+
})
109+
110+
_ARIES_VAL_SUPPORTED_KIND = up.model.ProblemKind({
111+
# PROBLEM_CLASS
112+
"ACTION_BASED",
113+
"HIERARCHICAL",
114+
# PROBLEM_TYPE
115+
"SIMPLE_NUMERIC_PLANNING",
116+
"GENERAL_NUMERIC_PLANNING",
117+
# TIME
118+
"CONTINUOUS_TIME",
119+
"DISCRETE_TIME",
120+
"INTERMEDIATE_CONDITIONS_AND_EFFECTS",
121+
"EXTERNAL_CONDITIONS_AND_EFFECTS",
122+
"TIMED_EFFECTS", "TIMED_EFFECT", # backward compat
123+
"TIMED_GOALS",
124+
"DURATION_INEQUALITIES",
125+
# EXPRESSION_DURATION
126+
"STATIC_FLUENTS_IN_DURATIONS", "STATIC_FLUENTS_IN_DURATION", # backward compat
127+
"FLUENTS_IN_DURATIONS", "FLUENTS_IN_DURATION", # backward compat
128+
# NUMBERS
129+
"CONTINUOUS_NUMBERS",
130+
"DISCRETE_NUMBERS",
131+
# "BOUNDED_TYPES",
132+
# CONDITIONS_KIND
133+
"NEGATIVE_CONDITIONS",
134+
"DISJUNCTIVE_CONDITIONS",
135+
"EQUALITIES", "EQUALITY", # backward compat
136+
"EXISTENTIAL_CONDITIONS",
137+
"UNIVERSAL_CONDITIONS",
138+
# EFFECTS_KIND
139+
"CONDITIONAL_EFFECTS",
140+
"INCREASE_EFFECTS",
141+
"DECREASE_EFFECTS",
142+
"STATIC_FLUENTS_IN_BOOLEAN_ASSIGNMENTS",
143+
"STATIC_FLUENTS_IN_NUMERIC_ASSIGNMENTS",
144+
"FLUENTS_IN_BOOLEAN_ASSIGNMENTS",
145+
"FLUENTS_IN_NUMERIC_ASSIGNMENTS",
146+
# TYPING
147+
"FLAT_TYPING",
148+
"HIERARCHICAL_TYPING",
149+
# FLUENTS_TYPE
150+
"NUMERIC_FLUENTS",
151+
"OBJECT_FLUENTS",
152+
# QUALITY_METRICS
153+
"ACTIONS_COST",
154+
"FINAL_VALUE",
155+
"MAKESPAN",
156+
"PLAN_LENGTH",
157+
"OVERSUBSCRIPTION",
158+
"TEMPORAL_OVERSUBSCRIPTION",
159+
# ACTIONS_COST_KIND
160+
"STATIC_FLUENTS_IN_ACTIONS_COST",
161+
"FLUENTS_IN_ACTIONS_COST",
162+
# SIMULATED_ENTITIES
163+
# "SIMULATED_EFFECTS",
164+
# CONSTRAINTS_KIND
165+
# "TRAJECTORY_CONSTRAINTS",
166+
# HIERARCHICAL
167+
"METHOD_PRECONDITIONS",
168+
# "TASK_NETWORK_CONSTRAINTS",
169+
# "INITIAL_TASK_NETWORK_VARIABLES",
170+
"TASK_ORDER_TOTAL",
171+
"TASK_ORDER_PARTIAL",
172+
"TASK_ORDER_TEMPORAL",
173+
})
174+
45175

46176
def _is_dev() -> bool:
47177
env_str = os.getenv(_DEV_ENV_VAR, "false").lower()
@@ -180,34 +310,7 @@ def ensures(anytime_guarantee: AnytimeGuarantee) -> bool:
180310

181311
@staticmethod
182312
def supported_kind() -> up.model.ProblemKind:
183-
supported_kind = up.model.ProblemKind()
184-
supported_kind.set_problem_class("ACTION_BASED") # type: ignore
185-
supported_kind.set_problem_class("HIERARCHICAL") # type: ignore
186-
supported_kind.set_time("CONTINUOUS_TIME") # type: ignore
187-
supported_kind.set_time("INTERMEDIATE_CONDITIONS_AND_EFFECTS") # type: ignore
188-
supported_kind.set_time("EXTERNAL_CONDITIONS_AND_EFFECTS") # type: ignore
189-
supported_kind.set_time("TIMED_EFFECT") # type: ignore
190-
supported_kind.set_time("TIMED_GOALS") # type: ignore
191-
supported_kind.set_time("DURATION_INEQUALITIES") # type: ignore
192-
# supported_kind.set_numbers('DISCRETE_NUMBERS') # type: ignore
193-
# supported_kind.set_numbers('CONTINUOUS_NUMBERS') # type: ignore
194-
supported_kind.set_typing("FLAT_TYPING") # type: ignore
195-
supported_kind.set_typing("HIERARCHICAL_TYPING") # type: ignore
196-
supported_kind.set_conditions_kind("NEGATIVE_CONDITIONS") # type: ignore
197-
supported_kind.set_conditions_kind("DISJUNCTIVE_CONDITIONS") # type: ignore
198-
supported_kind.set_conditions_kind("EQUALITY") # type: ignore
199-
# supported_kind.set_fluents_type('NUMERIC_FLUENTS') # type: ignore
200-
supported_kind.set_fluents_type("OBJECT_FLUENTS") # type: ignore
201-
supported_kind.set_hierarchical("METHOD_PRECONDITIONS")
202-
supported_kind.set_hierarchical("TASK_NETWORK_CONSTRAINTS")
203-
supported_kind.set_hierarchical("INITIAL_TASK_NETWORK_VARIABLES")
204-
supported_kind.set_hierarchical("TASK_ORDER_TOTAL")
205-
supported_kind.set_hierarchical("TASK_ORDER_PARTIAL")
206-
# supported_kind.set_hierarchical("TASK_ORDER_TEMPORAL")
207-
supported_kind.set_quality_metrics("ACTIONS_COST")
208-
supported_kind.set_quality_metrics("MAKESPAN")
209-
supported_kind.set_quality_metrics("PLAN_LENGTH")
210-
return supported_kind
313+
return _ARIES_SUPPORTED_KIND
211314

212315
@staticmethod
213316
def supports(problem_kind: up.model.ProblemKind) -> bool:
@@ -237,57 +340,7 @@ def _validate(
237340

238341
@staticmethod
239342
def supported_kind() -> up.model.ProblemKind:
240-
supported_kind = up.model.ProblemKind()
241-
# Problem class
242-
supported_kind.set_problem_class("ACTION_BASED") # type: ignore
243-
supported_kind.set_problem_class("HIERARCHICAL") # type: ignore
244-
# Problem type
245-
supported_kind.set_problem_type("SIMPLE_NUMERIC_PLANNING") # type: ignore
246-
supported_kind.set_problem_type("GENERAL_NUMERIC_PLANNING") # type: ignore
247-
# Time
248-
supported_kind.set_time("CONTINUOUS_TIME") # type: ignore
249-
supported_kind.set_time("DISCRETE_TIME") # type: ignore
250-
supported_kind.set_time("INTERMEDIATE_CONDITIONS_AND_EFFECTS") # type: ignore
251-
supported_kind.set_time("EXTERNAL_CONDITIONS_AND_EFFECTS") # type: ignore
252-
supported_kind.set_time("TIMED_EFFECT") # type: ignore
253-
supported_kind.set_time("TIMED_GOALS") # type: ignore
254-
supported_kind.set_time("DURATION_INEQUALITIES") # type: ignore
255-
# Expression duration
256-
supported_kind.set_expression_duration("STATIC_FLUENTS_IN_DURATION") # type: ignore
257-
supported_kind.set_expression_duration("FLUENTS_IN_DURATION") # type: ignore
258-
# Numbers
259-
supported_kind.set_numbers("CONTINUOUS_NUMBERS") # type: ignore
260-
supported_kind.set_numbers("DISCRETE_NUMBERS") # type: ignore
261-
# Conditions kind
262-
supported_kind.set_conditions_kind("NEGATIVE_CONDITIONS") # type: ignore
263-
supported_kind.set_conditions_kind("DISJUNCTIVE_CONDITIONS") # type: ignore
264-
supported_kind.set_conditions_kind("EQUALITY") # type: ignore
265-
supported_kind.set_conditions_kind("EXISTENTIAL_CONDITIONS") # type: ignore
266-
supported_kind.set_conditions_kind("UNIVERSAL_CONDITIONS") # type: ignore
267-
# Effects kind
268-
supported_kind.set_effects_kind("CONDITIONAL_EFFECTS")
269-
supported_kind.set_effects_kind("INCREASE_EFFECTS")
270-
supported_kind.set_effects_kind("DECREASE_EFFECTS")
271-
# Typing
272-
supported_kind.set_typing("FLAT_TYPING") # type: ignore
273-
supported_kind.set_typing("HIERARCHICAL_TYPING") # type: ignore
274-
# Fluents type
275-
supported_kind.set_fluents_type("NUMERIC_FLUENTS") # type: ignore
276-
supported_kind.set_fluents_type("OBJECT_FLUENTS") # type: ignore
277-
# Quality metrics
278-
supported_kind.set_quality_metrics("ACTIONS_COST")
279-
supported_kind.set_quality_metrics("FINAL_VALUE")
280-
supported_kind.set_quality_metrics("MAKESPAN")
281-
supported_kind.set_quality_metrics("PLAN_LENGTH")
282-
supported_kind.set_quality_metrics("OVERSUBSCRIPTION")
283-
# Hierarchical
284-
supported_kind.set_hierarchical("METHOD_PRECONDITIONS")
285-
# supported_kind.set_hierarchical("TASK_NETWORK_CONSTRAINTS")
286-
# supported_kind.set_hierarchical("INITIAL_TASK_NETWORK_VARIABLES")
287-
supported_kind.set_hierarchical("TASK_ORDER_TOTAL")
288-
supported_kind.set_hierarchical("TASK_ORDER_PARTIAL")
289-
supported_kind.set_hierarchical("TASK_ORDER_TEMPORAL")
290-
return supported_kind
343+
return _ARIES_VAL_SUPPORTED_KIND
291344

292345
@staticmethod
293346
def supports(problem_kind: up.model.ProblemKind) -> bool:

0 commit comments

Comments
 (0)