Preferential Attachment
Model was written in NetLogo 5.0.4
•
Viewed 853 times
•
Downloaded 102 times
•
Run 2 times
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
Info tab cannot be displayed because of an encoding error
Comments and Questions
Please start the discussion about this model!
(You'll first need to log in.)
Click to Run Model
;;;;;;;;;;;;;;;;;;;;;;;; ;;; Setup Procedures ;;; ;;;;;;;;;;;;;;;;;;;;;;;; to setup clear-all set-default-shape turtles "circle" ;; make the initial network of two turtles and an edge make-node nobody ;; first node, unattached make-node turtle 0 ;; second node, attached to first node reset-ticks end ;;;;;;;;;;;;;;;;;;;;;;; ;;; Main Procedures ;;; ;;;;;;;;;;;;;;;;;;;;;;; to go ;; new edge is green, old edges are gray ask links [ set color gray ] make-node find-partner ;; find partner & use it as attachment ;; point for new node tick if layout? [ layout ] end ;; used for creating a new node to make-node [old-node] crt 1 [ set color red if old-node != nobody [ create-link-with old-node [ set color green ] ;; position the new node near its partner move-to old-node fd 8 ] ] end ;; This code is borrowed from Lottery Example (in the Code Examples ;; section of the Models Library). ;; The idea behind the code is a bit tricky to understand. ;; Basically we take the sum of the degrees (number of connections) ;; of the turtles, and that's how many "tickets" we have in our lottery. ;; Then we pick a random "ticket" (a random number). Then we step ;; through the turtles to figure out which node holds the winning ticket. to-report find-partner let total random-float sum [count link-neighbors] of turtles let partner nobody ask turtles [ let nc count link-neighbors ;; if there's no winner yet... if partner = nobody [ ifelse nc > total [ set partner self ] [ set total total - nc ] ] ] report partner end ;;;;;;;;;;;;;; ;;; Layout ;;; ;;;;;;;;;;;;;; ;; resize-nodes, change back and forth from size based on degree to a size of 1 to resize-nodes ifelse all? turtles [size <= 1] [ ;; a node is a circle with diameter determined by ;; the SIZE variable; using SQRT makes the circle's ;; area proportional to its degree ask turtles [ set size sqrt count link-neighbors ] ] [ ask turtles [ set size 1 ] ] end to layout ;; the number 3 here is arbitrary; more repetitions slows down the ;; model, but too few gives poor layouts repeat 3 [ ;; the more turtles we have to fit into the same amount of space, ;; the smaller the inputs to layout-spring we'll need to use let factor sqrt count turtles ;; numbers here are arbitrarily chosen for pleasing appearance layout-spring turtles links (1 / factor) (7 / factor) (1 / factor) display ;; for smooth animation ] ;; don't bump the edges of the world let x-offset max [xcor] of turtles + min [xcor] of turtles let y-offset max [ycor] of turtles + min [ycor] of turtles ;; big jumps look funny, so only adjust a little each time set x-offset limit-magnitude x-offset 0.1 set y-offset limit-magnitude y-offset 0.1 ask turtles [ setxy (xcor - x-offset / 2) (ycor - y-offset / 2) ] end to-report limit-magnitude [number limit] if number > limit [ report limit ] if number < (- limit) [ report (- limit) ] report number end ; Copyright 2005 Uri Wilensky. ; See Info tab for full copyright and license.
There are 11 versions of this model.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Preferential Attachment.png | preview | Preview for 'Preferential Attachment' | over 11 years ago, by Uri Wilensky | Download |
This model does not have any ancestors.
This model does not have any descendants.