adding assembly_order case
This commit is contained in:
parent
5239e6d091
commit
8dfbe38878
2 changed files with 13 additions and 4 deletions
|
@ -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()
|
||||||
|
|
|
@ -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'),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue