uaa.feral.social.leadership
Class AgentTypesModel

java.lang.Object
  extended by uaa.feral.social.leadership.AbstractLeadershipModel
      extended by uaa.feral.social.leadership.AgentTypesModel
All Implemented Interfaces:
GeneralModel, LeadershipModel

public class AgentTypesModel
extends AbstractLeadershipModel

Model evaluates agent responses and satisfaction, then adjusts agent social weights in a network. Concepts are similar to Kitts (2006): Kitts, James A. 2006. Social influence and the emergence of norms amid ties of amity and enmity. Simulation Modelling Practice and Theory 14:407-422. However, differences are found between this and Kitts' model.

Author:

Constructor Summary
AgentTypesModel(Community community)
          Initialize the model and associate it with a community object.
 
Method Summary
 double approvalBias(Person person1, Person person2)
          Delta ABij=(ASij+T(ABij))/2, j!=i
 double approvalByPeers(Person p)
          Ai=(1/N)*Sum(aji*wij), i!=j.
 double approvalSatisfaction(Person person1, Person person2)
          ASij=(1-Di)*Aj+Di*aji*wij.
 double choiceSatisfaction(Person p)
          CSi=(1-Di)*S+Di*ci-ei.
 double complianceBias(Person p)
          Delta CBi=(CSi+T(CBi))/2.
 double[] determineResponse(double[] propensity)
          Adjustment method to modify propensity with values closer to extreme always resulting in a deterministic result, but those close to zero are more random and evaluated against a uniform distribution of probabilities.
 void eigenSpace()
          Function to determine where, based on a PCA of agent weight values, does the agent lie in relation to other agents.
 void individualBenefitShare()
          S=(1/N)*Sum(ci).
 double influenceApproval(Person person1, Person person2)
          IAik=(1/n)*Sum(((wij+2*Ij)*ajk)/3), j!=i, k.
 double influenceCompliance(Person p)
          ICi=(1/n)*Sum(((wij+2*Ij)*cj)/3), j!=i.
 double linearImpact(double value)
          if x>=0 then T=(1+x)/2, else T=(x-1)/2
 double propensityToApprove(Person person1, Person person2)
          PAij=(1-Di)*ABij+Di*IAij.
 double propensityToComply(Person p)
          PCi=(1-di)*CBi+di*ICi, while i!=Alpha.
 void runModel()
          Method executes the model at each time tick, with the method initially called by the community object.
 void setupInitialScheduleInfo()
          Setup model time length.
 void setupModelData(java.lang.String file)
          Method to setup model data from an input xml file.
 void setupRejectAcceptNormativeAffective()
          More setting up of initial model data derived from xml data.
 void updateApprovalState(Person person1, Person person2, double approveP)
          Method to adjust approval state between two agents based on PAij.
 void updateChoicePropensity(Person person1, double propensity)
          Method adjusts choice to agree or not based on PCi.
 double weightChange(Person person1, Person person2, double propensityToChoose)
          Delta wij=1/4(PCi*cj+T(wij)+aji*Di+Sum((PAij*akj)/n)), i!=j,k.
 
Methods inherited from class uaa.feral.social.leadership.AbstractLeadershipModel
CreateLeadershipModel, getScenariodData, setScenarioData
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AgentTypesModel

public AgentTypesModel(Community community)
Initialize the model and associate it with a community object.

Parameters:
community - the community object
Method Detail

runModel

public void runModel()
Method executes the model at each time tick, with the method initially called by the community object.


setupModelData

public void setupModelData(java.lang.String file)
Method to setup model data from an input xml file.

Parameters:
file - the file with xml data

setupInitialScheduleInfo

public void setupInitialScheduleInfo()
Setup model time length.


setupRejectAcceptNormativeAffective

public void setupRejectAcceptNormativeAffective()
More setting up of initial model data derived from xml data.


eigenSpace

public void eigenSpace()
Function to determine where, based on a PCA of agent weight values, does the agent lie in relation to other agents.


individualBenefitShare

public void individualBenefitShare()
S=(1/N)*Sum(ci).


influenceCompliance

public double influenceCompliance(Person p)
ICi=(1/n)*Sum(((wij+2*Ij)*cj)/3), j!=i.

Parameters:
p - a person checking compliance with other agents
Returns:
pressure to comply

influenceApproval

public double influenceApproval(Person person1,
                                Person person2)
IAik=(1/n)*Sum(((wij+2*Ij)*ajk)/3), j!=i, k.

Parameters:
person1 - person evaluating approval of someone
person2 - person who is being evaluated
Returns:
approval of a peer

approvalByPeers

public double approvalByPeers(Person p)
Ai=(1/N)*Sum(aji*wij), i!=j.

Parameters:
p - a person determining approval by peers
Returns:
average of approval by peers

choiceSatisfaction

public double choiceSatisfaction(Person p)
CSi=(1-Di)*S+Di*ci-ei.

Parameters:
p - person evaluating satisfaction with accepting choice
Returns:
how satisfactory the previous choice was

approvalSatisfaction

public double approvalSatisfaction(Person person1,
                                   Person person2)
ASij=(1-Di)*Aj+Di*aji*wij.

Parameters:
person1 -
person2 -
Returns:
satisfaction with approval of the other agent

complianceBias

public double complianceBias(Person p)
Delta CBi=(CSi+T(CBi))/2.

Parameters:
p - a person evaluating their bias to behave
Returns:
the bias to behave

approvalBias

public double approvalBias(Person person1,
                           Person person2)
Delta ABij=(ASij+T(ABij))/2, j!=i

Parameters:
person1 - person evaluating approval
person2 - person being evaluated for approval
Returns:
the approval bias

linearImpact

public double linearImpact(double value)
if x>=0 then T=(1+x)/2, else T=(x-1)/2

Parameters:
value - input to adjust
Returns:
the adjusted linear value

propensityToComply

public double propensityToComply(Person p)
PCi=(1-di)*CBi+di*ICi, while i!=Alpha.

Parameters:
p - a person who is determining their propensity to comply

propensityToApprove

public double propensityToApprove(Person person1,
                                  Person person2)
PAij=(1-Di)*ABij+Di*IAij.

Parameters:
person1 - person making approval choice
person2 - person being evaluated
Returns:
propensity to approve of a second agent (i.e. person2)

weightChange

public double weightChange(Person person1,
                           Person person2,
                           double propensityToChoose)
Delta wij=1/4(PCi*cj+T(wij)+aji*Di+Sum((PAij*akj)/n)), i!=j,k.

Parameters:
person1 - person evaluating weight
person2 - person being evaluated by person 1
Returns:
a weight change to the relationship edge

updateApprovalState

public void updateApprovalState(Person person1,
                                Person person2,
                                double approveP)
Method to adjust approval state between two agents based on PAij.

Parameters:
person1 - the person evaluating
person2 - the person evaluated
approveP - the approval value

determineResponse

public double[] determineResponse(double[] propensity)
Adjustment method to modify propensity with values closer to extreme always resulting in a deterministic result, but those close to zero are more random and evaluated against a uniform distribution of probabilities. The logic is if(propensity>.2) then 1, if (propensity<-.2) then -1; if (propensity
Parameters:
propensity - the propensity array to modify
Returns:
an array with propensity

updateChoicePropensity

public void updateChoicePropensity(Person person1,
                                   double propensity)
Method adjusts choice to agree or not based on PCi.

Parameters:
person1 - the person choosing
propensity - the propensity value