def test(self): logging.basicConfig(level=logging.WARN) outstring = "" outname = "pet_output%s.tsv" % outstring fhandle = open(outname, 'w') num_agents = 1000 num_tsteps = 100 wealth = np.random.random_sample(num_agents) interaction = np.random.random_sample(num_agents) responsible = np.random.random_sample(num_agents) time = np.random.random_sample(num_agents) gender = np.random.randint(1, 3, num_agents) pet = np.zeros(1000) g = igraph.Graph() for i in range(0, num_agents): g.add_vertex(i) vs = g.vs agents = [] for i in range(0, num_agents): traits = np.zeros((7)) traits[0] = pet[i] traits[1] = wealth[i] traits[2] = interaction[i] traits[3] = responsible[i] traits[4] = time[i] traits[5] = gender[i] traits[6] = 0 g.add_edge(i, vs[1]) specialagent = Person(vs[i], 7, traits) agents.append(specialagent) np.random.seed(347) env = PetEnvironment(g) time = dworp.BasicTime(num_tsteps) scheduler = dworp.RandomOrderScheduler(np.random.RandomState(4587)) term = PetTerminator(50) observer = dworp.ChainedObserver(PetObserver(fhandle)) sim = dworp.BasicSimulation(agents, env, time, scheduler, observer, terminator=term) sim.run() fhandle.close() with open("pet_demographics.tsv", 'w') as f: f.write('Wealth\tInteraction\tResponsible\tTime\tGender\tPet\n') for i in range(0, num_agents): f.write("{}\t{}\t{}\t{}\t{}\t".format(wealth[i], interaction[i], responsible[i], time[i], gender[i])) f.write("{}\n".format(agent.state[0] for agent in agents))
def __init__(self, params, observer): self.params = params self.rng = np.random.RandomState(params.seed) factory = ThingFactory(self.rng, params.similarity, params.color[0], params.color[1], params.color[2], params.color[3]) time = dworp.InfiniteTime() scheduler = dworp.RandomOrderScheduler(self.rng) terminator = TheTerminator() agents = [] grid = dworp.Grid(params.grid_width, params.grid_height) env = TheEnvironment(grid, self.rng) for x in range(params.grid_width): for y in range(params.grid_height): if self.rng.uniform() < params.density: agent = factory.create(x, y) grid.add(agent, x, y) agents.append(agent) super().__init__(agents, env, time, scheduler, observer, terminator)
def test(self): lastcountshouldbe = 4 logging.basicConfig(level=logging.WARN) # ensuring reproducibility by setting the seed np.random.seed(34756) xdim = 10 ydim = 10 n_tsteps = 8000 # because we cycle through the 100 sites each time, this represents 80K events g = igraph.Graph.Lattice([xdim, ydim], nei=1, directed=False, circular=False) agents = [Site(v) for v in g.vs] env = AxelrodEnvironment(g) time = dworp.BasicTime(n_tsteps) # ensuring reproducibility by setting the seed scheduler = dworp.RandomOrderScheduler(np.random.RandomState(4587)) observer = AxelrodObserver(1000) term = AxelrodTerminator(1000) sim = dworp.TwoStageSimulation(agents, env, time, scheduler, observer, terminator=term) sim.run() lastcount = observer.computenumregions(0, agents, env) print("Last Count = %d" % (lastcount)) if lastcount == lastcountshouldbe: print("Regression test passed!") return True else: print("Regression test failed! last count should be %d" % (lastcountshouldbe)) return False
circular=False) env = axelrod_aurora_test1.AxelrodEnvironment(g) for k in range(0, N): this_s_time = time.clock() # get this simulation's seed curseed = seedlist[place] place = place + 1 np.random.seed(curseed) timeobj = dworp.BasicTime(n_tsteps) # reset all the agent states agents = [ axelrod_aurora_test1.Site(v, num_features, num_traits) for v in g.vs ] # ensuring reproducibility by setting the seed scheduler = dworp.RandomOrderScheduler( np.random.RandomState(curseed + 1)) sim = dworp.TwoStageSimulation(agents, env, timeobj, scheduler, observer, terminator=term) sim.run() lastcount = observer.computenumregions(0, agents, env) allresults[i, k] = lastcount this_e_time = time.clock() alltimings[i, k] = this_e_time - this_s_time try: end_time = time.clock() sim_time_minutes = float(end_time - start_time) / 60.0 print("simulation finished after %.2f minutes" % (sim_time_minutes))
# logger = logging.getLogger(__name__) # # def __init__(self, agents, env, time, scheduler, observer, terminator=None): # super().__init__(agents, env, time, scheduler, observer, terminator, True) # self.numregions = 0 logging.basicConfig(level=logging.WARN) # ensuring reproducibility by setting the seed np.random.seed(34756) xdim = 10 ydim = 10 n_tsteps = 8000 # because we cycle through the 100 sites each time, this represents 80K events g = igraph.Graph.Lattice([xdim, ydim], nei=1, directed=False, circular=False) agents = [Site(v) for v in g.vs] env = AxelrodEnvironment(g) time = dworp.BasicTime(n_tsteps) # ensuring reproducibility by setting the seed scheduler = dworp.RandomOrderScheduler(np.random.RandomState(4587)) observer = AxelrodObserver(1000) term = AxelrodTerminator(1000) sim = dworp.TwoStageSimulation(agents, env, time, scheduler, observer, terminator=term) sim.run() lastcount = observer.computenumregions(0, agents, env) print("Last Count = %d" % (lastcount))
def test(self): lastcountshouldbe = 4 logging.basicConfig(level=logging.WARN) n_tsteps = 1000 n_tsteps = 100 n_agents = 10000 n_fps = 4 mu = np.array([0.544, 0.504, 0.466, 0.482, 0.304]) cov = np.zeros((5, 5)) cov[0, :] = [0.360000, 0.066120, 0.059520, 0.093000, 0.092040] cov[1, :] = [0.066120, 0.336400, 0.061132, 0.061132, 0.000000] cov[2, :] = [0.059520, 0.061132, 0.384400, 0.042284, -0.021948] cov[3, :] = [0.093000, 0.061132, 0.042284, 0.384400, 0.098766] cov[4, :] = [0.092040, 0.000000, -0.021948, 0.098766, 0.348100] scenariostr = "B" makevis = True # n_frields: each agent has this many friends (based on the n_friends people who are geographically closest) if scenariostr == "A": n_friends = 2 # Scenario A outstring = "_A" # ensuring reproducibility by setting the seed np.random.seed(45) mu[0] = 0.25 elif scenariostr == "B": n_friends = 5 # Scenario B # ensuring reproducibility by setting the seed np.random.seed(347) outstring = "_B" mu[0] = 0.50 else: n_friends = 20 # Scenario C outstring = "_C" # ensuring reproducibility by setting the seed np.random.seed(5769) mu[0] = 0.75 n_friends = 5 # constant personalities = np.random.multivariate_normal(mu, cov, n_agents) personalities[personalities > 1] = 1.0 personalities[personalities < 0] = 0.0 wealth = np.random.normal(300000, 100000, n_agents) wealth[wealth > 600000] = 600000 wealth[wealth < 10000] = 10000 offsets_lat = np.random.random((n_agents, 1)) offsets_lon = np.random.random((n_agents, 1)) lat = offsets_lon + 37.4316 # deg north lon = offsets_lat + 78.6569 # deg west gender = np.random.randint(0, 1, (n_agents, 1)) education = np.random.randint(0, 4, (n_agents, 1)) # colddrinks = np.random.normal(0.80, 0.15, n_agents) colddrinks = np.random.normal(0.90, 0.1, n_agents) colddrinks[colddrinks > 1] = 1 colddrinks[colddrinks < 0] = 0 # eatingout = np.random.normal(0.70,0.10,n_agents) eatingout = np.random.normal(0.90, 0.10, n_agents) eatingout[eatingout > 1] = 1 eatingout[eatingout < 0] = 0 envaware = np.random.random((n_agents, 1)) g = igraph.Graph() for i in range(0, n_agents): g.add_vertex(i) vs = g.vs agents = [] for i in range(0, n_agents): traits = np.zeros((14)) traits[0] = 0 # initially noone uses the reusable straw traits[1] = eatingout[i] traits[2] = envaware[i] traits[3:8] = personalities[i, :] traits[8] = wealth[i] traits[9] = lat[i] traits[10] = lon[i] traits[11] = gender[i] traits[12] = education[i] traits[13] = colddrinks[i] difflat = lat - lat[i] difflon = lon - lon[i] distsq = np.power(difflat, 2) + np.power(difflon, 2) sorted = np.argsort(distsq, axis=0) friends = sorted[1:n_friends + 1] for j in range(0, len(friends)): g.add_edge(i, int(friends[j])) curagent = Person(vs[i], 14, traits) agents.append(curagent) env = EEEnvironment(g) time = dworp.BasicTime(n_tsteps) # ensuring reproducibility by setting the seed scheduler = dworp.RandomOrderScheduler(np.random.RandomState(4587)) outname = "outputs%s.tsv" % (outstring) fhandle = open(outname, 'w') myobserver = EEObserver(fhandle) #vis_flag = args.vis and 'pygame' in sys.modules vis_flag = makevis and 'pygame' in sys.modules if vis_flag: print("vis_flag is True") else: print("vis_flag is False") # create and run one realization of the simulation observer = dworp.ChainedObserver(myobserver, ) if vis_flag: observer.append(dworp.PauseAtEndObserver(3)) pgr = PyGameRenderer(1, n_fps, n_tsteps + 1) observer.append(pgr) #with open("eatingout.tsv",'w') as f: # for i in range(0,n_agents): # f.write('%f\t%f' % (lat[i],lon[i])) # f.write('\t%f\n' % (eatingout[i])) # f.close() initeatingout = eatingout[0:] term = EETerminator(100) sim = dworp.BasicSimulation(agents, env, time, scheduler, observer, terminator=term) sim.run() fhandle.close() # eatingout, age age = np.random.randint(16, 65, 1000) with open("demog.tsv", 'w') as f: for i in range(0, n_agents): f.write('%f\t%f' % (lat[i], lon[i])) f.write('\t%f\t%f' % (wealth[i], gender[i])) f.write( '\t%d\t%d' % (agents[i].state[0], agents[i].state[agents[i].past_i])) f.write('\t%f\t%d\t%f\t%f\t%f\t%f\t%f\t%f\n' % (initeatingout[i], age[i], colddrinks[i], personalities[i, 0], personalities[i, 1], personalities[i, 2], personalities[i, 3], personalities[i, 4])) f.close() if vis_flag: filename_list = pgr.filename_list seconds_per_frame = 1.0 / n_fps frame_delay = str(int(seconds_per_frame * 100)) #command_list = ['convert', '-delay', frame_delay, '-loop', '0'] + filename_list + ['anim.gif'] command_list = ['convert', '-delay', frame_delay, '-loop', '0' ] + filename_list + ['anim%s.gif' % (outstring)] pdb.set_trace() try: # Use the "convert" command (part of ImageMagick) to build the animation subprocess.call(command_list) except: print("couldnt create the animation") pass # Earlier, we saved an image file for each frame of the animation. Now # that the animation is assembled, we can (optionally) delete those files for filename in filename_list: os.remove(filename) return lastcount = myobserver.computenumreusablestrawusers(0, agents, env) print("Last Count = %d" % (lastcount)) if lastcount == lastcountshouldbe: print("Regression test passed!") return True else: print("Regression test failed! last count should be %d" % (lastcountshouldbe)) return False
def test(self): logging.basicConfig(level=logging.WARN) outstring = "_B" outname = "outputs%s.tsv" % (outstring) fhandle = open(outname, 'w') num_agents = 5000 num_tsteps = 150 wealth = np.random.normal(100000, 20000, num_agents) offsets_lat = np.random.random((num_agents, 1)) offsets_lon = np.random.random((num_agents, 1)) lat = offsets_lon + 37.4316 # deg north lon = offsets_lat + 78.6569 # deg west SA = np.random.random((num_agents, 1)) phone = np.random.random_integers(0, 2, num_agents) g = igraph.Graph() for i in range(0, num_agents): g.add_vertex(i) vs = g.vs agents = [] for i in range(0, num_agents): traits = np.zeros((5)) traits[0] = phone[i] traits[1] = wealth[i] traits[2] = lat[i] traits[3] = lon[i] traits[4] = SA[i] difflat = lat - lat[i] difflon = lon - lon[i] distsq = np.power(difflat, 2) + np.power(difflon, 2) sorted = np.argsort(distsq, axis=0) n_friends = 5 friends = sorted[1: n_friends+1] for j in range(0,len(friends)): g.add_edge(i,int(friends[j])) curagent = Person(vs[i], 5, traits) agents.append(curagent) np.random.seed(347) makevis = True vis_flag = makevis and 'pygame' in sys.modules if vis_flag: print("vis_flag is True") else: print("vis_flag is False") # vis does not support different colors # color # # s = ["blue", "orange"] # params = SegregationParams(density, similarity, grid_size, seed, colors) # create and run one realization of the simulation observer = dworp.ChainedObserver(PhoneObserver(fhandle)) n_fps = 4 if vis_flag: observer.append(dworp.PauseAtEndObserver(3)) pgr = PyGameRenderer(1, n_fps, num_tsteps + 1) observer.append(pgr) env = PhoneEnvironment(g) time = dworp.BasicTime(num_tsteps) scheduler = dworp.RandomOrderScheduler(np.random.RandomState(4587)) term = PhoneTerminator(50) sim = dworp.BasicSimulation(agents, env, time, scheduler, observer, terminator=term) sim.run() fhandle.close() with open("demographics.tsv",'w') as f: f.write('Lat\tLon\tWealth\tSA\tPhone\n') for i in range(0,num_agents): f.write('{}\t{}\t'.format(lat[i], lon[i])) f.write('{}\t'.format(wealth[i])) f.write('{}'.format(SA[i])) if agents[i].state[0] == 0: f.write('\tNone\n') elif agents[i].state[0] == 1: f.write('\tApple\n') elif agents[i].state[0] == 2: f.write('\tAndroid\n') f.close()