Package teamwork :: Package examples :: Package school :: Module violence
[hide private]
[frames] | no frames]

Source Code for Module teamwork.examples.school.violence

 1  from teamwork.math.KeyedMatrix import * 
 2  from teamwork.math.KeyedTree import * 
 3  from teamwork.math.ProbabilityTree import * 
 4   
5 -def genAttackDyn(fromFeature,feature=None,scale=1.):
6 if not feature: 7 feature = fromFeature 8 # Object dynamics if object is stronger 9 weights = {StateKey({'entity':'self','feature':feature}):1., 10 StateKey({'entity':'actor','feature':fromFeature}): -.1, 11 StateKey({'entity':'object','feature':fromFeature}): .1, 12 keyConstant: -.05*scale} 13 objWeaker = createDynamicNode(feature,weights) 14 # Object dynamics if object is weaker 15 objStronger = ProbabilityTree(IncrementMatrix(feature,value=-.01*scale)) 16 # Branch on whether actor is stronger than object 17 plane = KeyedPlane(DifferenceRow(keys=[{'entity':'object','feature':fromFeature}, 18 {'entity':'actor','feature':fromFeature}]),0.) 19 # Object dynamics 20 objectTree = createBranchTree(plane,objWeaker,objStronger) 21 # Power unchanged 22 unchangedTree = ProbabilityTree(IdentityMatrix(feature)) 23 # Branch on whether I'm object 24 weights = {makeIdentityKey('object'): 1.} 25 notActorTree = createBranchTree(KeyedPlane(IdentityRow(keys=[{'entity':'object','relationship':'equals'}]),0.5), 26 unchangedTree,objectTree) 27 # Actor much weaker 28 weights = {StateKey({'entity':'self','feature':feature}):1., 29 StateKey({'entity':'actor','feature':fromFeature}): .1, 30 StateKey({'entity':'object','feature':fromFeature}): -.1, 31 keyConstant: .02*scale} 32 actorMuchWeakerTree = createDynamicNode(feature,weights) 33 # Actor weaker 34 actorWeakerTree = ProbabilityTree(IncrementMatrix(feature,value=-.01*scale)) 35 36 # Branch on whether actor is *much* weaker than object 37 weights = {makeStateKey('actor',fromFeature): -1., 38 makeStateKey('object',fromFeature): 1.} 39 plane = KeyedPlane(DifferenceRow(keys=[{'entity':'object','feature':fromFeature}, 40 {'entity':'actor','feature':fromFeature}]),0.2) 41 actorTree = createBranchTree(plane,actorWeakerTree,actorMuchWeakerTree) 42 # Branch on whether I'm actor 43 plane = KeyedPlane(IdentityRow(keys=[{'entity':'actor', 44 'relationship':'equals'}]),0.5) 45 tree = createBranchTree(plane,notActorTree,actorTree) 46 return {'tree':tree}
47
48 -def genPunishClass(target,feature=None,scale=1.):
49 # Power unchanged 50 unchangedTree = ProbabilityTree(IdentityMatrix(feature)) 51 # Object dynamics if object is stronger 52 objWeaker = ProbabilityTree(IncrementMatrix(feature,keyConstant, 53 -.05*scale)) 54 # Branch on whether I'm object 55 weights = {makeClassKey('self',target): 1.} 56 tree = createBranchTree(KeyedPlane(KeyedVector(weights),0.5), 57 unchangedTree,objWeaker) 58 return {'tree':tree}
59 60 if __name__ == '__main__': 61 tree = genAttackDyn('power','power')['tree'] 62 print tree.simpleText() 63