BehaviourComposer: ignore everything before this. Begin micro-behaviour Begin description: Create a social network with bi-directional links between all individuals where the number of acquaintances is distributed accordingto a power law.End description Power law social network Begin NetLogo code: substitute-text-area-for community-expression all-individualssubstitute-text-area-for power-expression 1.42 substitute-text-area-for maximum-as-a-fraction .33let entire-community community-expressionlet population count entire-communitylet number-of-links sort-by > power-law-list population power-expression round (population * maximum-as-a-fraction); any fixed order for the source end of linkslet sources sort entire-community; destination is shuffled so the most connected; don't connect to themselves disproportionatelylet destinations shuffle sourceslet source-index 0let destination-index 0let source nobodywhile [source-index < population - 1] [set source item source-index sources let source-links-required item source-index number-of-links - [count my-links] of source ; next search for the other end of the link ; that still requires some links while [source-links-required > 0 and destination-index < population] [let destination-links-required 0 let destination nobody while [(destination-links-required = 0 or source = destination) and destination-index < population] [set destination item destination-index destinations set destination-links-required item (position destination sources) number-of-links - [count my-links] of destination set destination-index destination-index + 1] if destination != nobody and source != destination [ask source [create-link-with destination] set source-links-required source-links-required - 1]] ; ready for the next source set source-index source-index + 1 set destination-index 0 set destinations shuffle destinations] End NetLogo code VariantsYou can edit the text areas to change the average number of acquaintances per person or to change the set of individuals that are to be linked together. Related behavioursThe Constant social network behaviour assigns the same number of acquaintances to each individual. How this worksIt computes a power law distribution of links. First it computes the random distribution of number of links for each member of the population. It then creates links between the agents according to the distribution. This relies upon  power-law-list which computes a random list of number of links with the desired distribution. If you need a particular average number of links per individual then you should experiment with the power parameter to power-law-list.  For example in NetLogo run show mean power-law-list 10000 POWER round MAXIMUM-VALUE where POWER and MAXIMUM-VALUE are given different values.For example a power of 1.42 and maximum value of 33 yields very close to an average value of 4. HistoryPower law social network was completely re-implemented by Ken Kahn on 13 March 2012. BehaviourComposer: ignore everything after this. |