Package teamwork :: Package examples :: Package Thespian :: Module RedRidingHoodClasses_director
[hide private]
[frames] | no frames]

Source Code for Module teamwork.examples.Thespian.RedRidingHoodClasses_director

  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      #'horizon':1,
 
  9      #'depth':2,
 
 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              #'sameLocation':1.0,
 
 23              #
 
 24              #
 
 25              #'wolfAlive':1.0,
 
 26              #'redAlive':1.0,
 
 27              #'redEaten':0.0,
 
 28              #'grannyEaten':0.0,
 
 29              
 
 30              'indoor':0.0,
 
 31              #'specialRule':0.0,
 
 32              
 
 33               },
 
 34      'models': {
 
 35          'simple': {'goals':[\
 
 36                              {'entity':['self'],'direction':'max','type':'state',
 
 37                              'key':'alive','weight':5},
 
 38                              # {'entity':['self'],'direction':'max','type':'state',
 
 39                              #'key':'sameLocation','weight':1000},
 
 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              #{'entity':['self'],'direction':'max','type':'state',
 
 63              #    'key':'specialRule','weight':1000.},
 
 64              #{'entity':['self'],'direction':'max','type':'state',
 
 65              #    'key':'sameLocation','weight':1000},
 
 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                                                         #{'type':'literal','value':'follow'},
 
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                                                         #{'type':'literal','value':'moveto-granny'},
 
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              #'location':.95,
 
161               },
 
162   
 
163      'goals':[\
 
164              #{'entity':['self'],'direction':'max','type':'state',
 
165              #    'key':'specialRule','weight':1000.},
 
166              #{'entity':['self'],'direction':'max','type':'state',
 
167              #    'key':'sameLocation','weight':1000},
 
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              #'alive':1.0,
 
255              #'preferWait':1.0,
 
256               },
 
257      'beliefs':{\
 
258                 'wolf':{'model':'simple'},
 
259                 },
 
260   
 
261      'goals':[\
 
262               #{'entity':['self'],'direction':'max','type':'state',
 
263               #   'key':'sameLocation','weight':1000},
 
264               #
 
265               #{'entity':['self'],'direction':'max','type':'state',
 
266               #   'key':'specialRule','weight':1000.},
 
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              #{'entity':['self'],'direction':'max','type':'state',
 
284              #  'key':'alive','weight':5.},
 
285              
 
286              #{'entity':['self'],'direction':'max','type':'state',
 
287              #    'key':'preferWait','weight':1.},
 
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                                                          #{'type':'literal','value':'move1'},
 
327                                                          #{'type':'literal','value':'move-1'},
 
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               #{'entity':['self'],'direction':'max','type':'state',
 
352               #   'key':'sameLocation','weight':1000.},
 
353               #
 
354               #{'entity':['self'],'direction':'max','type':'state',
 
355               #   'key':'specialRule','weight':1000.},
 
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                 #'hunter':{'model':'simple'},
 
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              #{'entity':['self'],'direction':'max','type':'state',
 
436              #   'key':'sameLocation','weight':1000},
 
437              #
 
438              #{'entity':['self'],'direction':'max','type':'state',
 
439              #    'key':'specialRule','weight':1000.},
 
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              # {'entity':['self'],'direction':'max','type':'state',
 
454              #  'key':'likeMove','weight':.1},
 
455              #{'entity':['self'],'direction':'max','type':'state',
 
456              #  'key':'likeTalk','weight':.15},
 
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                                                                  #{'type':'literal','value':'moveto-granny'},
 
516                                                                  {'type':'literal','value':'enter-house'},
 
517                                                                  {'type':'literal','value':'exist-house'},
 
518                                                                  #{'type':'literal','value':'enter-house'},
 
519                                                                 {'type':'literal','value':'wait'},
 
520                                                                 ],
 
521                                                      
 
522                                              },
 
523                                     }, 
 
524                            ],
 
525                  },
 
526      } 
527