| package edu.brook; |
| |
| import org.eclipse.amp.escape.runtime.extension.IAgentChild; |
| |
| /** |
| * <!-- begin-user-doc --> |
| * Player Java Implementation. |
| * |
| * Generated by AMF for model: DemographicPrisoner_sDilemma.metaabm in project: org.eclipse.amp.amf.examples.escape |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public class Player { |
| |
| /** |
| * <!-- begin-user-doc --> |
| * |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| private boolean cooperate = false; |
| /** |
| * <!-- begin-user-doc --> |
| * |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| private int age = 0; |
| /** |
| * <!-- begin-user-doc --> |
| * |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| private int wealth = 0; |
| |
| /** |
| * <!-- begin-user-doc --> |
| * |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| private List<IAgentChild> children; |
| |
| /** |
| * <!-- begin-user-doc --> |
| * |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public List<IAgentChild> getChildren() { |
| return children; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * Constructs a new Player. |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public Player() { |
| |
| children = new ArrayList<IAgentChild>(); |
| |
| } |
| //todo, make this a useful value for evaluating compatibility of different versions of generated classes |
| |
| /** |
| * <!-- begin-user-doc --> |
| * |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| private static final long serialVersionUID = 89989998L; |
| |
| /** |
| * <!-- begin-user-doc --> |
| * |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| private static long nextUniqueID; |
| |
| /** |
| * <!-- begin-user-doc --> |
| * |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| private long uniqueID; |
| |
| /** |
| * <!-- begin-user-doc --> |
| * |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public long getUID() { |
| if (uniqueID == 0) { |
| uniqueID = nextUniqueID++; |
| } |
| return uniqueID; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * Clones the agent, ensuring that a unique id is assigned. |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public Object clone() { |
| try { |
| Player clone = (Player) super.clone(); |
| clone.uniqueID = 0; |
| return clone; |
| } catch (Exception e) { |
| throw new RuntimeException("Unexpected cloning exception: " + e); |
| } |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * Initialize Initialization. Executed once at the beginning of each model run. |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public void intializeNonFramework() { |
| setWealth(getDemographicPrisoner_sDilemma().getInitialWealth()); |
| int randomToMaxAge = randomToLimit(getDemographicPrisoner_sDilemma() |
| .getMaximumAge()); |
| boolean randomStrategy = true; |
| setAge(randomToMaxAge); |
| setCooperate(randomStrategy); |
| } |
| /** |
| * <!-- begin-user-doc --> |
| * Move To Random Location Initialization. Executed once at the beginning of each model run. |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public void moveToRandomLocation() { |
| /* |
| Spatial Functions: |
| [available] |
| */ |
| PlayCell randomCell2 = new PlayCell(); |
| } |
| /** |
| * <!-- begin-user-doc --> |
| * Random Walk Rule. Executed every period. |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public void randomWalk() { |
| /* |
| Spatial Functions: |
| [available, neighbor] |
| */ |
| PlayCell randomNeighbor = new PlayCell(); |
| } |
| /** |
| * <!-- begin-user-doc --> |
| * Play Neighbor Rule. Executed every period. |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public void playNeighbor() { |
| /* |
| Spatial Functions: |
| [neighbor] |
| */ |
| Player otherPlayer = new Player(); |
| if ((otherPlayer.isCooperate() && isCooperate())) { |
| int valueWealthAddPayoffCooperateCooperate = getWealth() |
| + getDemographicPrisoner_sDilemma().getPayoffCC(); |
| int valueWealthAddPayoffCooperateCooperateCopy = otherPlayer |
| .getWealth() |
| + otherPlayer.getDemographicPrisoner_sDilemma() |
| .getPayoffCC(); |
| setWealth(valueWealthAddPayoffCooperateCooperate); |
| otherPlayer.setWealth(valueWealthAddPayoffCooperateCooperateCopy); |
| } |
| if ((otherPlayer.isCooperate() && !isCooperate())) { |
| int valueWealthAddPayoffDefectCooperate = getWealth() |
| + getDemographicPrisoner_sDilemma().getPayoffDC(); |
| int valueWealthAddPayoffCooperateDefectCopy = otherPlayer |
| .getWealth() |
| + otherPlayer.getDemographicPrisoner_sDilemma() |
| .getPayoffCD(); |
| setWealth(valueWealthAddPayoffDefectCooperate); |
| otherPlayer.setWealth(valueWealthAddPayoffCooperateDefectCopy); |
| } |
| if ((!otherPlayer.isCooperate() && isCooperate())) { |
| int valueWealthAddPayoffCooperateDefect = getWealth() |
| + getDemographicPrisoner_sDilemma().getPayoffCD(); |
| int valueWealthAddPayoffDefectCooperateCopy = otherPlayer |
| .getWealth() |
| + otherPlayer.getDemographicPrisoner_sDilemma() |
| .getPayoffDC(); |
| setWealth(valueWealthAddPayoffCooperateDefect); |
| otherPlayer.setWealth(valueWealthAddPayoffDefectCooperateCopy); |
| } |
| if ((!isCooperate() && !otherPlayer.isCooperate())) { |
| int valueWealthAddPayoffDefectDefect = getWealth() |
| + getDemographicPrisoner_sDilemma().getPayoffDD(); |
| int valueWealthAddPayoffDefectDefectCopy = otherPlayer.getWealth() |
| + otherPlayer.getDemographicPrisoner_sDilemma() |
| .getPayoffDD(); |
| setWealth(valueWealthAddPayoffDefectDefect); |
| otherPlayer.setWealth(valueWealthAddPayoffDefectDefectCopy); |
| } |
| } |
| /** |
| * <!-- begin-user-doc --> |
| * Update Age Rule. Executed every period. |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public void updateAge() { |
| int incrementAge = getAge() + 1; |
| setAge(incrementAge); |
| } |
| /** |
| * <!-- begin-user-doc --> |
| * Fission Rule Rule. Executed every period. |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public void fissionRule() { |
| if (getWealth() >= getDemographicPrisoner_sDilemma().getFissionWealth()) { /* |
| Spatial Functions: |
| [neighbor, available] |
| */ |
| PlayCell birthLocation = new PlayCell(); |
| |
| createAgents.setWealth(getDemographicPrisoner_sDilemma() |
| .getInheiritedWealth()); |
| double valueRandomUnit = randomUnit(); |
| int wealthChildWealth = getWealth() |
| - createAgents.getDemographicPrisoner_sDilemma() |
| .getInheiritedWealth(); |
| if (valueRandomUnit < createAgents |
| .getDemographicPrisoner_sDilemma().getMutationRate()) { |
| boolean valueRandomBoolean = true; |
| createAgents.setCooperate(valueRandomBoolean); |
| } |
| if (!(valueRandomUnit < createAgents |
| .getDemographicPrisoner_sDilemma().getMutationRate())) { |
| createAgents.setCooperate(isCooperate()); |
| } |
| setWealth(wealthChildWealth); |
| } |
| } |
| /** |
| * <!-- begin-user-doc --> |
| * Die At Age Rule. Executed every period. |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public void dieAtAge() { |
| if (getAge() > getDemographicPrisoner_sDilemma().getDeathAge()) { |
| } |
| } |
| /** |
| * <!-- begin-user-doc --> |
| * Die At Wealth 0 Rule. Executed every period. |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public void dieAtWealth0() { |
| if (getWealth() < 0) { |
| } |
| } |
| /** |
| * <!-- begin-user-doc --> |
| * Gets the Cooperate property for Player. |
| * @return |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public boolean isCooperate() { |
| return cooperate; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * Sets the Cooperate property for Player. |
| * |
| * @param _cooperate the new Cooperate value |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public void setCooperate(boolean _cooperate) { |
| cooperate = _cooperate; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * Gets the Age property for Player. |
| * @return |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public int getAge() { |
| return age; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * Sets the Age property for Player. |
| * |
| * @param _age the new Age value |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public void setAge(int _age) { |
| age = _age; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * Gets the Wealth property for Player. |
| * @return |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public int getWealth() { |
| return wealth; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * Sets the Wealth property for Player. |
| * |
| * @param _wealth the new Wealth value |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public void setWealth(int _wealth) { |
| wealth = _wealth; |
| } |
| |
| } |