de.cesr.more.rs.building
Class MGeoRsHomophilyDistanceNetworkService<AgentType extends MoreMilieuAgent,EdgeType extends MRepastEdge<AgentType> & MoreEdge<AgentType>>

java.lang.Object
  extended by de.cesr.more.building.network.MNetworkService<AgentType,EdgeType>
      extended by de.cesr.more.rs.building.MRsNetworkService<AgentType,EdgeType>
          extended by de.cesr.more.rs.building.MGeoRsNetworkService<AgentType,EdgeType>
              extended by de.cesr.more.rs.building.MGeoRsBaselineRadiusNetworkService<AgentType,EdgeType>
                  extended by de.cesr.more.rs.building.MGeoRsHomophilyDistanceNetworkService<AgentType,EdgeType>
Type Parameters:
AgentType - The type of nodes
EdgeType - The type of edges
All Implemented Interfaces:
MoreNetworkBuilder<AgentType,EdgeType>, MoreNetworkService<AgentType,EdgeType>, MoreGeoNetworkBuilder<AgentType,EdgeType>, MoreGeoNetworkService<AgentType,EdgeType>, MoreNetworkEdgeModifier<AgentType,EdgeType>, MoreNetworkModifier<AgentType,EdgeType>, MoreGeoRsNetworkBuilder<AgentType,EdgeType>, MoreGeoRsNetworkService<AgentType,EdgeType>, MoreRsNetworkBuilder<AgentType,EdgeType>, MoreRsNetworkService<AgentType,EdgeType>
Direct Known Subclasses:
MGeoRsIdealHomophilyDistanceNetworkService

public class MGeoRsHomophilyDistanceNetworkService<AgentType extends MoreMilieuAgent,EdgeType extends MRepastEdge<AgentType> & MoreEdge<AgentType>>
extends MGeoRsBaselineRadiusNetworkService<AgentType,EdgeType>

The homophily and distance dependence (HDD) considering network generation consists of two interlinked parts, the establishment of local to medium distance links and the process of global tie generation. The distance dependence is accomplished by defining probabilities for concentric rings around each agent using a ring’s mean radius. This network builder considers baseline homophily [1]. Agents are linked as follows:

  1. For every agent i in the context
    1. Calculate a distance probability compensation factor c_d to normalise probabilities across rings
    2. For each ring r
      1. Request agents in current ring
      2. Shuffle agents
      3. For each requested agent j
        1. Check: i not yet connected with j?
        2. Accept milieu of j with probability of i preference towards milieu of j
        3. Accept j as partner with i's p_distance
        4. Connect!
        5. Establish distant link with p_distant
        6. Determine desired milieu of i
        7. Select random agent from entire population
        8. Check: Not yet connected?
        9. Check: Matches desired milieu?
For details see [2].

Uses MGeographyWrapper.getSurroundingAgents(Object, double, Class) to fetch agents (all agents within the given radius of the given class).

PropertyValue
#VerticesN (via collection of agents)
#Edges:N*K (milieu-specific)


Considered PmParameterDefinitions:
NOTE: Since the power function is invariant against scale/unit we do not need to adapt the meters scale.

[1] McPherson, M.; Smith-Lovin, L. & Cook, J. Birds of a feather: Homophily in social networks Annual Review of Sociology, Annual Reviews, 2001, 27, 415-444
[2] Holzhauer, S.; Krebs, F., Ernst, A. Considering baseline homophily when generating spatial social networks for agent-based modelling. Comput Math Organ Theory, 2012, SI: SNAMAS

Date:
01.08.2012

Field Summary
 
Fields inherited from class de.cesr.more.rs.building.MGeoRsBaselineRadiusNetworkService
agentList, CHECKED_NEIGHBOURS_CAPACITY_FACTOR, name, paraMap, partnerFinder, rand
 
Fields inherited from class de.cesr.more.rs.building.MGeoRsNetworkService
geoFactory, geography, geoRequestClass, pm
 
Fields inherited from class de.cesr.more.rs.building.MRsNetworkService
context
 
Fields inherited from class de.cesr.more.building.network.MNetworkService
edgeFac, edgeModifier
 
Constructor Summary
MGeoRsHomophilyDistanceNetworkService(repast.simphony.space.gis.Geography<Object> geography, MoreEdgeFactory<AgentType,EdgeType> edgeFac, String name)
           
MGeoRsHomophilyDistanceNetworkService(MoreEdgeFactory<AgentType,EdgeType> edgeFac)
           
MGeoRsHomophilyDistanceNetworkService(MoreEdgeFactory<AgentType,EdgeType> edgeFac, String name)
           
 
Method Summary
protected  int connectAgent(MMilieuNetworkParameterMap paraMap, MoreNetwork<AgentType,EdgeType> network, int numNotConnectedPartners, MGeographyWrapper<Object> geoWrapper, AgentType hh)
          TODO integerate
 
Methods inherited from class de.cesr.more.rs.building.MGeoRsBaselineRadiusNetworkService
addAndLinkNode, buildNetwork, checkParameter, createRadiusNetwork, getAgentList, getRandomFromContext, getRequestClass, globalLinking, toString
 
Methods inherited from class de.cesr.more.rs.building.MGeoRsNetworkService
getGeoRequestClass, logEdges, setContext, setGeography, setGeoRequestClass, shuffleCollection
 
Methods inherited from class de.cesr.more.building.network.MNetworkService
addAgents, checkAgentCollection, createEdge, getEdgeFactory, getEdgeModifier, logEdges, removeEdge, removeNode, setEdgeModifier
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface de.cesr.more.manipulate.network.MoreNetworkModifier
removeNode, setEdgeModifier
 
Methods inherited from interface de.cesr.more.manipulate.edge.MoreNetworkEdgeModifier
createEdge, getEdgeFactory, removeEdge
 

Constructor Detail

MGeoRsHomophilyDistanceNetworkService

public MGeoRsHomophilyDistanceNetworkService(MoreEdgeFactory<AgentType,EdgeType> edgeFac)

MGeoRsHomophilyDistanceNetworkService

public MGeoRsHomophilyDistanceNetworkService(MoreEdgeFactory<AgentType,EdgeType> edgeFac,
                                             String name)
Parameters:
edgeFac -
name -

MGeoRsHomophilyDistanceNetworkService

public MGeoRsHomophilyDistanceNetworkService(repast.simphony.space.gis.Geography<Object> geography,
                                             MoreEdgeFactory<AgentType,EdgeType> edgeFac,
                                             String name)
Parameters:
geography -
edgeFac -
name -
Method Detail

connectAgent

protected int connectAgent(MMilieuNetworkParameterMap paraMap,
                           MoreNetwork<AgentType,EdgeType> network,
                           int numNotConnectedPartners,
                           MGeographyWrapper<Object> geoWrapper,
                           AgentType hh)
TODO integerate

Overrides:
connectAgent in class MGeoRsBaselineRadiusNetworkService<AgentType extends MoreMilieuAgent,EdgeType extends MRepastEdge<AgentType> & MoreEdge<AgentType>>
Parameters:
paraMap -
network -
numNotConnectedPartners -
geoWrapper -
hh -
Returns:
the number of _not_ connected partners