1 from teamwork.agent.AgentClasses import *
2 from teamwork.dynamics.pwlDynamics import *
3
4 from RedRidingHoodDynamics_director import *
5
6 classHierarchy['character'] = {
7 'parent': [],
8
9
10 'dynamics':[DynFun['basicDyn'],DynFun['RedDyn']],
11 'state':{\
12 'alive':1.0,
13
14 'being-enquired':0.0,
15 'enquired':0.0,
16 'init-norm':0.0,
17 'resp-norm':0.0,
18 'SD-norm':0.0,
19
20 'likeMove':-1,
21 'likeTalk':-1,
22
23
24
25
26
27
28
29
30 'indoor':0.0,
31
32
33 },
34 'models': {
35 'simple': {'goals':[\
36 {'entity':['self'],'direction':'max','type':'state',
37 'key':'alive','weight':5},
38
39
40 ],
41 'policy': [],
42 },
43 }
44 }
45
46 classHierarchy['red'] = {
47 'parent': ['character'],
48 'horizon':1,
49 'depth':1,
50 'dynamics':[DynFun['basicDyn'],DynFun['RedDyn'],DynFun['RedSelfDyn']],
51 'state':{\
52 'eaten':0.0,
53 'power':0.2,
54 'has-cake':1.0,
55 'location':0.25,
56 },
57 'beliefs':{\
58 'wolf':{'model':'simple'},
59 },
60
61 'goals':[\
62
63
64
65
66
67 {'entity':['wolf'],'direction':'min','type':'state',
68 'key':'alive','weight':50.},
69
70 {'entity':['self'],'direction':'max','type':'state',
71 'key':'alive','weight':5},
72
73 {'entity':['self'],'direction':'max','type':'state',
74 'key':'init-norm','weight':1.},
75 {'entity':['self'],'direction':'max','type':'state',
76 'key':'resp-norm','weight':1.},
77 {'entity':['self'],'direction':'max','type':'state',
78 'key':'SD-norm','weight':1.},
79
80 {'entity':['self'],'direction':'min','type':'state',
81 'key':'eaten','weight':5.},
82
83 {'entity':['granny'],'direction':'max','type':'state',
84 'key':'has-cake','weight':1.},
85
86 {'entity':['self'],'direction':'max','type':'state',
87 'key':'likeTalk','weight':.5},
88
89 {'entity':['self'],'direction':'max','type':'state',
90 'key':'likeMove','weight':.5},
91 ],
92
93 'actions': {'type':'OR',
94 'values':[{'type':'decision',
95 'value':{'type':'XOR',
96 'key':'object',
97 'values':[{'type':'generic','value':'wolf'}],
98 'base': {'type':'XOR',
99 'key':'type',
100 'values':[\
101 {'type':'literal','value':'talkabout-granny'},
102 {'type':'literal','value':'escape'},
103 {'type':'literal','value':'enquiry'},
104 {'type':'literal','value':'inform'},
105 {'type':'literal','value':'kill'},
106
107 ],
108 },
109 },
110 },
111 {'type':'decision',
112 'value':{'type':'XOR',
113 'key':'object',
114 'values':[{'type':'generic','value':'granny'},
115 {'type':'generic','value':'wolf'}],
116 'base': {'type':'XOR',
117 'key':'type',
118 'values':[{'type':'literal','value':'give-cake'},
119 ],
120 },
121 },
122 },
123 {'type':'decision',
124 'value':{'type':'XOR',
125 'key':'type',
126 'values':[{'type':'literal','value':'move1'},
127 {'type':'literal','value':'move-1'},
128
129 {'type':'literal','value':'wait'},
130
131 ],
132 },
133 },
134 {'type':'decision',
135 'value':{'type':'XOR',
136 'key':'object',
137 'values':[{'type':'generic','value':'hunter'},
138 {'type':'generic','value':'woodcutter'}],
139 'base': {'type':'XOR',
140 'key':'type',
141 'values':[{'type':'literal','value':'enquiry'},
142 {'type':'literal','value':'inform'},
143 ],
144 },
145 },
146 },
147 ],
148 },
149
150 }
151
152 classHierarchy['hunter'] = {
153 'parent': ['character'],
154 'horizon':1,
155 'depth':1,
156 'state':{\
157 'power':1.0,
158 'has-cake':0.0,
159 'location':-.55,
160
161 },
162
163 'goals':[\
164
165
166
167
168
169 {'entity':['self'],'direction':'max','type':'state',
170 'key':'init-norm','weight':1.},
171 {'entity':['self'],'direction':'max','type':'state',
172 'key':'resp-norm','weight':1.},
173
174 {'entity':['self'],'direction':'max','type':'state',
175 'key':'SD-norm','weight':1.},
176
177 {'entity':['wolf'],'direction':'min','type':'state',
178 'key':'alive','weight':5.},
179
180 {'entity':['self'],'direction':'max','type':'state',
181 'key':'likeMove','weight':.5},
182 ],
183
184 'actions': {'type':'OR',
185 'values':[{'type':'decision',
186 'value':{'type':'XOR',
187 'key':'object',
188 'values':[{'type':'generic','value':'wolf'}],
189 'base': {'type':'XOR',
190 'key':'type',
191 'values':[{'type':'literal','value':'kill'},
192 {'type':'literal','value':'inform'},
193 {'type':'literal','value':'talkabout-granny'},
194 ],
195 },
196 },
197 },
198 {'type':'decision',
199 'value':{'type':'XOR',
200 'key':'object',
201 'values':[{'type':'generic','value':'woodcutter'},
202 ],
203 'base': {'type':'XOR',
204 'key':'type',
205 'values':[\
206 {'type':'literal','value':'help'},
207 {'type':'literal','value':'inform'},
208 {'type':'literal','value':'enquiry'},
209 ],
210 },
211 },
212 },
213 {'type':'decision',
214 'value':{'type':'XOR',
215 'key':'object',
216 'values':[{'type':'generic','value':'red'},
217 {'type':'generic','value':'granny'}],
218 'base': {'type':'XOR',
219 'key':'type',
220 'values':[{'type':'literal','value':'inform'},
221 {'type':'literal','value':'enquiry'},
222 {'type':'literal','value':'give-gun'},
223 ],
224 },
225 },
226 },
227
228 {'type':'decision',
229 'value':{'type':'XOR',
230 'key':'type',
231 'values':[{'type':'literal','value':'move2'},
232 {'type':'literal','value':'move-2'},
233 {'type':'literal','value':'move1'},
234 {'type':'literal','value':'move-1'},
235 {'type':'literal','value':'wait'},
236 ],
237 },
238 },
239
240 ],
241 },
242
243 }
244
245 classHierarchy['woodcutter'] = {
246 'parent': ['character'],
247 'horizon':1,
248 'depth':1,
249 'dynamics':[DynFun['basicDyn'],DynFun['RedDyn'],DynFun['woodcutterSelfDyn']],
250 'state':{\
251 'power':1.0,
252 'has-cake':0.0,
253 'location':0.25,
254
255
256 },
257 'beliefs':{\
258 'wolf':{'model':'simple'},
259 },
260
261 'goals':[\
262
263
264
265
266
267
268 {'entity':['self'],'direction':'max','type':'state',
269 'key':'init-norm','weight':1.},
270
271 {'entity':['self'],'direction':'max','type':'state',
272 'key':'resp-norm','weight':1.},
273
274 {'entity':['self'],'direction':'max','type':'state',
275 'key':'SD-norm','weight':1.},
276
277 {'entity':['red'],'direction':'min','type':'state',
278 'key':'eaten','weight':5.},
279
280 {'entity':['granny'],'direction':'min','type':'state',
281 'key':'eaten','weight':5.},
282
283
284
285
286
287
288
289 ],
290
291 'actions': {'type':'OR',
292 'values':[{'type':'decision',
293 'value':{'type':'XOR',
294 'key':'object',
295 'values':[{'type':'generic','value':'wolf'}],
296 'base': {'type':'XOR',
297 'key':'type',
298 'values':[{'type':'literal','value':'kill'},
299 {'type':'literal','value':'inform'},
300 {'type':'literal','value':'talkabout-granny'},
301 ],
302 },
303 },
304 },
305
306 {'type':'decision',
307 'value':{'type':'XOR',
308 'key':'object',
309 'values':[{'type':'generic','value':'red'},
310 {'type':'generic','value':'hunter'},
311 ],
312 'base': {'type':'XOR',
313 'key':'type',
314 'values':[{'type':'literal','value':'inform'},
315 {'type':'literal','value':'enquiry'},
316 ],
317 },
318 },
319 },
320
321 {'type':'decision',
322 'value':{'type':'XOR',
323 'key':'type',
324 'values':[\
325 {'type':'literal','value':'wait'},
326
327
328 ],
329 },
330 },
331
332 ],
333 },
334
335 }
336
337 classHierarchy['granny'] = {
338 'parent': ['character'],
339 'dynamics':[DynFun['basicDyn'],DynFun['RedDyn'],DynFun['grannySelfDyn']],
340 'horizon':1,
341 'depth':1,
342 'state':{
343 'eaten':0.0,
344 'power':0.2,
345 'has-cake':0.0,
346 'location':0.65,
347
348 },
349
350 'goals':[\
351
352
353
354
355
356
357 {'entity':['self'],'direction':'min','type':'state',
358 'key':'eaten','weight':5.},
359
360 {'entity':['self'],'direction':'max','type':'state',
361 'key':'alive','weight':5.},
362
363 {'entity':['self'],'direction':'max','type':'state',
364 'key':'init-norm','weight':1.},
365
366 {'entity':['self'],'direction':'max','type':'state',
367 'key':'resp-norm','weight':1.},
368
369 ],
370 'actions': {'type':'OR',
371 'values':[{'type':'decision',
372 'value':{'type':'XOR',
373 'key':'object',
374 'values':[{'type':'generic','value':'wolf'}],
375 'base': {'type':'XOR',
376 'key':'type',
377 'values':[{'type':'literal','value':'escape'},
378 {'type':'literal','value':'kill'},
379 ],
380 },
381 },
382 },
383 {'type':'decision',
384 'value':{'type':'XOR',
385 'key':'type',
386 'values':[{'type':'literal','value':'wait'},
387 ],
388 },
389 },
390
391 {'type':'decision',
392 'value':{'type':'XOR',
393 'key':'object',
394 'values':[{'type':'generic','value':'red'},
395 {'type':'generic','value':'wolf'},
396 {'type':'generic','value':'hunter'},
397 {'type':'generic','value':'woodcutter'},
398 ],
399 'base': {'type':'XOR',
400 'key':'type',
401 'values':[\
402 {'type':'literal','value':'enquiry'},
403 {'type':'literal','value':'inform'},
404 ],
405 },
406 },
407 },
408
409 ],
410 },
411
412 }
413
414 classHierarchy['wolf'] = {
415 'parent': ['character'],
416 'horizon':2,
417 'depth':2,
418 'beliefs':{\
419 'red':{'model':'simple'},
420 'granny':{'model':'simple'},
421
422 },
423 'state':{\
424 'power':0.6,
425 'has-cake':0.0,
426 'location':.25,
427 'full':0.0,
428
429 'know-granny':0.0,
430 'SD':0.0,
431 'helped':0.0,
432 },
433
434 'goals':[
435
436
437
438
439
440
441 {'entity':['self'],'direction':'max','type':'state',
442 'key':'init-norm','weight':1.},
443 {'entity':['self'],'direction':'max','type':'state',
444 'key':'resp-norm','weight':1.},
445
446 {'entity':['self'],'direction':'max','type':'state',
447 'key':'full','weight':3.},
448
449 {'entity':['self'],'direction':'max','type':'state',
450 'key':'alive','weight':50.},
451
452
453
454
455
456
457
458 ],
459
460 'actions': {'type':'OR',
461 'values':[{'type':'decision',
462 'value':{'type':'XOR',
463 'key':'object',
464 'values':[{'type':'generic','value':'red'},
465 {'type':'generic','value':'granny'}],
466 'base': {'type':'XOR',
467 'key':'type',
468 'values':[{'type':'literal','value':'eat'},
469 {'type':'literal','value':'give-cake'},
470 ],
471 },
472 },
473 },
474
475 {'type':'decision',
476 'value':{'type':'XOR',
477 'key':'object',
478 'values':[{'type':'generic','value':'red'},
479 ],
480 'base': {'type':'XOR',
481 'key':'type',
482 'values':[\
483 {'type':'literal','value':'enquiry'},
484 {'type':'literal','value':'inform'},
485 ],
486 },
487 },
488 },
489
490 {'type':'decision',
491 'value':{'type':'XOR',
492 'key':'object',
493 'values':[{'type':'generic','value':'woodcutter'},
494 ],
495 'base': {'type':'XOR',
496 'key':'type',
497 'values':[\
498 {'type':'literal','value':'help'},
499 {'type':'literal','value':'enquiry'},
500 {'type':'literal','value':'inform'},
501 {'type':'literal','value':'give-cake'},
502 ],
503 },
504 },
505 },
506
507 {'type':'decision',
508 'value':{'type':'XOR',
509 'key':'type',
510 'values':[{'type':'literal','value':'move2'},
511 {'type':'literal','value':'move-2'},
512 {'type':'literal','value':'move1'},
513 {'type':'literal','value':'move-1'},
514 {'type':'literal','value':'eat-cake'},
515
516 {'type':'literal','value':'enter-house'},
517 {'type':'literal','value':'exist-house'},
518
519 {'type':'literal','value':'wait'},
520 ],
521
522 },
523 },
524 ],
525 },
526 }
527