-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSimple.use
More file actions
228 lines (110 loc) · 2.72 KB
/
Copy pathSimple.use
File metadata and controls
228 lines (110 loc) · 2.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
-- Copyright (c) 2015 FAT-GYFT, MIT License
model DroneModel
-------------
-- CLASSES --
-------------
-- Time Management:
-------------------
class Universe
attributes
TICN : Integer -- Number of tics to generate
RCAP : Integer -- Product capacity of a receptacle
DCAP : Integer -- Product capacity of a drone
DNB : Integer -- Drone number
RNB : Integer -- Receptacle number
MAXB : Integer -- Max battery for a drone
SIDE : Integer -- Side of the square grid
PTIC : Integer -- Number of ticks before a product is consumed
end
class World
end
-- Cells:
---------
class Cell
end
class Warehouse
end
class Receptacle
attributes
nbProducts : Integer
end
-- Drones:
----------
class Drone
attributes
remainingBattery : Integer
nbProducts : Integer
receptacle : Receptacle
position : Cell
end
-------------------------
-- ASSOCIATION CLASSES --
-------------------------
------------------
-- ASSOCIATIONS --
------------------
-- Time management:
-------------------
association Worlds between
Universe [1] role universe
World [*] role worlds
end
association Cells between
Universe [1]
Cell [*] role cells
end
association NextWorld between
World [0..1] role prev
World [0..1] role next
end
association WorldDrones between
World [1]
Drone [*] role drones
end
-- Grid management:
-------------------
association Neighbors between
Cell [2..4] role origin
Cell [2..4] role neighbors
end
-- Drones management:
---------------------
----------------
-- INVARIANTS --
----------------
constraints
-- Time management:
-------------------
context Universe
inv Single_Universe:
Universe.allInstances->size = 1
context u:Universe
inv TICN_Worlds:
World.allInstances->size = u.TICN
context w1,w2:World
inv Different_Worlds:
w1.next->includes(w2) implies w1 <> w2
context w1,w2:World
inv No_Shared_Drone:
w1 <> w2 implies w1.drones->intersection(w2.drones)->isEmpty()
-- Grid management:
-------------------
-- Drones management:
---------------------
-- Delivery management:
-----------------------
-- A drone must deliver all products at once
----- context w1,w2:World -- Line 7
----- inv Deliver_All_Products:
----- w1.next->includes(w2) implies w1.drones->forAll(d1 |
----- w2.drones->forAll(d2 |
----- d1.position = d2.position))
-----Rule 11: one Drone per Cell (in UML)
-----Rule 15
-----context u:Universe, w:World inv MAXB_drones:
----- Drone.allInstances->forAll(d| [d].remainingBattery<=u.MAXB)
-----TicTac pdf page 27/28
-----context Universe::ticTac(w : World)
----- pre initPre : u.isDefined()
-----context ce:Cell inv Cell_Neighbors:
----- ce->