<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.santafe.edu/index.php?action=history&amp;feed=atom&amp;title=Network.java.wp</id>
	<title>Network.java.wp - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.santafe.edu/index.php?action=history&amp;feed=atom&amp;title=Network.java.wp"/>
	<link rel="alternate" type="text/html" href="https://wiki.santafe.edu/index.php?title=Network.java.wp&amp;action=history"/>
	<updated>2026-04-27T20:56:40Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://wiki.santafe.edu/index.php?title=Network.java.wp&amp;diff=3577&amp;oldid=prev</id>
		<title>Seoc at 23:22, 17 June 2006</title>
		<link rel="alternate" type="text/html" href="https://wiki.santafe.edu/index.php?title=Network.java.wp&amp;diff=3577&amp;oldid=prev"/>
		<updated>2006-06-17T23:22:38Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 23:22, 17 June 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[WikiPeerCode]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[WikiPeerCode]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;/*&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/*&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  * Network.java&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  * Network.java&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  *&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  *&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  * Created on January 18, 2005, 4:09 PM&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  * Created on January 18, 2005, 4:09 PM&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  * Modified June &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;14&lt;/del&gt;, 2006&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  * Modified June &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;17&lt;/ins&gt;, 2006 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;17:20, by Jack&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  *  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  *  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  * This class generates a network, runs some&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  * This class generates a network, runs some&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l195&quot;&gt;Line 195:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 194:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		    do{&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		    do{&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			randomi = model.getUniformIntFromTo(0, networkSize - 1);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			randomi = model.getUniformIntFromTo(0, networkSize - 1);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			System.out.printf(&quot;j = %d, randomi = %d, A[i][j] = %d\n&quot;,&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;if(model.rDebug &amp;gt; 2)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			    &lt;/ins&gt;System.out.printf(&quot;j = %d, randomi = %d, A[i][j] = %d\n&quot;,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;					  j,randomi, adjacencyMatrix[randomi][j]);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;					  j,randomi, adjacencyMatrix[randomi][j]);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		    } while (randomi == j || adjacencyMatrix[randomi][j] ==1);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		    } while (randomi == j || adjacencyMatrix[randomi][j] ==1);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Seoc</name></author>
	</entry>
	<entry>
		<id>https://wiki.santafe.edu/index.php?title=Network.java.wp&amp;diff=3430&amp;oldid=prev</id>
		<title>Seoc at 22:43, 15 June 2006</title>
		<link rel="alternate" type="text/html" href="https://wiki.santafe.edu/index.php?title=Network.java.wp&amp;diff=3430&amp;oldid=prev"/>
		<updated>2006-06-15T22:43:22Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:43, 15 June 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[WikiPeerCode]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;pre&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/*&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/*&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  * Network.java&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  * Network.java&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l713&quot;&gt;Line 713:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 715:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     public static void setModel(RepMod m){model = m;}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     public static void setModel(RepMod m){model = m;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/pre&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Seoc</name></author>
	</entry>
	<entry>
		<id>https://wiki.santafe.edu/index.php?title=Network.java.wp&amp;diff=3423&amp;oldid=prev</id>
		<title>Seoc at 22:38, 15 June 2006</title>
		<link rel="alternate" type="text/html" href="https://wiki.santafe.edu/index.php?title=Network.java.wp&amp;diff=3423&amp;oldid=prev"/>
		<updated>2006-06-15T22:38:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/*&lt;br /&gt;
 * Network.java&lt;br /&gt;
 *&lt;br /&gt;
 * Created on January 18, 2005, 4:09 PM&lt;br /&gt;
 * Modified June 14, 2006&lt;br /&gt;
 * &lt;br /&gt;
 * This class generates a network, runs some&lt;br /&gt;
 * net statistics, and writes it to a pajek-formatted file&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
package RepMod;&lt;br /&gt;
//import java.util.Random;&lt;br /&gt;
import uchicago.src.sim.network.NetworkFactory;&lt;br /&gt;
import uchicago.src.sim.network.EdgeFactory;&lt;br /&gt;
import java.util.Formatter;&lt;br /&gt;
import uchicago.src.sim.util.Random;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import uchicago.src.sim.gui.OvalNetworkItem;&lt;br /&gt;
import rlriolo.ioutils.*;&lt;br /&gt;
import java.io.PrintWriter;&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
import uchicago.src.sim.util.*;&lt;br /&gt;
import java.util.Vector;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 *&lt;br /&gt;
 * @author Jack Waddell&lt;br /&gt;
 */&lt;br /&gt;
