Added all relevant transformation rules with corresponding IEC 62264 and PDDL examples.
This commit is contained in:
parent
c7815a2053
commit
3ddc82c9f1
1 changed files with 120 additions and 31 deletions
|
@ -149,31 +149,41 @@ From
|
||||||
classDiagram
|
classDiagram
|
||||||
class MoveShuttle
|
class MoveShuttle
|
||||||
<<ProcessSegment>> MoveShuttle
|
<<ProcessSegment>> MoveShuttle
|
||||||
|
class SHUTTLE
|
||||||
|
<<EquipmentSegmentSpecification>> SHUTTLE
|
||||||
class Shuttle
|
class Shuttle
|
||||||
<<EquipmentSegmentSpecification>> Shuttle
|
<<EquipmentClass>> Shuttle
|
||||||
class ShuttleClass
|
class FROM
|
||||||
<<EquipmentClass>> ShuttleClass
|
<<EquipmentSegmentSpecification>> FROM
|
||||||
class From
|
class TO
|
||||||
<<EquipmentSegmentSpecification>> From
|
<<EquipmentSegmentSpecification>> TO
|
||||||
class To
|
class LockedFrom {
|
||||||
<<EquipmentSegmentSpecification>> To
|
<<EquipmentSegmentSpecificationProperty>>
|
||||||
class LockedFrom
|
description = "pddl:pre"
|
||||||
<<EquipmentSegmentSpecificationProperty>> LockedFrom
|
value = false
|
||||||
class PositioningUnitClass
|
}
|
||||||
<<EquipmentClass>> PositioningUnitClass
|
class PositioningUnit
|
||||||
class LockedTo
|
<<EquipmentClass>> PositioningUnit
|
||||||
<<EquipmentSegmentSpecificationProperty>> LockedTo
|
class TransportationNode
|
||||||
|
<<EquipmentClass>> TransportationNode
|
||||||
|
class LockedTo {
|
||||||
|
<<EquipmentSegmentSpecificationProperty>>
|
||||||
|
description = "pddl:pre"
|
||||||
|
value = false
|
||||||
|
}
|
||||||
class Locked
|
class Locked
|
||||||
<<EquipmentClassProperty>> Locked
|
<<EquipmentClassProperty>> Locked
|
||||||
MoveShuttle *-- Shuttle : contains
|
MoveShuttle *-- SHUTTLE : contains
|
||||||
MoveShuttle *-- From : contains
|
MoveShuttle *-- FROM : contains
|
||||||
MoveShuttle *-- To : contains
|
MoveShuttle *-- TO : contains
|
||||||
Shuttle --> ShuttleClass : specifies
|
SHUTTLE --> Shuttle : specifies
|
||||||
From *-- LockedFrom : has property
|
FROM *-- LockedFrom : has property
|
||||||
From --> PositioningUnitClass : specifies
|
FROM --> PositioningUnit : specifies
|
||||||
To --> PositioningUnitClass : specifies
|
FROM --> TransportationNode : specifies
|
||||||
To *-- LockedTo : has property
|
TO --> PositioningUnit : specifies
|
||||||
PositioningUnitClass *-- Locked : has property
|
TO --> TransportationNode : specifies
|
||||||
|
TO *-- LockedTo : has property
|
||||||
|
PositioningUnit *-- Locked : has property
|
||||||
LockedFrom --> Locked : corresponds to
|
LockedFrom --> Locked : corresponds to
|
||||||
LockedTo --> Locked : corresponds to
|
LockedTo --> Locked : corresponds to
|
||||||
```
|
```
|
||||||
|
@ -193,7 +203,6 @@ to
|
||||||
(imply (EquipmentClassed ?FROM EC_PositioningUnit)
|
(imply (EquipmentClassed ?FROM EC_PositioningUnit)
|
||||||
(not (PositioningUnitLocked ?FROM))
|
(not (PositioningUnitLocked ?FROM))
|
||||||
)
|
)
|
||||||
(imply (EquipmentClassed ?FROM EC_TransportationNode) (TransportationNodeOccupied ?FROM))
|
|
||||||
(or
|
(or
|
||||||
(EquipmentClassed ?TO EC_PositioningUnit)
|
(EquipmentClassed ?TO EC_PositioningUnit)
|
||||||
(EquipmentClassed ?TO EC_TransportationNode)
|
(EquipmentClassed ?TO EC_TransportationNode)
|
||||||
|
@ -201,17 +210,12 @@ to
|
||||||
(imply (EquipmentClassed ?TO EC_PositioningUnit)
|
(imply (EquipmentClassed ?TO EC_PositioningUnit)
|
||||||
(not (PositioningUnitLocked ?TO))
|
(not (PositioningUnitLocked ?TO))
|
||||||
)
|
)
|
||||||
(imply (EquipmentClassed ?TO EC_TransportationNode)
|
|
||||||
(not (TransportationNodeOccupied ?TO))
|
|
||||||
)
|
|
||||||
(TransportationNodeConnection ?FROM ?TO)
|
(TransportationNodeConnection ?FROM ?TO)
|
||||||
(EquipmentLocation ?SHUTTLE ?FROM)
|
(EquipmentLocation ?SHUTTLE ?FROM)
|
||||||
(not (EquipmentLocation ?SHUTTLE ?TO))
|
(not (EquipmentLocation ?SHUTTLE ?TO))
|
||||||
)
|
)
|
||||||
:effect
|
:effect
|
||||||
(and
|
(and
|
||||||
(not (TransportationNodeOccupied ?FROM))
|
|
||||||
(TransportationNodeOccupied ?TO)
|
|
||||||
(increase (total-cost) (shuttle-time ?FROM ?TO))
|
(increase (total-cost) (shuttle-time ?FROM ?TO))
|
||||||
(not (EquipmentLocation ?SHUTTLE ?FROM))
|
(not (EquipmentLocation ?SHUTTLE ?FROM))
|
||||||
(EquipmentLocation ?SHUTTLE ?TO)
|
(EquipmentLocation ?SHUTTLE ?TO)
|
||||||
|
@ -269,7 +273,7 @@ to
|
||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
### Resource Network Connection
|
## Resource Network Connection
|
||||||
`Resource Network Connection` instances are converted to init statements.
|
`Resource Network Connection` instances are converted to init statements.
|
||||||
|
|
||||||
From
|
From
|
||||||
|
@ -299,11 +303,36 @@ to
|
||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
### Intralogistic Routing Topology
|
## Intralogistic Routing Topology
|
||||||
`Resource Network Connection` instances of type `Transport-System-Track-Connection` and `Transport-System-Positioning-Unit-Connection` are converted in a very specific way. The former raw connections represent the physical connections of all track curves, lines, and switches. The latter represent the physical location where a positioning unit has been attached to a track. This information is read in, and a simplified topology (a graph) is computed that only contains the positioning units and whether they are reachable from each other. The edge weight of the graph corresponds to the physical track length between the positioning units and is converted into seconds based on an assumed average speed of 0.56 m/s.
|
`Resource Network Connection` instances of type `Transport-System-Track-Connection` and `Transport-System-Positioning-Unit-Connection` are converted in a very specific way. The former raw connections represent the physical connections of all track curves, lines, and switches. The latter represent the physical location where a positioning unit has been attached to a track. This information is read in, and a directed graph structure is generated. Here, we already show a simplified graph where only topologically important elements are kept (curves and straight lines without positioning units attached are removed). Elements starting with a `J` are `Joins`, `D` depicts `Divides`, and `A` represents a special item, an `Arena` (two inputs, two outputs). Stadium-shaped nodes depict positioning units.
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
graph LR
|
||||||
|
J5 --> A1
|
||||||
|
D4 --> J4
|
||||||
|
D3 --> P1([PU-MC-1]) --> J3
|
||||||
|
D2 --> P2([PU-MC-2]) --> J3 --> J2
|
||||||
|
D1 --> P3([PU-MC-3]) --> J2 --> J1
|
||||||
|
A1 --> J1 --> D1 --> D2 --> D3 --> D4 --> P10([PU-IO-2]) --> J4 --> D5 --> J5
|
||||||
|
A1 --> P100([PU-IO-1]) --> A1
|
||||||
|
D5 --> P50([PU-Buffer]) --> J5
|
||||||
|
```
|
||||||
|
|
||||||
|
In order to reduce computational complexity for the PDDL solver, an even more simplified topology is computed that only contains the positioning units and leaves out all intermediate elements. The edge weight of the graph corresponds to the physical track length between the positioning units and is converted into seconds based on an assumed average speed of 0.56 m/s.
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
graph LR
|
||||||
|
P1 & P2 & P3 & P10 & P50 --> P100([PU-IO-1])
|
||||||
|
P1 & P2 & P3 & P10 & P100 --> P50([PU-Buffer])
|
||||||
|
P1 & P2 & P3 & P50 & P100 --> P10([PU-IO-2])
|
||||||
|
P1 & P2 & P10 & P50 & P100 --> P3([PU-MC-3])
|
||||||
|
P1 & P3 & P10 & P50 & P100 --> P2([PU-MC-2])
|
||||||
|
P2 & P3 & P10 & P50 & P100 --> P1([PU-MC-1])
|
||||||
|
```
|
||||||
|
|
||||||
For each "positioning unit connection" two init statements are created: one that states that these two positioning units are connected with each other (`TransportationNodeConnection`), and another one setting the function value for the function `shuttle-time`, representing the estimated traveling time in seconds between these two positioning units. The resulting PDDL init statements are listed below:
|
For each "positioning unit connection" two init statements are created: one that states that these two positioning units are connected with each other (`TransportationNodeConnection`), and another one setting the function value for the function `shuttle-time`, representing the estimated traveling time in seconds between these two positioning units. The resulting PDDL init statements are listed below:
|
||||||
|
|
||||||
|
|
||||||
```pddl
|
```pddl
|
||||||
(:init
|
(:init
|
||||||
(TransportationNodeConnection E_PositioningUnit-MachiningCenter-3 E_PositioningUnit-MachiningCenter-2)
|
(TransportationNodeConnection E_PositioningUnit-MachiningCenter-3 E_PositioningUnit-MachiningCenter-2)
|
||||||
|
@ -369,3 +398,63 @@ For each "positioning unit connection" two init statements are created: one that
|
||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Material Assembly Information
|
||||||
|
Information about what material can be assembled from what other material is captured from the `assembly` relation in the `MaterialClass` and `MaterialDefinition` instances.
|
||||||
|
|
||||||
|
From
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
classDiagram
|
||||||
|
class OpenTopBlackYellowBlue
|
||||||
|
<<MaterialDefinition>> OpenTopBlackYellowBlue
|
||||||
|
class ChassisBlack
|
||||||
|
<<MaterialDefinition>> ChassisBlack
|
||||||
|
class CabinYellow
|
||||||
|
<<MaterialDefinition>> CabinYellow
|
||||||
|
class BodyOpenTopBlue
|
||||||
|
<<MaterialDefinition>> BodyOpenTopBlue
|
||||||
|
OpenTopBlackYellowBlue --> BodyOpenTopBlue : assembled from
|
||||||
|
OpenTopBlackYellowBlue --> CabinYellow : assembled from
|
||||||
|
OpenTopBlackYellowBlue --> ChassisBlack : assembled from
|
||||||
|
```
|
||||||
|
|
||||||
|
to
|
||||||
|
|
||||||
|
```pddl
|
||||||
|
(:init
|
||||||
|
(MaterialDefinitionAssembly MD_OpenTop-Black-Yellow-Blue MD_Chassis-Black)
|
||||||
|
(MaterialDefinitionAssembly MD_OpenTop-Black-Yellow-Blue MD_Cabin-Yellow)
|
||||||
|
(MaterialDefinitionAssembly MD_OpenTop-Black-Yellow-Blue MD_Body-OpenTop-Blue)
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
Information about the current assembly state are expressed through the assembly relation of the `MaterialLot` relation. This is not only used to express the current state, but also for the formulation of goal statements, es depicted below. The `from` IEC 62264 model is extracted from the [goal description model](../iec62264/CIIRC-Testbed-TASE-Goal-1.iec62264).
|
||||||
|
|
||||||
|
From
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
classDiagram
|
||||||
|
class OpenTopBlackYellowBlue1
|
||||||
|
<<MaterialLot>> OpenTopBlackYellowBlue1
|
||||||
|
class ChassisBlack1
|
||||||
|
<<MaterialLot>> ChassisBlack1
|
||||||
|
class CabinYellow1
|
||||||
|
<<MaterialLot>> CabinYellow1
|
||||||
|
class BodyOpenTopBlue1
|
||||||
|
<<MaterialLot>> BodyOpenTopBlue1
|
||||||
|
OpenTopBlackYellowBlue1 --> BodyOpenTopBlue1 : assembled from
|
||||||
|
OpenTopBlackYellowBlue1 --> CabinYellow1 : assembled from
|
||||||
|
OpenTopBlackYellowBlue1 --> ChassisBlack1 : assembled from
|
||||||
|
```
|
||||||
|
|
||||||
|
to
|
||||||
|
|
||||||
|
```pddl
|
||||||
|
(:goal
|
||||||
|
(and
|
||||||
|
(MaterialLotAssembly ML_OpenTop-Black-Yellow-Blue-1 ML_Body-OpenTop-Blue-1)
|
||||||
|
(MaterialLotAssembly ML_OpenTop-Black-Yellow-Blue-1 ML_Cabin-Yellow-1)
|
||||||
|
(MaterialLotAssembly ML_OpenTop-Black-Yellow-Blue-1 ML_Chassis-Black-1)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
Loading…
Reference in a new issue