adding assembly_order case

This commit is contained in:
IDONTSUDO 2023-07-04 16:32:15 +03:00
parent 5239e6d091
commit 8dfbe38878
2 changed files with 13 additions and 4 deletions

View file

@ -5,7 +5,7 @@ from src.model.asm4_structure import Asm4Structure
from src.usecases.assembly_to_pddl_use_case import AssemblyToPddlUseCase from src.usecases.assembly_to_pddl_use_case import AssemblyToPddlUseCase
# python3 main.py --stepStructurePath /home/idontsudo/t/framework/asp-review-app/server/public/cubes/generation/step-structure.json --outPath /home/idontsudo/t/framework/pddl/ # python3 main.py --stepStructurePath /Users/idontsudo/robo/step-structure.json --outPath /Users/idontsudo/robo/pddl/out/
if __name__ == "__main__": if __name__ == "__main__":
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()

View file

@ -7,13 +7,11 @@ import os
class AssemblyToPddlUseCase: class AssemblyToPddlUseCase:
def call(assembly: List[str], rootLabel: str): def call(assembly: List[str], rootLabel: str):
print(assembly)
partType = UserType("part") partType = UserType("part")
assemblyType = UserType('assembly') assemblyType = UserType('assembly')
objectsPartPddl = [] objectsPartPddl = []
objectsAsmToPddl = [] objectsAsmToPddl = []
i = 0 i = 0
for el in assembly: for el in assembly:
objectsPartPddl.append(Object(el, partType)) objectsPartPddl.append(Object(el, partType))
@ -30,15 +28,26 @@ class AssemblyToPddlUseCase:
connected = Fluent('part-of', BoolType(), connected = Fluent('part-of', BoolType(),
l_from=partType, l_to=assemblyType) l_from=partType, l_to=assemblyType)
assemblyOrder = Fluent('assembly_order', BoolType(),
l_from=assemblyType, l_to=assemblyType)
i = 0 i = 0
for el in objectsPartPddl: for el in objectsPartPddl:
problem.set_initial_value(connected(el, objectsAsmToPddl[i]), True) problem.set_initial_value(connected(el, objectsAsmToPddl[i]), True)
i = i+1 i = i+1
goal = Fluent(rootLabel) goal = Fluent(rootLabel)
problem.add_goal(connected(objectsPartPddl[objectsPartPddl.__len__( problem.add_goal(connected(objectsPartPddl[objectsPartPddl.__len__(
) - 1], objectsAsmToPddl[objectsAsmToPddl.__len__() - 1]),) ) - 1], objectsAsmToPddl[objectsAsmToPddl.__len__() - 1]),)
i = 0
for el in objectsAsmToPddl:
if objectsAsmToPddl[i-1] != objectsAsmToPddl[objectsAsmToPddl.__len__() - 1]:
problem.set_initial_value(assemblyOrder(objectsAsmToPddl[i-1], el), True)
i = i+1
problem.add_goal(assemblyOrder(objectsAsmToPddl[objectsAsmToPddl.__len__(
) - 1], objectsAsmToPddl[objectsAsmToPddl.__len__() - 1]),)
return { return {
"problem": unified_planning.io.PDDLWriter(problem).get_problem(), "problem": unified_planning.io.PDDLWriter(problem).get_problem(),
'domain': FS.readFile(os.path.dirname(os.path.realpath(__file__)) + '/../../mocks' + '/domain.txt'), 'domain': FS.readFile(os.path.dirname(os.path.realpath(__file__)) + '/../../mocks' + '/domain.txt'),
} }