public class Network {&lt;br /&gt;
    &lt;br /&gt;
    //*******************************************************&lt;br /&gt;
    // static parameters&lt;br /&gt;
&lt;br /&gt;
    // the main model&lt;br /&gt;
    public static RepMod model;&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    //*******************************************************&lt;br /&gt;
    // Instance parameters&lt;br /&gt;
    public int[][]     adjacencyMatrix;  // Yes, it is Aij = 1 if j -&amp;gt; i.&lt;br /&gt;
    public int         networkSize;      // The number of agents&lt;br /&gt;
    public int         connectRadius;    // The radius for grid or SWN inits&lt;br /&gt;
    public double      reconnectProb;    // The prob or (re)wiring in (SWN) or random net&lt;br /&gt;
    // a pointer to the agent list,&lt;br /&gt;
    public ArrayList&amp;lt;CustomNode&amp;gt; agentList = new ArrayList&amp;lt;CustomNode&amp;gt;();&lt;br /&gt;
    &lt;br /&gt;
    // These are for writing a pajek-formatted file&lt;br /&gt;
    protected String		pajekFileName = &amp;quot;pajek&amp;quot;;&lt;br /&gt;
    protected String 		outputDirName = &amp;quot;./&amp;quot;;&lt;br /&gt;
    protected PrintWriter	pajekFile, plaintextPajekFile;&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
    ////////////////////////////////////////////////////////////////////////&lt;br /&gt;
    // Constructor&lt;br /&gt;
    public Network(int networkSize, int connectRadius, double reconnectProb){&lt;br /&gt;
	this.networkSize = networkSize;&lt;br /&gt;
	this.connectRadius = connectRadius;&lt;br /&gt;
	this.reconnectProb = reconnectProb;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    ///////////////////////////////////////////////////////////////////////&lt;br /&gt;
    // buildAdjacencyMatrix&lt;br /&gt;
    // Inputs: int netType, selects which specific type of matrix to form&lt;br /&gt;
    // Outputs: int[][], the adjacency matrix&lt;br /&gt;
    public int[][] buildAdjacencyMatrix(int netType){&lt;br /&gt;
	switch(netType){&lt;br /&gt;
	case 0 : return buildAdjacencyMatrix2DWS();&lt;br /&gt;
	case 1 : return buildAdjacencyMatrixWS();&lt;br /&gt;
	case 2 : return buildAdjacencyMatrixRand();&lt;br /&gt;
	default: return buildAdjacencyMatrix2DWS();&lt;br /&gt;
	}&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    ///////////////////////////////////////////////////////////////////////////&lt;br /&gt;
    //&lt;br /&gt;
    // buildAdjacencyMatrixWS&lt;br /&gt;
    // Develops an adjacency matrix for a Watts-Strogatz Small World &lt;br /&gt;
    // network based on the given parameters.  Note that this &lt;br /&gt;
    // implementation uses a disconnecting rewire, so that it is&lt;br /&gt;
    // possible to disconnect groups in the network.  It is also &lt;br /&gt;
    // possible to have less than an average degree of 2x connectRadius, &lt;br /&gt;
    // since a connection can be &amp;quot;overwritten&amp;quot; during the rewire.&lt;br /&gt;
    //&lt;br /&gt;
    //  Inputs:  double reconnectProb:  each neighbor connection &lt;br /&gt;
    // has a probability p of being disconnected from the outgoing side (i) &lt;br /&gt;
    // and reattached to a random node (including the one from which it &lt;br /&gt;
    // was just disconnected, and any other nodes that j goes to.)]&lt;br /&gt;
    // connectRadius: the number of neighbors to either side of each node.  &lt;br /&gt;
    // Note that this often leads to cycles.&lt;br /&gt;
    &lt;br /&gt;
    public int[][] buildAdjacencyMatrixWS(){&lt;br /&gt;
        &lt;br /&gt;
        adjacencyMatrix = new int[networkSize][networkSize];&lt;br /&gt;
	&lt;br /&gt;
	// Make the regular gride&lt;br /&gt;
        for(int i = 0; i &amp;lt; networkSize; i++){&lt;br /&gt;
            for(int j = i; j&amp;lt; networkSize; j++){&lt;br /&gt;
                if( (j &amp;lt;= (i + connectRadius) ) &amp;amp;&amp;amp; (i!=j) ){&lt;br /&gt;
                    adjacencyMatrix[i][j] = 1;&lt;br /&gt;
                    adjacencyMatrix[j][i] = 1;&lt;br /&gt;
                }&lt;br /&gt;
                else if( (j &amp;gt;= (networkSize - connectRadius + i) ) &amp;amp;&amp;amp; (i!=j)){&lt;br /&gt;
                    adjacencyMatrix[i][j] = 1;&lt;br /&gt;
                    adjacencyMatrix[j][i] = 1;&lt;br /&gt;
                }&lt;br /&gt;
                else{&lt;br /&gt;
                    adjacencyMatrix[i][j] = 0;&lt;br /&gt;
                    adjacencyMatrix[j][i] = 0;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
	// Do random rewiring&lt;br /&gt;
	double randomDouble;        &lt;br /&gt;
        for(int i = 0; i &amp;lt; networkSize; i++){&lt;br /&gt;
            for(int j = 1; j &amp;lt; networkSize; j++){&lt;br /&gt;
                randomDouble = model.getUniformDoubleFromTo(0,1);&lt;br /&gt;
                if((randomDouble &amp;lt; reconnectProb)&amp;amp;&amp;amp;&lt;br /&gt;
		                 (adjacencyMatrix[i][j]==1)){&lt;br /&gt;
		    adjacencyMatrix[i][j] = 0;&lt;br /&gt;
		    int randomi = j;&lt;br /&gt;
		    do{&lt;br /&gt;
			randomi = model.getUniformIntFromTo(0, networkSize - 1);&lt;br /&gt;
			if(model.rDebug &amp;gt; 2)&lt;br /&gt;
			    System.out.printf(&amp;quot;j = %d, randomi = %d, A[i][j] = %d\n&amp;quot;,&lt;br /&gt;
					      j,randomi, adjacencyMatrix[randomi][j]);&lt;br /&gt;
		    } while (randomi == j || adjacencyMatrix[randomi][j] ==1);&lt;br /&gt;
		    &lt;br /&gt;
		    adjacencyMatrix[randomi][j] = 1;&lt;br /&gt;
		    adjacencyMatrix[j][randomi] = 1;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
        return adjacencyMatrix;&lt;br /&gt;
    }&lt;br /&gt;
	&lt;br /&gt;
    ///////////////////////////////////////////////////////////////////////////&lt;br /&gt;
    //&lt;br /&gt;
    // buildAdjacencyMatrix2DWS&lt;br /&gt;
    // Develops an adjacency matrix for a Toroidal - Watts-Strogatz Small &lt;br /&gt;
    // World network based on the given parameters.  Note that this &lt;br /&gt;
    // implementation uses a disconnecting rewire, so that it is&lt;br /&gt;
    // possible to disconnect groups in the network. &lt;br /&gt;
    public int[][] buildAdjacencyMatrix2DWS(){&lt;br /&gt;
        // Make regular grid&lt;br /&gt;
        adjacencyMatrix = new int[networkSize][networkSize];&lt;br /&gt;
        int ix, iy, jx, jy;&lt;br /&gt;
        int size = (int) Math.floor(Math.sqrt(networkSize));&lt;br /&gt;
        System.out.printf(&amp;quot;Size = %d \n&amp;quot;, size);&lt;br /&gt;
        for(int i = 0; i &amp;lt; networkSize; i++){&lt;br /&gt;
            for(int j = i; j&amp;lt; networkSize; j++){&lt;br /&gt;
                &lt;br /&gt;
                ix = i % size;&lt;br /&gt;
                iy = i / size;&lt;br /&gt;
                &lt;br /&gt;
                jx = j % size;&lt;br /&gt;
                jy = j / size;&lt;br /&gt;
                &lt;br /&gt;
                double dx = Math.min( Math.min( Math.pow(jx - ix,2), &lt;br /&gt;
						Math.pow(jx + size - ix, 2)), &lt;br /&gt;
				      Math.pow(jx - size - ix, 2) );&lt;br /&gt;
                double dy = Math.min( Math.min( Math.pow(jy - iy,2), &lt;br /&gt;
						Math.pow(jy + size - iy, 2)), &lt;br /&gt;
				      Math.pow(jy - size - iy, 2) );&lt;br /&gt;
&lt;br /&gt;
                if( (Math.sqrt(dx + dy) &amp;lt;= (connectRadius) ) &amp;amp;&amp;amp; (i!=j) ){&lt;br /&gt;
                    adjacencyMatrix[i][j] = 1;&lt;br /&gt;
                    adjacencyMatrix[j][i] = 1;&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                else{&lt;br /&gt;
                    adjacencyMatrix[i][j] = 0;&lt;br /&gt;
                    adjacencyMatrix[j][i] = 0;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        double randomDouble;&lt;br /&gt;
        // Do random rewiring&lt;br /&gt;
        for(int i = 0; i &amp;lt; networkSize; i++){&lt;br /&gt;
            for(int j = 1; j &amp;lt; networkSize; j++){&lt;br /&gt;
                randomDouble = model.getUniformDoubleFromTo(0,1);&lt;br /&gt;
                if((randomDouble &amp;lt; reconnectProb)&amp;amp;&amp;amp;&lt;br /&gt;
		                    (adjacencyMatrix[i][j]==1)){&lt;br /&gt;
		    adjacencyMatrix[i][j] = 0;&lt;br /&gt;
		    int randomi = j;&lt;br /&gt;
		    do{&lt;br /&gt;
			randomi = model.getUniformIntFromTo(0, networkSize - 1);&lt;br /&gt;
			System.out.printf(&amp;quot;j = %d, randomi = %d, A[i][j] = %d\n&amp;quot;,&lt;br /&gt;
					  j,randomi, adjacencyMatrix[randomi][j]);&lt;br /&gt;
		    } while (randomi == j || adjacencyMatrix[randomi][j] ==1);&lt;br /&gt;
		    &lt;br /&gt;
		    adjacencyMatrix[randomi][j] = 1;&lt;br /&gt;
		    adjacencyMatrix[j][randomi] = 1;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
	System.out.printf(&amp;quot;----&amp;gt; Finished 2DWS Adjacency Mat\n&amp;quot;);&lt;br /&gt;
        return adjacencyMatrix;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    ///////////////////////////////////////////////////////////////////////////&lt;br /&gt;
    //&lt;br /&gt;
    // buildAdjacencyMatrixStar&lt;br /&gt;
    // Develops an adjacency matrix for a Star Network, centered on i.&lt;br /&gt;
    public int[][] buildAdjacencyMatrixStar(int i){&lt;br /&gt;
        &lt;br /&gt;
        adjacencyMatrix = new int[networkSize][networkSize];&lt;br /&gt;
        int ix, iy, jx, jy;&lt;br /&gt;
        for(int k = 0; k &amp;lt; networkSize; k++){&lt;br /&gt;
	    for(int j = 0; j&amp;lt; networkSize; j++){&lt;br /&gt;
		adjacencyMatrix[k][j] = 0;&lt;br /&gt;
		adjacencyMatrix[j][k] = 0;&lt;br /&gt;
	    }&lt;br /&gt;
	}&lt;br /&gt;
        &lt;br /&gt;
	for(int j = 0; j&amp;lt; networkSize; j++){&lt;br /&gt;
	    if(i!=j){&lt;br /&gt;
		adjacencyMatrix[i][j] = 1;&lt;br /&gt;
		adjacencyMatrix[j][i] = 1;&lt;br /&gt;
	    }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	System.out.printf(&amp;quot;----&amp;gt; Finished Star Adjacency Mat\n&amp;quot;);&lt;br /&gt;
        return adjacencyMatrix;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    //////////////////////////////////////////////////////////////////&lt;br /&gt;
    // buildAdjacencyMatrixRand&lt;br /&gt;
    // Develops a symmetric, random adjacency matrix, so that the&lt;br /&gt;
    //  probability of an edge existing between any pair of nodes is&lt;br /&gt;
    //  reconnectProb.&lt;br /&gt;
    public int[][] buildAdjacencyMatrixRand(){&lt;br /&gt;
        &lt;br /&gt;
        adjacencyMatrix = new int[networkSize][networkSize];&lt;br /&gt;
        int i, j;&lt;br /&gt;
	double randn;&lt;br /&gt;
        for(i = 0; i &amp;lt; networkSize; i++){&lt;br /&gt;
	    for(j = 0; j &amp;lt; networkSize; j++){&lt;br /&gt;
		randn = model.getUniformDoubleFromTo(0, 1);&lt;br /&gt;
		&lt;br /&gt;
		if (randn &amp;lt; reconnectProb){&lt;br /&gt;
		    adjacencyMatrix[i][j] = 1;&lt;br /&gt;
		    adjacencyMatrix[j][i] = 1;&lt;br /&gt;
		}&lt;br /&gt;
		//else&lt;br /&gt;
		//    System.out.printf(&amp;quot;Randn = %f vs %f\n&amp;quot;, randn, reconnectProb);&lt;br /&gt;
	    }&lt;br /&gt;
	}&lt;br /&gt;
        &lt;br /&gt;
	System.out.printf(&amp;quot;----&amp;gt; Finished Random Adjacency Mat\n&amp;quot;);&lt;br /&gt;
        return adjacencyMatrix;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    ///////////////////////////////////////////////////////////////////////&lt;br /&gt;
    // buildAgentList&lt;br /&gt;
    // Develops an arrayList of CustomNodes interconnected based on the&lt;br /&gt;
    // adjacency matrix developed.&lt;br /&gt;
    public void buildAgentList(){&lt;br /&gt;
	&lt;br /&gt;
	// Create all the agents&lt;br /&gt;
        for(int i = 0; i &amp;lt; networkSize; i++){&lt;br /&gt;
            OvalNetworkItem drawable = new OvalNetworkItem(0,0);&lt;br /&gt;
	    &lt;br /&gt;
	    double skill = model.getUniformDoubleFromTo(0, 1);&lt;br /&gt;
	    &lt;br /&gt;
            CustomNode agent = new CustomNode(drawable, skill);&lt;br /&gt;
            agentList.add(agent);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
	// Create the edges between them, governed by the adjacency&lt;br /&gt;
	//  matrix&lt;br /&gt;
        CustomEdge edge;&lt;br /&gt;
        double cc;&lt;br /&gt;
        CustomNode jnode, inode;&lt;br /&gt;
        for(int i = 0; i &amp;lt; networkSize; i++){&lt;br /&gt;
            for(int j = 0; j &amp;lt; networkSize; j++){&lt;br /&gt;
                if(adjacencyMatrix[i][j] == 1){&lt;br /&gt;
                    jnode = (CustomNode) agentList.get(j);&lt;br /&gt;
                    inode = (CustomNode) agentList.get(i);&lt;br /&gt;
                    edge = new CustomEdge(jnode, inode);&lt;br /&gt;
                    jnode.addOutEdge(edge);&lt;br /&gt;
                    inode.addInEdge(edge);&lt;br /&gt;
&lt;br /&gt;
		    // This symmetritizes the network&lt;br /&gt;
		    // i.e. makes undirected&lt;br /&gt;
		    edge = new CustomEdge(inode, jnode);&lt;br /&gt;
		    inode.addOutEdge(edge);&lt;br /&gt;
		    jnode.addInEdge(edge);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    /////////////////////////////////////////////////////////////&lt;br /&gt;
    // printAdjacencyMatrix&lt;br /&gt;
    // a debugging tool.  Prints the adjacency matrix to the terminal&lt;br /&gt;
    public void printAdjacencyMatrix(){&lt;br /&gt;
        System.out.printf(&amp;quot;--- Printing Adjacency Matrix, size %d ---\n&amp;quot;, &lt;br /&gt;
			  networkSize);&lt;br /&gt;
        for(int i = 0; i &amp;lt; networkSize; i++){&lt;br /&gt;
            for(int j = 0; j &amp;lt; networkSize; j++){&lt;br /&gt;
		System.out.printf(&amp;quot; %d &amp;quot;, adjacencyMatrix[i][j]);&lt;br /&gt;
            }&lt;br /&gt;
            System.out.printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    //////////////////////////////////////////////////////////////&lt;br /&gt;
    // writePajekNetwork&lt;br /&gt;
    // Writes the network to a file in pajek&lt;br /&gt;
    //  format.  Note: this version writes DOS type line feeds.&lt;br /&gt;
    public void writePajekNetwork(ArrayList&amp;lt;CustomNode&amp;gt; agentList){&lt;br /&gt;
	String verts, arcs;&lt;br /&gt;
	// These are carriage return and line feed in DOS format.&lt;br /&gt;
	char cr = (char) 13;&lt;br /&gt;
	char lf = (char) 10;&lt;br /&gt;
	&lt;br /&gt;
	// pajek requires the vertices and arcs separately.&lt;br /&gt;
	verts = String.format(&amp;quot;*Vertices %d%c%c&amp;quot;, networkSize, cr, lf);	&lt;br /&gt;
	arcs = String.format(&amp;quot;*Arcs %c%c&amp;quot;, cr, lf);&lt;br /&gt;
	&lt;br /&gt;
	// step through all nodes&lt;br /&gt;
	for(int i = 0; i &amp;lt; networkSize; i++){&lt;br /&gt;
	    CustomNode inode = (CustomNode) agentList.get(i);&lt;br /&gt;
	    verts += String.format(&amp;quot;%d \&amp;quot;N%d: %f\&amp;quot;&amp;quot;,&lt;br /&gt;
		   inode.getID() + 1, inode.getID(), inode.getReputation());&lt;br /&gt;
	   &lt;br /&gt;
	    verts += String.format(&amp;quot; ic %s%c%c&amp;quot;, inode.getMyPajekColor(),cr, lf);&lt;br /&gt;
	    &lt;br /&gt;
	    ArrayList edgesInList = inode.getInEdges();&lt;br /&gt;
	    int numEdges = edgesInList.size();&lt;br /&gt;
	    CustomNode testNode = (CustomNode) (model.agentList).get(i);&lt;br /&gt;
	    if (testNode != inode)&lt;br /&gt;
		System.out.printf(&amp;quot;Nodes(%d) not equal\n&amp;quot;, i);&lt;br /&gt;
	    if ( (testNode.getOutDegree() != inode.getOutDegree()) || (testNode.getInDegree() != inode.getInDegree()))&lt;br /&gt;
		System.out.printf(&amp;quot;Nodes(%d) have different degree\n&amp;quot;, i);&lt;br /&gt;
	    if (numEdges &amp;gt; 0)&lt;br /&gt;
		// if node has at least one neighbor, write the edges&lt;br /&gt;
		for(int j = 0;  j &amp;lt; numEdges; j++){&lt;br /&gt;
		    CustomEdge edge = (CustomEdge)edgesInList.get(j);&lt;br /&gt;
		    arcs += String.format(&amp;quot;%d %d %c%c&amp;quot;,&lt;br /&gt;
			    ((CustomNode)edge.getFrom()).getID() + 1,&lt;br /&gt;
			    ((CustomNode)edge.getTo()).getID() + 1, cr, lf);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	String s = verts + arcs;&lt;br /&gt;
	writeToPajekFile(s);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /////////////////////////////////////////////////////////////&lt;br /&gt;
    // writeLineToPajekFile&lt;br /&gt;
    // writes a single line to the pajek file&lt;br /&gt;
    public void writeLineToPajekFile ( String line ) {&lt;br /&gt;
	if ( pajekFile == null ) {&lt;br /&gt;
	    return;&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
	    pajekFile.println( line );&lt;br /&gt;
	}&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    //////////////////////////////////////////////////////////&lt;br /&gt;
    // writeToPajekFile&lt;br /&gt;
    // Does the same.&lt;br /&gt;
    public void writeToPajekFile ( String line ) {&lt;br /&gt;
	if ( pajekFile == null ) {&lt;br /&gt;
	    return;&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
	    pajekFile.print( line );&lt;br /&gt;
	}&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    //////////////////////////////////////////////////////////////&lt;br /&gt;
    // startPajekFile&lt;br /&gt;
    // opens a file to write the pajek network to.&lt;br /&gt;
    public PrintWriter startPajekFile () {&lt;br /&gt;
	if ( model.rDebug &amp;gt; 0 )&lt;br /&gt;
	    System.out.println( &amp;quot;startPajekFile called!&amp;quot; );&lt;br /&gt;
	pajekFile = null;&lt;br /&gt;
	String fullFileName = pajekFileName + String.format( &amp;quot;%02d.net&amp;quot;,&lt;br /&gt;
			      model.runNumber );&lt;br /&gt;
	&lt;br /&gt;
	pajekFile = IOUtils.openFileToWrite( outputDirName, fullFileName, &amp;quot;r&amp;quot; );&lt;br /&gt;
	if ( model.rDebug &amp;gt; 0 )&lt;br /&gt;
	    System.out.println( &amp;quot;startPajekFile completed!&amp;quot; );&lt;br /&gt;
	&lt;br /&gt;
	return pajekFile;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    //////////////////////////////////////////////////////////////&lt;br /&gt;
    // startPajekFile - overload&lt;br /&gt;
    // opens a file to write the pajek network to.  Calls it&lt;br /&gt;
    // by integer i&lt;br /&gt;
    public PrintWriter startPajekFile (int i) {&lt;br /&gt;
	if ( model.rDebug &amp;gt; 0 )&lt;br /&gt;
	    System.out.println( &amp;quot;startPajekFile called!&amp;quot; );&lt;br /&gt;
	pajekFile = null;&lt;br /&gt;
	String fullFileName = pajekFileName + String.format(&lt;br /&gt;
			     &amp;quot;%03d.%02d.net&amp;quot;, i, model.runNumber );&lt;br /&gt;
	&lt;br /&gt;
	pajekFile = IOUtils.openFileToWrite( outputDirName, &lt;br /&gt;
					     fullFileName, &amp;quot;r&amp;quot; );&lt;br /&gt;
	&lt;br /&gt;
	if ( model.rDebug &amp;gt; 0 )&lt;br /&gt;
	    System.out.println( &amp;quot;startPajekFile completed!&amp;quot; );&lt;br /&gt;
	return pajekFile;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    //////////////////////////////////////////////////////////&lt;br /&gt;
    // endPajekFile&lt;br /&gt;
    // closes the open pajekFile&lt;br /&gt;
    public void endPajekFile ( ) {&lt;br /&gt;
	IOUtils.closePWFile( pajekFile );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    ///////////////////////////////////////////////////////////&lt;br /&gt;
    // getAverageCC1&lt;br /&gt;
    // Calculates the average 1-neighborhood clustering coefficient&lt;br /&gt;
    public double getAverageCC1(){&lt;br /&gt;
	CustomNode node = null;&lt;br /&gt;
	double sum = 0;&lt;br /&gt;
	for(int i = 0; i &amp;lt; agentList.size(); i ++){&lt;br /&gt;
	    node = (CustomNode) agentList.get(i);&lt;br /&gt;
	    sum += getNodeCC1(node);&lt;br /&gt;
	}&lt;br /&gt;
	return sum / (double) agentList.size();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
    //////////////////////////////////////////////////////////&lt;br /&gt;
    // getAverageCC2&lt;br /&gt;
    // Calculates the average 2-neighborhood clustering coefficient&lt;br /&gt;
    public double getAverageCC2(){&lt;br /&gt;
	CustomNode node = null;&lt;br /&gt;
	double sum = 0;&lt;br /&gt;
	for(int i = 0; i &amp;lt; agentList.size(); i ++){&lt;br /&gt;
	    node = (CustomNode) agentList.get(i);&lt;br /&gt;
	    sum += getNodeCC2(node);&lt;br /&gt;
	}&lt;br /&gt;
	return sum / (double) agentList.size();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
    /////////////////////////////////////////////////////////&lt;br /&gt;
    // union&lt;br /&gt;
    // Support function.&lt;br /&gt;
    // Returns the union of two array lists of nodes&lt;br /&gt;
    public ArrayList&amp;lt;CustomNode&amp;gt; union(ArrayList&amp;lt;CustomNode&amp;gt; l1, &lt;br /&gt;
				       ArrayList&amp;lt;CustomNode&amp;gt; l2){&lt;br /&gt;
	ArrayList&amp;lt;CustomNode&amp;gt; unionList = new ArrayList&amp;lt;CustomNode&amp;gt;();&lt;br /&gt;
	unionList.addAll(l1);&lt;br /&gt;
	for(int i = 0; i &amp;lt; l2.size(); i ++){&lt;br /&gt;
	    CustomNode node = (CustomNode) l2.get(i);&lt;br /&gt;
	    if (!unionList.contains(node))&lt;br /&gt;
		unionList.add(node);&lt;br /&gt;
	}&lt;br /&gt;
	return unionList;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /////////////////////////////////////////////////////////////&lt;br /&gt;
    // intersection&lt;br /&gt;
    // Support function&lt;br /&gt;
    // Return the intersection of two array lists of nodes&lt;br /&gt;
    public ArrayList&amp;lt;CustomNode&amp;gt; intersection(ArrayList&amp;lt;CustomNode&amp;gt; l1, &lt;br /&gt;
				       ArrayList&amp;lt;CustomNode&amp;gt; l2){&lt;br /&gt;
	ArrayList&amp;lt;CustomNode&amp;gt; interList = new ArrayList&amp;lt;CustomNode&amp;gt;();&lt;br /&gt;
	for(int i = 0; i &amp;lt; l1.size(); i ++){&lt;br /&gt;
	    CustomNode node = (CustomNode) l1.get(i);&lt;br /&gt;
	    if (l2.indexOf(node) &amp;gt;-1)&lt;br /&gt;
		interList.add(node);&lt;br /&gt;
	}&lt;br /&gt;
	return interList;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /////////////////////////////////////////////////////////////&lt;br /&gt;
    // getNodeCC1&lt;br /&gt;
    // Computes the clustering coefficient CC1, as per Pajek documentation&lt;br /&gt;
    // This is the 1-neighborhood clustering coefficient&lt;br /&gt;
    public double getNodeCC1 (CustomNode node){&lt;br /&gt;
	ArrayList&amp;lt;CustomNode&amp;gt; neighborsList = new ArrayList&amp;lt;CustomNode&amp;gt;();&lt;br /&gt;
	// Get all neighbors&lt;br /&gt;
	neighborsList = union(node.getOutNodes(), node.getInNodes());&lt;br /&gt;
	int sum = 0;&lt;br /&gt;
	int k = neighborsList.size();&lt;br /&gt;
	for(int j = 0; j &amp;lt; k; j ++){&lt;br /&gt;
	    CustomNode jnode = (CustomNode) neighborsList.get(j);&lt;br /&gt;
	    ArrayList&amp;lt;CustomNode&amp;gt; nOut = jnode.getOutNodes();&lt;br /&gt;
	    ArrayList&amp;lt;CustomNode&amp;gt; nIn = jnode.getInNodes();&lt;br /&gt;
	    &lt;br /&gt;
	    sum += (intersection(nOut, neighborsList)).size();&lt;br /&gt;
	    sum += (intersection(nIn, neighborsList)).size();&lt;br /&gt;
	   &lt;br /&gt;
	}&lt;br /&gt;
	double cc1 = 0;&lt;br /&gt;
	if (k &amp;gt; 1)&lt;br /&gt;
	    cc1 = (double)sum/( 2* (double)k * (double)(k-1));&lt;br /&gt;
	return cc1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /////////////////////////////////////////////////////////////&lt;br /&gt;
    // getNodeCC2&lt;br /&gt;
    // computes the clustering coefficient CC2, as per Pajek documentation&lt;br /&gt;
    // E(G1(v))/E(G2(v))&lt;br /&gt;
    // This is the 2-neighboorhood clustering coefficient&lt;br /&gt;
    public double getNodeCC2 (CustomNode node){&lt;br /&gt;
	&lt;br /&gt;
	// calc E(G1(v)) = sum1&lt;br /&gt;
	ArrayList&amp;lt;CustomNode&amp;gt; neighbors1List = new ArrayList&amp;lt;CustomNode&amp;gt;();&lt;br /&gt;
	ArrayList&amp;lt;CustomNode&amp;gt; neighbors2List = new ArrayList&amp;lt;CustomNode&amp;gt;();&lt;br /&gt;
	neighbors1List = union(node.getOutNodes(), node.getInNodes());&lt;br /&gt;
	neighbors2List.addAll(neighbors1List);&lt;br /&gt;
&lt;br /&gt;
	int sum1 = 0;&lt;br /&gt;
	int k = neighbors1List.size();&lt;br /&gt;
	for(int j = 0; j &amp;lt; k; j ++){&lt;br /&gt;
	    CustomNode jnode = (CustomNode) neighbors1List.get(j);&lt;br /&gt;
	    ArrayList&amp;lt;CustomNode&amp;gt; nOut = jnode.getOutNodes();&lt;br /&gt;
	    ArrayList&amp;lt;CustomNode&amp;gt; nIn = jnode.getInNodes();&lt;br /&gt;
	    &lt;br /&gt;
	    sum1 += (intersection(nOut, neighbors1List)).size();&lt;br /&gt;
	    //sum1 += (intersection(nIn, neighbors1List)).size();&lt;br /&gt;
&lt;br /&gt;
	    neighbors2List = union(neighbors2List, union(nOut, nIn));&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	//System.out.printf(&amp;quot;For node %d sum1 = %d\n&amp;quot;, node.getID(), sum1);&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	int index = neighbors2List.indexOf(node);&lt;br /&gt;
	while (index &amp;gt; 0){&lt;br /&gt;
	    //System.out.printf(&amp;quot;node index = %d\n&amp;quot;, index);&lt;br /&gt;
	    neighbors2List.remove(index);&lt;br /&gt;
	    index = neighbors2List.indexOf(node);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// calc E(G2(v)) = sum2&lt;br /&gt;
	int sum2 = 0;&lt;br /&gt;
	int ind1, ind2;&lt;br /&gt;
	for(int j = 0; j &amp;lt; neighbors2List.size(); j++){&lt;br /&gt;
	    &lt;br /&gt;
	    CustomNode jnode = (CustomNode) neighbors2List.get(j);&lt;br /&gt;
	    ArrayList&amp;lt;CustomNode&amp;gt; nOut = jnode.getOutNodes();&lt;br /&gt;
	    ArrayList&amp;lt;CustomNode&amp;gt; nIn = jnode.getInNodes();&lt;br /&gt;
&lt;br /&gt;
	    sum2 += (intersection(nOut, neighbors2List)).size();&lt;br /&gt;
	    //sum2 += (intersection(nIn, neighbors2List)).size();&lt;br /&gt;
&lt;br /&gt;
	    ind1 = neighbors2List.indexOf(jnode);&lt;br /&gt;
	    ind2 = neighbors2List.lastIndexOf(jnode);&lt;br /&gt;
	    if (ind1 != ind2)&lt;br /&gt;
		System.out.printf (&amp;quot;Node %d in list multiple times\n&amp;quot;, jnode.getID());&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	//System.out.printf(&amp;quot;For node %d sum1 = %d\n&amp;quot;, node.getID(), sum2);&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
	double cc2 = 0;&lt;br /&gt;
	if (sum2 &amp;gt; 0)&lt;br /&gt;
	    cc2 = (double)sum1/(double)sum2;&lt;br /&gt;
	return cc2;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /////////////////////////////////////////////////////////&lt;br /&gt;
    // printList&lt;br /&gt;
    // Debug tool&lt;br /&gt;
    // Prints the contents of an ArrayList&lt;br /&gt;
    public void printList(ArrayList&amp;lt;CustomNode&amp;gt; list){&lt;br /&gt;
	for(int i = 0; i &amp;lt; list.size(); i++){&lt;br /&gt;
	    CustomNode node = (CustomNode) list.get(i);&lt;br /&gt;
	    System.out.printf(&amp;quot;%d, &amp;quot;, node.getID());&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
	System.out.printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    ///////////////////////////////////////////////////////////&lt;br /&gt;
    // PickRandomEdge&lt;br /&gt;
    // Picks a random edge with uniform probability in O(m/(n*n))&lt;br /&gt;
    //   (I think)&lt;br /&gt;
    public CustomEdge pickRandomEdge(){&lt;br /&gt;
	CustomEdge edge = null;&lt;br /&gt;
	CustomNode inode;&lt;br /&gt;
	CustomNode jnode;&lt;br /&gt;
	do{&lt;br /&gt;
	    inode = agentList.get(model.getUniformIntFromTo(0, agentList.size() -1));&lt;br /&gt;
	    do{&lt;br /&gt;
		jnode = agentList.get(model.getUniformIntFromTo(0, agentList.size() -1));&lt;br /&gt;
	    } while (inode == jnode);&lt;br /&gt;
	    &lt;br /&gt;
	    if ( (jnode.getOutNodes()).contains(inode))&lt;br /&gt;
		edge = getEdgeFromTo(jnode, inode);&lt;br /&gt;
	} while (edge == null);&lt;br /&gt;
	return edge;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
    ///////////////////////////////////////////////////////////&lt;br /&gt;
    // selectRandomUncoupledPair&lt;br /&gt;
    // Selectrs a random pair of nodes with uniform probability.&lt;br /&gt;
    public CustomNode[] selectRandomUncoupledPair(){&lt;br /&gt;
	boolean pass = false;&lt;br /&gt;
	CustomNode inode, jnode;&lt;br /&gt;
	int i, j;&lt;br /&gt;
	CustomEdge edge;&lt;br /&gt;
	do{&lt;br /&gt;
	    i = model.getUniformIntFromTo(0, agentList.size() -1);&lt;br /&gt;
	    do{&lt;br /&gt;
		j = model.getUniformIntFromTo(0, agentList.size() -1);	&lt;br /&gt;
	    } while (i == j);&lt;br /&gt;
		&lt;br /&gt;
	    inode = (CustomNode) agentList.get(i);&lt;br /&gt;
	    jnode = (CustomNode) agentList.get(j);&lt;br /&gt;
	    if ( !(jnode.getOutNodes()).contains(inode)){&lt;br /&gt;
		pass = true;&lt;br /&gt;
	    }&lt;br /&gt;
	} while (!pass);&lt;br /&gt;
	CustomNode[] nodes = {inode, jnode};&lt;br /&gt;
	return nodes;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    ////////////////////////////////////////////////////////////&lt;br /&gt;
    // selectRandomUncoupledNode&lt;br /&gt;
    // &lt;br /&gt;
    public CustomNode selectRandomUncoupledNode(CustomNode jnode){&lt;br /&gt;
	boolean pass = false;&lt;br /&gt;
	CustomNode inode = null;&lt;br /&gt;
	int i, j = jnode.getID();&lt;br /&gt;
	CustomEdge edge;&lt;br /&gt;
	// get a list of the nodes, but make sure it isn&amp;#039;t the main list&lt;br /&gt;
	// &amp;#039;cause we&amp;#039;re gonna shuffle it&lt;br /&gt;
	ArrayList &amp;lt;CustomNode&amp;gt; nodesList = new ArrayList&amp;lt;CustomNode&amp;gt;();&lt;br /&gt;
	nodesList.addAll(agentList);&lt;br /&gt;
	SimUtilities.shuffle(nodesList, Random.uniform);&lt;br /&gt;
	&lt;br /&gt;
	i = 0;&lt;br /&gt;
	int k = 0;&lt;br /&gt;
	do{&lt;br /&gt;
	    &lt;br /&gt;
	    inode = (CustomNode) nodesList.get(i);&lt;br /&gt;
	    if (inode != jnode){&lt;br /&gt;
		if ( !(jnode.getOutNodes()).contains(inode)){&lt;br /&gt;
		    pass = true;&lt;br /&gt;
		}&lt;br /&gt;
	    }&lt;br /&gt;
	    i++;&lt;br /&gt;
	    if (i == nodesList.size()){&lt;br /&gt;
		i = 0;&lt;br /&gt;
		k ++;&lt;br /&gt;
	    }&lt;br /&gt;
	} while ( !pass &amp;amp;&amp;amp; k &amp;lt; 2 );&lt;br /&gt;
&lt;br /&gt;
	if (k == 2){&lt;br /&gt;
	    do{&lt;br /&gt;
		i = model.getUniformIntFromTo(0, agentList.size() - 1);&lt;br /&gt;
		inode = (CustomNode) agentList.get(i);&lt;br /&gt;
	    } while ( i == j || (jnode.getOutNodes()).contains(inode));&lt;br /&gt;
	}&lt;br /&gt;
	return inode;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // getters and setters&lt;br /&gt;
    public String getPajekFileName () { return pajekFileName; }&lt;br /&gt;
    public void setPajekFileName ( String s ) {&lt;br /&gt;
	pajekFileName = s;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    public String getOutputDirName () { return outputDirName; }&lt;br /&gt;
    public void setOutputDirName ( String s ) {&lt;br /&gt;
	outputDirName = s;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public int getNetworkSize() {return networkSize;}&lt;br /&gt;
    public ArrayList&amp;lt;CustomNode&amp;gt; getAgentList() {return agentList;}&lt;br /&gt;
    &lt;br /&gt;
    public PrintWriter getPajekFile () { return pajekFile; }&lt;br /&gt;
    &lt;br /&gt;
    public CustomEdge getEdgeFromTo(CustomNode jnode, CustomNode inode){&lt;br /&gt;
	CustomEdge edge;&lt;br /&gt;
	HashSet edgeList = inode.getEdgesFrom(jnode);&lt;br /&gt;
	Object[] edges = edgeList.toArray();&lt;br /&gt;
	// get the edge object connected to jnode&lt;br /&gt;
	edge = ((CustomEdge)edges[0]);&lt;br /&gt;
	return edge;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    //**************************************************&lt;br /&gt;
    // Static Methods&lt;br /&gt;
    public static void setModel(RepMod m){model = m;}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Seoc</name></author>
	</entry>
</feed>