Skip to content

Instantly share code, notes, and snippets.

@t-flora
Last active November 11, 2020 14:36
Show Gist options
  • Save t-flora/4d24bcf705091ee79147c864e64bc5f9 to your computer and use it in GitHub Desktop.
Save t-flora/4d24bcf705091ee79147c864e64bc5f9 to your computer and use it in GitHub Desktop.
CS166 - Dynamics on networks
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- Sayama Exercise 16.2.\n",
"\n",
"Revise the code above so that you can measure how many steps it will take until the system reaches a consensus (i.e., homogenized state). Then run multiple simulations (Monte Carlo simulations) to calculate the average time length needed for consensus formation in the original voter model.\n",
"- Sayama Exercise 16.3. \n",
"\n",
"Revise the code further to implement (1) the reversed and (2) the edge-based voter models. Then conduct Monte Carlo simulations to measure the\n",
"average time length needed for consensus formation in each case. Compare the results between the three versions.\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"# import matplotlib\n",
"# matplotlib.use('TkAgg')\n",
"from pylab import *\n",
"import networkx as nx\n",
"import random as rd\n",
"import numpy as np\n",
"\n",
"# Original pull version\n",
"\n",
"def initialize():\n",
" global g\n",
" g = nx.karate_club_graph()\n",
" g.pos = nx.spring_layout(g)\n",
" for i in g.nodes:\n",
" g.nodes[i]['state'] = 1 if random() < .5 else 0\n",
"\n",
"def observe():\n",
" global g\n",
" cla()\n",
" nx.draw(g, vmin = 0, vmax = 1,\n",
" node_color = [g.nodes[i]['state'] for i in g.nodes],\n",
" pos = g.pos)\n",
"\n",
"def update():\n",
" global g\n",
" listener = rd.choice(list(g.nodes))\n",
" speaker = rd.choice(list(g.neighbors(listener)))\n",
" g.nodes[listener]['state'] = g.nodes[speaker]['state']\n",
"\n",
"\n",
"# import pycxsimulator\n",
"# pycxsimulator.GUI().start(func=[initialize, observe, update])"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"n_trials = 1000\n",
"\n",
"counts = []\n",
"\n",
"for trial in range(n_trials):\n",
" initialize()\n",
" count = 0\n",
" states = nx.get_node_attributes(g, 'state')\n",
" while not (len(list(set(list(states.values())))) == 0 or len(list(set(list(states.values())))) == 1):\n",
" update()\n",
" states = nx.get_node_attributes(g, 'state')\n",
" count += 1\n",
" counts.append(count)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.hist(counts)\n",
"plt.title('Steps to convergence for pull version')\n",
"plt.xlabel('Steps')\n",
"plt.ylabel('Count')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# Reversed version\n",
"\n",
"def initialize_push():\n",
" global g\n",
" g = nx.karate_club_graph()\n",
" g.pos = nx.spring_layout(g)\n",
" for i in g.nodes:\n",
" g.nodes[i]['state'] = 1 if random() < .5 else 0\n",
"\n",
"def observe_push():\n",
" global g\n",
" cla()\n",
" nx.draw(g, vmin = 0, vmax = 1,\n",
" node_color = [g.nodes[i]['state'] for i in g.nodes],\n",
" pos = g.pos)\n",
"\n",
"def update_push():\n",
" global g, speaker\n",
" speaker = rd.choice(list(g.nodes))\n",
" listener = rd.choice(list(g.neighbors(speaker)))\n",
" g.nodes[listener]['state'] = g.nodes[speaker]['state']\n",
"\n",
"# import pycxsimulator\n",
"# pycxsimulator.GUI().start(func=[initialize, observe, update])"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"n_trials = 1000\n",
"\n",
"counts = []\n",
"\n",
"for trial in range(n_trials):\n",
" initialize_push()\n",
" count = 0\n",
" states = nx.get_node_attributes(g, 'state')\n",
" while not (len(list(set(list(states.values())))) == 0 or len(list(set(list(states.values())))) == 1):\n",
" update_push()\n",
" states = nx.get_node_attributes(g, 'state')\n",
" count += 1\n",
" counts.append(count)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.hist(counts)\n",
"plt.title('Steps to convergence for reversed version')\n",
"plt.xlabel('Steps')\n",
"plt.ylabel('Count')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"# Edge-based (symmetric) version\n",
"\n",
"def initialize_edge():\n",
" global g\n",
" g = nx.karate_club_graph()\n",
" g.pos = nx.spring_layout(g)\n",
" for i in g.nodes:\n",
" g.nodes[i]['state'] = 1 if random() < .5 else 0\n",
"\n",
" \n",
"def update_edge():\n",
" global g, pair\n",
" pair = rd.choice(list(g.edges))\n",
" speaker, listener = np.random.choice(pair, 2, replace = False)\n",
" g.nodes[listener]['state'] = g.nodes[speaker]['state']"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"n_trials = 1000\n",
"\n",
"counts = []\n",
"\n",
"for trial in range(n_trials):\n",
" initialize_edge()\n",
" count = 0\n",
" states = nx.get_node_attributes(g, 'state')\n",
" while not (len(list(set(list(states.values())))) == 0 or len(list(set(list(states.values())))) == 1):\n",
" update_edge()\n",
" states = nx.get_node_attributes(g, 'state')\n",
" count += 1\n",
" counts.append(count)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.hist(counts)\n",
"plt.title('Steps to convergence for symmetric version')\n",
"plt.xlabel('Steps')\n",
"plt.ylabel('Count')\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.8"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment