{ "metadata": { "name": "", "signature": "sha256:5a69a947565c24e2a5c33559b2c7d88c1f2501b1ca4e32798f4c7c43c6aa523b" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 6, "metadata": {}, "source": [ "class agent:\n", " id_number\n", " getLocation()\n", " changeLocation()\n", " category\n", " carbon, iron, sulfur, seed (2)\n", "\n", "class swarm:\n", " vector of agents\n", " computeNextMove(agent locations, rules)\n", " \n", "rules:\n", " if carbon:\n", " go toward the largest group of carbons\n", " if sulfur:\n", " go toward the nearest unpaired sulfur\n", " after pairing: go toward nearest iron\n", " if iron:\n", " go toward the seed\n", " never be next to another iron" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "import numpy as np\n", "import pylab as plt\n", "from matplotlib import animation\n", "from JSAnimation import IPython_display\n", "\n", "swarm_params = { 'Ncarbon': 6, 'Nsulfur': 8, 'Niron': 5,'Nseed': 1 }\n", "color_dict = { 'carbon': 'k', 'sulfur' : 'y', 'iron' : 'g', 'seed' :'r' }\n", "xlims = [-5,5]\n", "ylims = [-5,5]\n", "\n", "class agent():\n", " def __init__(self,id_number,pars):\n", " self.id = id_number\n", " self.xpos = pars['x_init']\n", " self.ypos = pars['y_init']\n", " self.cat = pars['cat']\n", " self.fixed = pars['fixed']\n", " return None\n", " \n", " def update_position(self, newx, newy):\n", " self.xpos = newx\n", " self.ypos = newy\n", " return None\n", " \n", " def checkBCs(self):\n", " if self.xpos > xlims[1]:\n", " self.update_position(-5,self.ypos)\n", " if self.xpos < xlims[0]:\n", " self.update_position(5,self.ypos)\n", " if self.ypos > ylims[1]:\n", " self.update_position(self.xpos,-5)\n", " if self.ypos < ylims[0]:\n", " self.update_position(self.xpos, 5)\n", " \n", " def moveRight(self):\n", " newx = self.xpos + 1\n", " newy = self.ypos\n", " self.update_position(newx,newy)\n", " \n", " def moveLeft(self):\n", " newx = self.xpos - 1\n", " newy = self.ypos\n", " self.update_position(newx,newy)\n", " \n", " def moveUp(self):\n", " newx = self.xpos\n", " newy = self.ypos + 1\n", " self.update_position(newx,newy)\n", " \n", " def moveDown(self):\n", " newx = self.xpos \n", " newy = self.ypos - 1\n", " self.update_position(newx,newy)\n", " \n", " \n", "def agentSep(agent1,agent2):\n", " return np.sqrt((agent1.xpos-agent2.xpos)**2+(agent1.ypos-agent2.ypos)**2)\n", "\n", "class swarm():\n", " \n", " def __init__(self, pars):\n", " \n", " self.members = []\n", " self.fig = plt.figure()\n", " self.ax = self.fig.gca()\n", " \n", " for i in np.arange(pars['Ncarbon']):\n", " temp = agent(i,{'x_init':i, 'y_init':0, 'cat': 'carbon', 'fixed': False})\n", " self.members.append(temp)\n", " \"\"\" \n", " for i in np.arange(pars['Nsulfur']):\n", " temp = agent(i,{'x_init':i, 'y_init':1, 'cat': 'sulfur', 'fixed': False})\n", " self.members.append(temp)\n", " \n", " for i in np.arange(pars['Niron']):\n", " temp = agent(i,{'x_init':i, 'y_init':2, 'cat': 'iron', 'fixed': False})\n", " self.members.append(temp)\n", " \"\"\" \n", " for i in np.arange(pars['Nseed']):\n", " temp = agent(i,{'x_init':i, 'y_init':3, 'cat': 'seed', 'fixed': True})\n", " self.members.append(temp)\n", " \n", " def checkMove(self,current,newx,newy):\n", " for other in self.members:\n", " if newx == other.xpos and newy == other.ypos:\n", " return 1\n", " return 0\n", " \n", " def timeEvolve(self, N):\n", " counter = 0\n", " while counter < N:\n", " for member in self.members:\n", " if not member.fixed:\n", " test = np.random.rand(1)\n", " if test >= 0 and test < 0.25:\n", " member.moveLeft()\n", " if test >= 0.25 and test < 0.5:\n", " member.moveRight()\n", " if test >= 0.5 and test < 0.75:\n", " member.moveUp()\n", " if test >= 0.75 and test <= 1:\n", " member.moveDown()\n", " member.checkBCs()\n", " member.fixed = self.shouldFixQ(member)\n", " counter += 1\n", " \n", " \n", " def shouldFixQ(self,member):\n", " for other in self.members:\n", " if agentSep(member,other) == 1 and other.fixed:\n", " return True\n", " return False\n", " \n", " def showCurrentState(self):\n", " self.ax.cla()\n", " self.ax.set_xlim(xlims[0],xlims[1])\n", " self.ax.set_ylim(ylims[0],ylims[1])\n", " xvec = []\n", " yvec = []\n", " colvec = []\n", " for member in self.members:\n", " xvec.append(member.xpos)\n", " yvec.append(member.ypos)\n", " colvec.append(color_dict[member.cat])\n", " scat = self.ax.scatter(xvec,yvec,c=colvec,)\n", " return scat\n", " \n", " def animInit(self):\n", " self.ax.grid(b=True, which='major', color='0.65',linestyle='-')\n", " \n", " def timeEvolveAndShowCurrentState(self):\n", " print '1'\n", " self.timeEvolve(1)\n", " print '2'\n", " scat = self.showCurrentState()\n", " return scat\n", " \n", " def animateSwarm(self):\n", " anim = animation.FuncAnimation(self.fig, self.timeEvolveAndShowCurrentState, init_func=self.animInit,\n", " frames=xrange(200))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 168 }, { "cell_type": "code", "collapsed": false, "input": [ "classroom = swarm(swarm_params)\n", "classroom.timeEvolve(300)\n", "classroom.showCurrentState()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 169, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 169 }, { "cell_type": "code", "collapsed": false, "input": [ "classroom = swarm(swarm_params)\n", "classroom.animateSwarm()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 170 }, { "cell_type": "code", "collapsed": false, "input": [ "def main():\n", " numframes = 100\n", " numpoints = 10\n", " color_data = np.random.random((numframes, numpoints))\n", " x, y, c = np.random.random((3, numpoints))\n", "\n", " fig = plt.figure()\n", " scat = plt.scatter(x, y, c=c, s=100)\n", "\n", " ani = animation.FuncAnimation(fig, update_plot, frames=xrange(numframes),\n", " fargs=(color_data, scat))\n", " plt.show()\n", "\n", "def update_plot(i, data, scat):\n", " scat.set_array(data[i])\n", " return scat,\n", "\n", "main()" ], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }