Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Christmas gifts, evolution and Python

Christmas gifts, evolution and Python

A talk given at PyCon Namibia (http://na.pycon.org/) about the Axelrod library (https://github.com/Axelrod-Python/Axelrod). The talk is based on this blog post about christmas gifts: http://vknight.org/unpeudemath/code/2015/12/15/The-Prisoners-Dilemma-of-Christmas-Gifts/

Avatar for Vince Knight

Vince Knight

January 28, 2016
Tweet

More Decks by Vince Knight

Other Decks in Programming

Transcript

  1. R, R S, T T, S P, P Alex's choice:

    C or D Camille's choice: C or D Both Cooperate (Don't give gifts) Camille Defects (Alex gets a gift) Alex Defects (Camille gets a gift) Both Defect (Give gifts) T>R>P>S
  2. 3, 3 0, 5 5, 0 1, 1 Alex's choice:

    C or D Camille's choice: C or D Both Cooperate (Don't give gifts) Camille Defects (Alex gets a gift) Alex Defects (Camille gets a gift) Both Defect (Give gifts) 5>3>1>0
  3. Alternator: give gifts one year and not give gifts the

    next. TitForTat: do whatever the other does the previous year.
  4. > > > i m p o r t a

    x e l r o d a s a x l > > > a l e x , c a m i l l e = a x l . A l t e r n a t o r ( ) , a x l . T i t F o r T a t ( ) > > > m a t c h = a x l . M a t c h ( [ a l e x , c a m i l l e ] , 1 0 ) > > > _ = m a t c h . p l a y ( ) > > > p r i n t ( m a t c h . s p a r k l i n e s ( c _ s y m b o l = ' ' , d _ s y m b o l = ' ' ) )
  5. > > > f a m i l y =

    [ a x l . C o o p e r a t o r ( ) , . . . a x l . D e f e c t o r ( ) , . . . a x l . A l t e r n a t o r ( ) , . . . a x l . T i t F o r T a t ( ) , . . . a x l . T w o T i t s F o r T a t ( ) , . . . a x l . G r u d g e r ( ) ] > > > c h r i s t m a s = a x l . T o u r n a m e n t ( f a m i l y , t u r n s = 5 0 , r e p e t i t i o n s = 1 ) > > > r e s u l t s = c h r i s t m a s . p l a y ( ) > > > r e s u l t s . s c o r e s [ [ 5 2 5 ] , [ 5 6 2 ] , [ 4 1 7 ] , [ 6 2 2 ] , [ 6 4 6 ] , [ 6 4 6 ] ]
  6. > > > e v o = a x l

    . E c o s y s t e m ( r e s u l t s ) > > > e v o . r e p r o d u c e ( 1 0 0 ) > > > p l o t = a x l . P l o t ( r e s u l t s ) > > > p l o t . s t a c k p l o t ( e v o )
  7. > > > d e f c h e c

    k _ i f _ e n d _ p o p _ c o o p e r a t e s ( r = 3 , p = 1 , s = 0 , t = 5 , . . . d i g i t s = 5 , f a m i l y = f a m i l y , . . . t u r n s = 1 0 0 0 0 ) : . . . " " " R e t u r n s a b o o l e a n a n d t h e l a s t p o p u l a t i o n v e c t o r " " " . . . g a m e = a x l . G a m e ( r = r , p = p , s = s , t = t ) . . . c h r i s t m a s = a x l . T o u r n a m e n t ( f a m i l y , t u r n s = 5 0 , . . . r e p e t i t i o n s = 1 , g a m e = g a m e ) . . . r e s u l t s = c h r i s t m a s . p l a y ( ) . . . e v o = a x l . E c o s y s t e m ( r e s u l t s ) . . . e v o . r e p r o d u c e ( t u r n s ) . . . l a s t _ p o p = [ r o u n d ( p o p , d i g i t s ) f o r p o p i n e v o . p o p u l a t i o n _ s i z e s [ - 1 ] ] . . . r e t u r n l a s t _ p o p [ 1 ] = = l a s t _ p o p [ 2 ] = = 0 , l a s t _ p o p
  8. TLDR: THE WORLD WE SEE IS PROBABLY BECAUSE IT FEELS

    REALLY GOOD TO GIVE. vknight.org/unpeudemath/
  9. t o u r n a m e n t

    . p y p l a y e r . p y s t r a t e g i e s / C o o p e r a t o r . p y D e f e c t o r . p y T i t F o r T a t . p y . . . . . . t e s t s / u n i t / T e s t C o o p . . . T e s t D e f . . . T e s t T i t F o r . . . . . . travis.ci d o c / readthedocs.org
  10. c l a s s T i t F o

    r T a t ( P l a y e r ) : " " " A p l a y e r s t a r t s b y c o o p e r a t i n g a n d t h e n m i m i c s p r e v i o u s m o v e b y o p p o n e n t . " n a m e = ' T i t F o r T a t ' c l a s s i f i e r = { ' m e m o r y _ d e p t h ' : 1 , # F o u r - V e c t o r = ( 1 . , 0 . , 1 . , 0 . ) ' s t o c h a s t i c ' : F a l s e , ' i n s p e c t s _ s o u r c e ' : F a l s e , ' m a n i p u l a t e s _ s o u r c e ' : F a l s e , ' m a n i p u l a t e s _ s t a t e ' : F a l s e } @ s t a t i c m e t h o d d e f s t r a t e g y ( o p p o n e n t ) : r e t u r n ' D ' i f o p p o n e n t . h i s t o r y [ - 1 : ] = = [ ' D ' ] e l s e ' C '
  11. c l a s s T e s t T

    i t F o r T a t ( T e s t P l a y e r ) : n a m e = " T i t F o r T a t " p l a y e r = a x e l r o d . T i t F o r T a t e x p e c t e d _ c l a s s i f i e r = { ' m e m o r y _ d e p t h ' : 1 , ' s t o c h a s t i c ' : F a l s e , ' i n s p e c t s _ s o u r c e ' : F a l s e , ' m a n i p u l a t e s _ s o u r c e ' : F a l s e , ' m a n i p u l a t e s _ s t a t e ' : F a l s e } d e f t e s t _ s t r a t e g y ( s e l f ) : " " " S t a r t s b y c o o p e r a t i n g . " " " s e l f . f i r s t _ p l a y _ t e s t ( C ) d e f t e s t _ e f f e c t _ o f _ s t r a t e g y ( s e l f ) : " " " R e p e a t s l a s t a c t i o n o f o p p o n e n t h i s t o r y . " " "
  12. p i p i n s t a l l

    a x e l r o d { , }/Axelrod-Python/Axelrod github.com gitter.im Blog posts by TC demo.ipynb