Warning: Error with navigation contributor "BrowserModule"

Ticket #24: arcas4_bis.dom

File arcas4_bis.dom, 2.9 KB (added by rlalleme, 12 months ago)

Domain file

Line 
1// ARCAS Scenario: 4. (just the assembly part, not correct representaion of UAV activity, add subassembly composed of subassemblies)
2// STANDALONE domain
3// created: Raphaël Lallement 20/03/2013
4
5factdatabase{
6        //Declarations
7        //Agent is already declared
8        define entityType Element; //Can be basic or a subassembly
9        define entityType AssemblyPlan; //Is a todo list
10
11        define entityAttributes Agent{
12        }
13
14        define entityAttributes Element{
15                static atom string type; //Can be basic or subassembly
16                static atom number order; //Represents the order in the partially-oredered assembly plan
17                dynamic set Element dependencies;
18                dynamic set Element subassembly; //List of elements that compose a subassembly
19        }
20       
21        define entityAttributes AssemblyPlan{
22                dynamic set Element elements; //The todo list
23        }
24
25        //Creations
26        UAV = new Agent;
27        AssemblyPlan = new AssemblyPlan;
28               
29        #include "arcas4.ins"
30}
31
32HTN{
33        action Place(Agent R, AssemblyPlan AssemblyPlan, Element E){
34                preconditions {
35                };
36                effects{
37                        IF{E >> AssemblyPlan.elements;}{AssemblyPlan.elements =>> E;} //Some element are not in the list if they are in a subassembly
38                        FORALL(Element F, {E >> F.dependencies;}, {F.dependencies =>> E;});
39                };
40                cost{costFnOrder(AssemblyPlan.elements.size(), E.order)};
41                //cost{costFn(AssemblyPlan.elements.size())};
42                duration{durationFn(1, 1)};
43        }
44       
45        action Attach(Agent R, Element SubAssembly, Element E){
46                //Should include any part regarding the attach process (glue, screw, ...)
47                preconditions {
48                        E >> SubAssembly.subassembly;
49                };
50                effects{
51                        SubAssembly.subassembly =>> E;
52                        FORALL(Element F, {E >> F.dependencies;}, {F.dependencies =>> E;});
53                };
54                cost{costFn(1)};
55                duration{durationFn(1, 1)};
56        }
57       
58        method Assemble(Agent R, AssemblyPlan AssemblyPlan, Element SubAssembly){
59                empty{SubAssembly.subassembly.size()==0;};
60                {
61                        preconditions{
62                        };
63                        subtasks{
64                                E=SELECTORDERED(Element, {E>>SubAssembly.subassembly; E.dependencies.size() == 0;}, assemblyPlan(E), <);
65                                1: AddToStructure(R, AssemblyPlan, E);
66                                2: Attach(R, SubAssembly, E) >1;
67                                3: Assemble(R, AssemblyPlan, SubAssembly) >2;
68                        };
69                }
70        }
71       
72        method AddToStructure(Agent R, AssemblyPlan AssemblyPlan, Element E){
73                empty{AssemblyPlan.elements.size()==0;};
74                {
75                        preconditions{
76                                E.type=="subassembly";
77                        };
78                        subtasks{
79                                //Assemble and then put
80                                1: Assemble(R, AssemblyPlan, E);
81                                2: Place(R, AssemblyPlan, E) >1;
82                        };
83                }
84                {
85                        preconditions{
86                                E.type=="basic";
87                        };
88                        subtasks{
89                                1: Place(R, AssemblyPlan, E);
90                        };
91                }
92        }
93       
94        method BuildStructure(Agent R, AssemblyPlan AssemblyPlan) {
95                empty {AssemblyPlan.elements.size()==0;};
96                {
97                        preconditions{
98                        };
99                        subtasks{
100                                E=SELECTORDERED(Element, {E>>AssemblyPlan.elements; E.dependencies.size() == 0;}, assemblyPlan(E), <);
101                                1: AddToStructure(R, AssemblyPlan, E);
102                                2: BuildStructure(R, AssemblyPlan)>1;
103                        };
104                }
105        }
106}
107
108//Social rules
109timePart{ priority = 0; }