2020-T-ASE/pddl/domain-CIIRC-Testbed-TASE-1.pddl
2020-05-23 14:50:45 +02:00

316 lines
9.3 KiB
Text

(define (domain CIIRC-Testbed-TASE)
(:requirements :action-costs :typing :negative-preconditions :disjunctive-preconditions :equality)
(:types PersonnelClass Person EquipmentClass Equipment MaterialClass MaterialDefinition MaterialLot)
(:constants
PC_MaintenanceEngineer - PersonnelClass
EC_Shuttle - EquipmentClass
EC_Robot - EquipmentClass
EC_BaseplateCarrier - EquipmentClass
EC_PositioningUnit - EquipmentClass
EC_TransportationNode - EquipmentClass
MC_Body - MaterialClass
MC_Truck - MaterialClass
MC_Pickable - MaterialClass
MC_Baseplate - MaterialClass
MC_TruckComponent - MaterialClass
MC_Chassis - MaterialClass
MC_Cabin - MaterialClass
MD_StakeBed-White-White-White - MaterialDefinition
MD_Cabin-Silver - MaterialDefinition
MD_StakeBed-Black-Blue-White - MaterialDefinition
MD_Body-Dumper-Yellow - MaterialDefinition
MD_Dumper-White-Transparent-Yellow - MaterialDefinition
MD_Tank-Black-White-Black - MaterialDefinition
MD_Body-OpenTop-Blue - MaterialDefinition
MD_TruckBaseplate - MaterialDefinition
MD_Chassis-Black - MaterialDefinition
MD_Cabin-Yellow - MaterialDefinition
MD_Body-Tank-Black - MaterialDefinition
MD_Cabin-Blue - MaterialDefinition
MD_OpenTop-Black-Yellow-Blue - MaterialDefinition
MD_Dumper-White-Silver-Silver - MaterialDefinition
MD_Body-Dumper-Silver - MaterialDefinition
MD_Chassis-White - MaterialDefinition
MD_Cabin-Transparent - MaterialDefinition
MD_Body-StakeBed-White - MaterialDefinition
MD_Tank-Black-Blue-Silver - MaterialDefinition
MD_Cabin-White - MaterialDefinition
MD_Body-Tank-Silver - MaterialDefinition
EC_Table - EquipmentClass
)
(:predicates
(PersonClassed ?P - Person ?C - PersonnelClass)
(EquipmentClassed ?E - Equipment ?C - EquipmentClass)
(MaterialClassed ?D - MaterialDefinition ?C - MaterialClass)
(MaterialDefined ?L - MaterialLot ?D - MaterialDefinition)
(MaterialLotClassed ?L - MaterialLot ?C - MaterialClass)
(RobotOccupied ?E - Equipment)
(TransportationNodeOccupied ?E - Equipment)
(PositioningUnitLocked ?E - Equipment)
(RobotEnabled ?E - Equipment)
(TransportationNodeConnection ?F ?T - Equipment)
(EquipmentLocation ?E ?R - Equipment)
(ReachesTo ?R ?E - Equipment)
(MaterialLocation ?M - MaterialLot ?E - Equipment)
(MaterialRaw ?M - MaterialLot)
(DefinitionMountable ?M ?B - MaterialDefinition)
(ClassMountable ?M ?B - MaterialClass)
(Mounted ?M ?B - MaterialLot)
(MaterialLotAssembly ?W ?P - MaterialLot)
(MaterialDefinitionAssembly ?W ?P - MaterialDefinition)
)
(:functions
(total-cost)
(shuttle-time ?FROM ?TO - Equipment)
)
(:action LockPositioningUnit
:parameters (?E - Equipment)
:precondition
(and
(EquipmentClassed ?E EC_PositioningUnit)
(not (PositioningUnitLocked ?E))
)
:effect
(and
(increase (total-cost) 1)
(PositioningUnitLocked ?E)
)
)
(:action UnlockPositioningUnit
:parameters (?E - Equipment)
:precondition
(and
(EquipmentClassed ?E EC_PositioningUnit)
(PositioningUnitLocked ?E)
)
:effect
(and
(increase (total-cost) 1)
(not (PositioningUnitLocked ?E))
)
)
(:action MoveShuttle
:parameters (?SHUTTLE ?FROM ?TO - Equipment)
:precondition
(and
(EquipmentClassed ?SHUTTLE EC_Shuttle)
(or
(EquipmentClassed ?FROM EC_PositioningUnit)
(EquipmentClassed ?FROM EC_TransportationNode)
)
(imply (EquipmentClassed ?FROM EC_PositioningUnit)
(not (PositioningUnitLocked ?FROM))
)
(imply (EquipmentClassed ?FROM EC_TransportationNode) (TransportationNodeOccupied ?FROM)
)
(or
(EquipmentClassed ?TO EC_PositioningUnit)
(EquipmentClassed ?TO EC_TransportationNode)
)
(imply (EquipmentClassed ?TO EC_PositioningUnit)
(not (PositioningUnitLocked ?TO))
)
(imply (EquipmentClassed ?TO EC_TransportationNode)
(not (TransportationNodeOccupied ?TO))
)
(TransportationNodeConnection ?FROM ?TO)
(EquipmentLocation ?SHUTTLE ?FROM)
(not (EquipmentLocation ?SHUTTLE ?TO))
)
:effect
(and
(not (TransportationNodeOccupied ?FROM))
(TransportationNodeOccupied ?TO)
(increase (total-cost) (shuttle-time ?FROM ?TO))
(not (EquipmentLocation ?SHUTTLE ?FROM))
(EquipmentLocation ?SHUTTLE ?TO)
)
)
(:action Pick
:parameters (?ROBOT ?CARRIER - Equipment ?PICKABLE ?BASEPLATE - MaterialLot ?SUBCARRIER - Equipment)
:precondition
(and
(EquipmentClassed ?ROBOT EC_Robot)
(not (RobotOccupied ?ROBOT))
(RobotEnabled ?ROBOT)
(EquipmentClassed ?CARRIER EC_BaseplateCarrier)
(MaterialLotClassed ?PICKABLE MC_Pickable)
(MaterialLotClassed ?BASEPLATE MC_Baseplate)
(MaterialRaw ?PICKABLE)
(MaterialLocation ?BASEPLATE ?CARRIER)
(Mounted ?PICKABLE ?BASEPLATE)
(not (MaterialLocation ?PICKABLE ?ROBOT))
(imply (EquipmentClassed ?CARRIER EC_Table)
(and
(ReachesTo ?ROBOT ?CARRIER)
(= ?CARRIER ?SUBCARRIER)
)
)
(imply (EquipmentClassed ?CARRIER EC_Shuttle)
(and
(EquipmentClassed ?SUBCARRIER EC_PositioningUnit)
(EquipmentLocation ?CARRIER ?SUBCARRIER)
(ReachesTo ?ROBOT ?SUBCARRIER)
(PositioningUnitLocked ?SUBCARRIER)
)
)
)
:effect
(and
(RobotOccupied ?ROBOT)
(increase (total-cost) 5)
(not (Mounted ?PICKABLE ?BASEPLATE))
(MaterialLocation ?PICKABLE ?ROBOT)
)
)
(:action Place
:parameters (?ROBOT ?CARRIER - Equipment ?PICKABLE ?BASEPLATE - MaterialLot ?SUBCARRIER - Equipment)
:precondition
(and
(EquipmentClassed ?ROBOT EC_Robot)
(RobotOccupied ?ROBOT)
(RobotEnabled ?ROBOT)
(EquipmentClassed ?CARRIER EC_BaseplateCarrier)
(MaterialLotClassed ?PICKABLE MC_Pickable)
(MaterialLotClassed ?BASEPLATE MC_Baseplate)
(MaterialRaw ?PICKABLE)
(MaterialLocation ?BASEPLATE ?CARRIER)
(not (Mounted ?PICKABLE ?BASEPLATE))
(MaterialLocation ?PICKABLE ?ROBOT)
(imply (EquipmentClassed ?CARRIER EC_Table)
(and
(ReachesTo ?ROBOT ?CARRIER)
(= ?CARRIER ?SUBCARRIER)
)
)
(imply (EquipmentClassed ?CARRIER EC_Shuttle)
(and
(EquipmentClassed ?SUBCARRIER EC_PositioningUnit)
(EquipmentLocation ?CARRIER ?SUBCARRIER)
(ReachesTo ?ROBOT ?SUBCARRIER)
(PositioningUnitLocked ?SUBCARRIER)
)
)
)
:effect
(and
(not (RobotOccupied ?ROBOT))
(increase (total-cost) 5)
(Mounted ?PICKABLE ?BASEPLATE)
(not (MaterialLocation ?PICKABLE ?ROBOT))
)
)
(:action Assemble
:parameters (?ROBOT ?CARRIER - Equipment ?PICKABLE ?BASE ?ASSEMBLY ?BASEPLATE - MaterialLot ?SUBCARRIER - Equipment)
:precondition
(and
(EquipmentClassed ?ROBOT EC_Robot)
(RobotOccupied ?ROBOT)
(RobotEnabled ?ROBOT)
(EquipmentClassed ?CARRIER EC_BaseplateCarrier)
(MaterialLotClassed ?PICKABLE MC_Pickable)
(MaterialLotClassed ?BASE MC_TruckComponent)
(MaterialLotClassed ?ASSEMBLY MC_Truck)
(MaterialLotClassed ?BASEPLATE MC_Baseplate)
(MaterialRaw ?PICKABLE)
(MaterialLocation ?BASEPLATE ?CARRIER)
(Mounted ?BASE ?BASEPLATE)
(or
(exists ( ?AMD - MaterialDefinition ?PMD - MaterialDefinition ?BMD - MaterialDefinition)
(and
(MaterialDefined ?ASSEMBLY ?AMD)
(MaterialDefined ?PICKABLE ?PMD)
(MaterialDefined ?BASE ?BMD)
(MaterialDefinitionAssembly ?AMD ?PMD)
(MaterialDefinitionAssembly ?AMD ?BMD)
(DefinitionMountable ?PMD ?BMD)
)
)
(exists ( ?PMC - MaterialClass ?BMC - MaterialClass ?AMD - MaterialDefinition ?PMD - MaterialDefinition ?BMD - MaterialDefinition)
(and
(MaterialDefined ?ASSEMBLY ?AMD)
(MaterialDefined ?PICKABLE ?PMD)
(MaterialDefined ?BASE ?BMD)
(MaterialClassed ?BMD ?BMC)
(MaterialClassed ?PMD ?PMC)
(MaterialDefinitionAssembly ?AMD ?PMD)
(MaterialDefinitionAssembly ?AMD ?BMD)
(ClassMountable ?PMC ?BMC)
)
)
)
(not (exists (?A - MaterialLot)
(and
(not (= ?A ?ASSEMBLY)
)
(MaterialLotAssembly ?A ?BASE)
)
)
)
(not (exists (?BP - MaterialLot)
(and
(not (= ?BP ?BASEPLATE)
)
(Mounted ?ASSEMBLY ?BP)
)
)
)
(not (Mounted ?PICKABLE ?BASEPLATE))
(MaterialLocation ?PICKABLE ?ROBOT)
(imply (EquipmentClassed ?CARRIER EC_Table)
(and
(ReachesTo ?ROBOT ?CARRIER)
(= ?CARRIER ?SUBCARRIER)
)
)
(imply (EquipmentClassed ?CARRIER EC_Shuttle)
(and
(EquipmentClassed ?SUBCARRIER EC_PositioningUnit)
(EquipmentLocation ?CARRIER ?SUBCARRIER)
(ReachesTo ?ROBOT ?SUBCARRIER)
(PositioningUnitLocked ?SUBCARRIER)
)
)
)
:effect
(and
(not (RobotOccupied ?ROBOT))
(increase (total-cost) 5)
(Mounted ?PICKABLE ?BASE)
(not (MaterialRaw ?PICKABLE))
(not (MaterialRaw ?BASE))
(MaterialLotAssembly ?ASSEMBLY ?PICKABLE)
(MaterialLotAssembly ?ASSEMBLY ?BASE)
(Mounted ?ASSEMBLY ?BASEPLATE)
(MaterialLocation ?ASSEMBLY ?CARRIER)
(MaterialLocation ?PICKABLE ?CARRIER)
(not (MaterialLocation ?PICKABLE ?ROBOT))
)
)
(:action RepairRobot
:parameters (?ENGINEER - Person ?ROBOT - Equipment)
:precondition
(and
(PersonClassed ?ENGINEER PC_MaintenanceEngineer)
(EquipmentClassed ?ROBOT EC_Robot)
(not (RobotEnabled ?ROBOT))
)
:effect
(and
(RobotEnabled ?ROBOT)
(increase (total-cost) 99)
)
)
)