Home Download Help Resources Extensions FAQ NetLogo Publications Contact Us Donate Models: Library Community Modeling Commons User Manuals: Web Printable Chinese Czech Farsi / Persian Japanese Spanish

NetLogo Models Library: 
Note: If you download the NetLogo application, every model in the Models Library is included. 
This model demonstrates various features of the Netlogo NW extension: it allows you to generate various kinds of networks, lay them out on screen, and get information about them.
The SETUP/CLEAR button initializes the model and clears any existing networks.
The LINKSTOUSE chooser allow you to specify whether you want to use directed or undirected links: all the generators use the kind of links selected in the chooser. You can generate different networks with different kinds of links without clearing everything in between.
The value of LINKSTOUSE is used by the different clusterers and measures as well. Be careful to use the right value for the network you are interested in. For example, if you ask for betweenness centrality with "directed links" selected in the chooser, but the network on the screen is undirected, the betweenness centrality values will all be zero, because the algorithm only takes directed links into account.
There is another chooser called LAYOUT. NetLogo currently offers four different kinds of layouts (this is not new in the NW extension  they were all available before):
Clicking the LAYOUT forever button will ensure that the chosen layout is applied continuously. This is especially useful in the case of the spring layout. For other layouts, you can also use the LAYOUT ONCE button.
The first thing that you will see in the Generators section of the model is a slider labeled NBNODES. It allows you to specify the number of nodes you want to have in your network. The first six generator buttons (PREFERENTIAL ATTACHMENT, RING, STAR, WHEEL, RANDOM, and SMALL WORLD) will take the value of that slider into account.
By default, using one of the generators will clear the current network first. You can disable this using the CLEARBEFOREGENERATING? switch. Note that at any time, you can press the SETUP/CLEAR button to erase everything and start over.
Here is a description of each of generator.
PREFERENTIAL ATTACHMENT
Generates a new network using the Barabási–Albert algorithm. This network will have the property of being "scale free": the distribution of degrees (i.e. the number of links for each turtle) should follow a power law.
Turtles are added, one by one, each forming one link to a previously added turtle, until nbnodes is reached. The more links a turtle already has, the greater the probability that new turtles form links with it when they are added.
RING
Generates a ring network of NBNODES turtles, in which each turtle is connected to exactly two other turtles.
STAR
Generates a star network in which there is one central turtle and every other turtle is connected only to this central node. The number of turtles can be as low as one, but it won't look much like a star.
WHEEL
Generates a wheel network, which is basically a ring network with an additional "central" turtle that is connected to every other turtle. The number of nodes must be at least four.
On the right side of the WHEEL button, you will see a chooser allowing you the select either "inward" or "outward". This will allow to specify if the "spokes" of the wheel point toward the central turtle (inward) or away from it (outward). This is, of course, meaningful only in the case of a directed network.
RANDOM
Generates a new random network of NBNODES turtles in which each one has a connection probability (between 0 and 1) of being connected to each other turtles (this is specified through the CONNECTIONPROB slider). The algorithm uses the Erdős–Rényi model.
SMALL WORLD
Generates a new WattsStrogatz smallworld network. The algorithm begins by creating a ring of nodes, where each node is connected to NEIGHBORHOODSIZE nodes on either side. Then, each link is rewired with probability REWIREPROB.
LATTICE 2D
Generates a new 2D lattice network (basically, a grid) of NBROWS rows and NBCOLS columns. The grid will wrap around itself if the WRAP switch is set to "on".
KLEINBERG
Generates a new smallworld network using the Kleinberg Model.
The generator uses the same sliders and switch as the lattice 2D generator, namely, NBROWS, NOCOLS and WRAP. The algorithm proceeds by generating a lattice of the given number of rows and columns (the lattice will wrap around itself if WRAP is "on"). The "small world effect" is created by adding additional links between the nodes in the lattice. The higher the CLUSTERINGEXPONENT, the more the algorithm will favor already closeby nodes when adding new links. A clustering exponent of 2.0
is typically used.
Now that you have generated one or more networks, there are things that you might want to know about them.
WEAK COMPONENT CLUSTERS
This button will assign a different color to all the "weakly" connected components in the current network. A weakly connected component is simply a group of nodes where there is a path from each node to every other node. A "strongly" connected component would be one where there is a directed path from each node to every other. The extension does not support the identification of strongly connected components at the moment.
DETECT COMMUNITIES
Detects community structure present in the network. It does this by maximizing modularity using the Louvain method.
HIGHLIGHT BICOMPONENTS
Clicking on this button will put you in a mode where you use your mouse to highlight the different bicomponent clusters in the current network. A bicomponent (also known as a maximal biconnected subgraph) is a part of a network that cannot be disconnected by removing only one node (i.e. you need to remove at least two to disconnect it).
Note that one turtle can be a member of more than one bicomponent at once. If it is the case, all the bicomponents that the target turtle is part of will be highlighted when you move your mouse pointer near it, but they will be of different color.
HIGHLIGHT MAXIMAL CLIQUES
The general usage for this is the same as for the highlight bicomponents mode. Note you should not try to use both highlight modes at the same time.
A clique is a subset of a network in which every node has a direct link to every other node. A maximal clique is a clique that is not, itself, contained in a bigger clique.
BIGGEST MAXIMAL CLIQUES
This simply highlights the biggest of all the maximal cliques in the networks. If there are multiple cliques that are equally big (as is often the case), it will highlight them with different colors.
Besides all the clusterers and the clique finder, you can also calculate some centrality measures on your networks. All the centrality measures will label the nodes will the result of the calculation and adjust their size and color to reflect that result.
BETWEENNESS
To calculate the betweenness centrality of a turtle, you take every other possible pairs of turtles and, for each pair, you calculate the proportion of shortest paths between members of the pair that passes through the current turtle. The betweenness centrality of a turtle is the sum of these.
EIGENVECTOR
The Eigenvector centrality of a node can be thought of as the proportion of its time that an agent forever "walking" at random on the network would spend on this node. In practice, turtles that are connected to a lot of other turtles that are themselves wellconnected (and so) get a higher Eigenvector centrality score.
Eigenvector centrality is only defined for connected networks, and will report false
for disconnected graphs.
CLOSENESS
The closeness centrality of a turtle is defined as the inverse of the sum of it's distances to all other turtles.
Note that this primitive reports the intracomponent closeness of a turtle, that is, it takes into account only the distances to the turtles that are part of the same component as the current turtle, since distance to turtles in other components is undefined. The closeness centrality of an isolated turtle is defined to be zero.
LOAD / SAVE MATRIX
Finally, you can save and load your networks. This can be done through the use of simple text files containing an adjacency matrix.
The model currently always save the network to your NetLogo directory in a file called matrix.txt
when you click the SAVE MATRIX button. When you click the LOAD MATRIX button, it reads from the same location and creates a new network from the file.
LOAD / SAVE GRAPHML
You can also save and load GraphML files. Please see the extension's documentation for more detail on handling GraphML files. The demo simply saves the current network to (and can load from) the file demo.graphml
in your default directory.
When you generate preferential attachment networks, notice the distribution of node degrees in the histogram. What does it look like? What happens if you generate a network with more nodes, or multiple preferential attachment networks?
When you generate a small world network, what is the MEAN PATH LENGTH value that you can see on the monitor? How does it compare the a random network with the same number of nodes?
In general, different layouts work best for different kind of graphs. Can you try every combination of graph/layout? Which layout do you prefer for each kind of graph? Why?
Try the spring layout with a lattice 2D network, with WRAP set to off. How does it look? Now try it with WRAP set to on. Can you explain the difference?
Generate a small world network with a low clustering exponent (e.g., 0.1). What is the size of the biggest maximal clique? Now try it with a big exponent (e.g. 10.0). What is the size? Try it multiple times. Do you see a pattern? What if you crank up the number of rows and columns?
The current version of the demo does not take link weights into account. You can add a "weight" variable to each link breed. Can you add a button assigning random weights to the links? Can you make it so that link thickness reflects the "weight" of the link? Look at the extensions documentation for primitive that take weights into account. Can you integrate those in the demo?
This model demonstrates the nw
extension primitives.
But aside from that, notice the interesting use it makes of tasks for the centrality buttons. We have only one centrality
procedure in the code that does all the hard work, and the other procedures call it with a measure
reporter task as a parameter, that the centrality
primitive then runs with runresult
. This removes a lot of code duplication.
Another nice tidbit is how the foreach
command is used in the colorclusters
primitive. Notice how it loops over both the clusters
list and the colors
and then uses the cluster
and clustercolor
arguments to access members of each pair of cluster/color.
A couple of models already in the model library, namely the "Giant Component" model and the "Small World" model could be build much more easily by using the primitives in the network extension. Such versions of these two models are included in the "demo" folder of the extension, but trying to make the modifications yourself would be an excellent exercise.
(back to the NetLogo Models Library)