Evolving Strategies for the Prisoner's Dilemma

ie.errity.pd.genetic
Class Spatial

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--javax.swing.JPanel
                          |
                          +--ie.errity.pd.genetic.Spatial
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable

public class Spatial
extends javax.swing.JPanel

Provides the ability to evolve a two dimensional grid of Prisoners. This class allows for spatial interactions, that is, a Prisoner can only interact (play IPD or mate) with the Prisoners in the cells surrounding it. The edges of the grid 'overlap' so each Prisoner has neighbours on all sides. The production of the next generation may be via simple evolution or genetic evolution. This class also allows such a grid to be represented graphically.

See Also:
Serialized Form

Field Summary
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
Spatial()
          Create a new 'Spatial grid' as described above
Spatial(Prisoner[][] Players, Rules r)
          Create a new 'Spatial grid' of Prisoners as described above
 
Method Summary
 void clear()
          Reset the grid
 void Evolve()
          Evolve a new generation using an Evolutionary algorithm
 int[][] getScores()
          Get all player's scores
 void Mate()
          Evolve a new generation using a Genetic algorithm
 void paintComponent(java.awt.Graphics g)
          Responsible for painting the spatial grid to screen when neccesary
 void Play()
          Every player plays the IPD against it's eight neighbours as goverend by the Rules
With a large number of players and/or a large number of iterations of each IPD Game this will be computationally demanding and may take some time to complete (depending on Hardware Specifications)
 void Play(int x, int y)
          Calculate Player (x,y)'s fitness by playing IPD against its neighbours (without speed optimization)
 void refresh(int x, int y)
          Calculate Player (x,y)'s fitness by playing IPD against its neighbours (with speed optimization)
 void setPlayers(Prisoner[][] p)
          Set the players on the grid
 void setRules(Rules r)
          Set the Rules
 void update(int x, int y)
          Calculate the score of player (x,y) and refresh surrounding players to take changes into consideration
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Spatial

public Spatial()
Create a new 'Spatial grid' as described above


Spatial

public Spatial(Prisoner[][] Players,
               Rules r)
Create a new 'Spatial grid' of Prisoners as described above

Parameters:
Players - two dimensional array of Prisoners to inhabit the grid
r - Rules to govern the grid
Method Detail

Play

public void Play()
Every player plays the IPD against it's eight neighbours as goverend by the Rules
With a large number of players and/or a large number of iterations of each IPD Game this will be computationally demanding and may take some time to complete (depending on Hardware Specifications)


Play

public void Play(int x,
                 int y)
Calculate Player (x,y)'s fitness by playing IPD against its neighbours (without speed optimization)

Parameters:
x - x coordinate of the player
y - y coordinate of the player

refresh

public void refresh(int x,
                    int y)
Calculate Player (x,y)'s fitness by playing IPD against its neighbours (with speed optimization)

Parameters:
x - x coordinate of the player
y - y coordinate of the player

update

public void update(int x,
                   int y)
Calculate the score of player (x,y) and refresh surrounding players to take changes into consideration

Parameters:
x - x coordinate of the player
y - y coordinate of the player

getScores

public int[][] getScores()
Get all player's scores

Returns:
an array containing the player's scores

Mate

public void Mate()
Evolve a new generation using a Genetic algorithm


paintComponent

public void paintComponent(java.awt.Graphics g)
Responsible for painting the spatial grid to screen when neccesary

Overrides:
paintComponent in class javax.swing.JComponent

clear

public void clear()
Reset the grid


setRules

public void setRules(Rules r)
Set the Rules

Parameters:
r - new Rules

setPlayers

public void setPlayers(Prisoner[][] p)
Set the players on the grid

Parameters:
p - a two dimensional array of players on the grid

Evolve

public void Evolve()
Evolve a new generation using an Evolutionary algorithm


Andrew Errity [99086921]