Beispiel #1
0
def main():
    from complex_systems.dygraph import DyGraph
    import networkx as nx
    import pylab as plt

    G = DyGraph(time_stop=400.0, time_step=5.0)
    G.generate_mobility_levy_walk(
        alpha=0.9,
        beta=0.9,
        size_max=1000,
        f_min=1,
        f_max=100,
        s_min=1,
        s_max=100.0,
        b_c=2,
        radius=200.0,
        nb_node=2,
        velocity=float(1.0 / 60),
    )
    time_step = 10.0
    graph = G.get_graph(time_step)
    i = 1
    for g in G:
        print "print graph of the slice ", g.graph['slice_time']
        pos = nx.get_node_attributes(g, 'pos')
        plt.figure()
        plt.title('Time = ' + str(g.graph['slice_time'] * 5.0) + ' seconds')
        limits = plt.axis('off')
        plt.draw()
        nx.draw(g, pos=pos, with_labels=False, node_size=20)
        filename = 'graph_' + str("%04d" % i) + '.jpg'
        plt.savefig(filename)
        i += 1
def main():
    from complex_systems.dygraph import DyGraph
    import networkx as nx
    import pylab as plt

    G = DyGraph(time_stop=400.0, time_step=5.0)
    G.generate_mobility_levy_walk(
        alpha=0.9,
        beta=0.9,
        size_max=1000,
        f_min=1,
        f_max=100,
        s_min=1,
        s_max=100.0,
        b_c=2,
        radius=200.0,
        nb_node=2,
        velocity=float(1.0 / 60),
    )
    time_step = 10.0
    graph = G.get_graph(time_step)
    i = 1
    for g in G:
        print "print graph of the slice ", g.graph["slice_time"]
        pos = nx.get_node_attributes(g, "pos")
        plt.figure()
        plt.title("Time = " + str(g.graph["slice_time"] * 5.0) + " seconds")
        limits = plt.axis("off")
        plt.draw()
        nx.draw(g, pos=pos, with_labels=False, node_size=20)
        filename = "graph_" + str("%04d" % i) + ".jpg"
        plt.savefig(filename)
        i += 1
Beispiel #3
0
def main():
    from complex_systems.dygraph import DyGraph
    from complex_systems.pgg import PublicGoodGames
    from complex_systems.quasi_unit_disk_graph import gen_quasi_unit_disk_weight
    from complex_systems.quasi_unit_disk_graph import remove_edges_from_graph
    import networkx as nx
    import pylab as plt

    outer_radius = 75
    inner_radius = 40
    alpha_quasi_unit_disk = 0.9
    synergy = 8
    coop_ratio = 0.5
    noise_var = 1
    nb_node = 400
    time_step = 5.0
    G = DyGraph(time_stop=2000.0, time_step=time_step)
    G.generate_mobility_levy_walk(
        alpha=0.9,
        beta=0.9,
        size_max=1000,
        f_min=10,
        f_max=1000,
        s_min=5,
        s_max=1000.0,
        b_c=2,
        radius=200.0,
        nb_node=nb_node,
    )
    first_run = True
    resultats = []
    for g in G:
        g = gen_quasi_unit_disk_weight(G=g,
                                       outer_radius=outer_radius,
                                       inner_radius=inner_radius,
                                       alpha=alpha_quasi_unit_disk)
        g = remove_edges_from_graph(g)
        if first_run == True:
            PGG = PublicGoodGames(G=g,
                                  synergy=synergy,
                                  cooperator_ratio=coop_ratio,
                                  noise_var=noise_var)
            nb_coop = PGG.run_game(time_step)
            resultats.append(nb_coop)
            strategies = PGG.get_strategies()
            first_run = False
        else:
            PGG = PublicGoodGames(G=g,
                                  synergy=synergy,
                                  cooperator_ratio=coop_ratio,
                                  noise_var=noise_var)
            PGG.set_strategies(strategies)
            nb_coop = PGG.run_game(time_step)
            strategies = PGG.get_strategies()
            resultats.append(nb_coop)
    plt.figure()
    plt.plot(resultats, '-o')
    plt.show()
Beispiel #4
0
 def test_iter(self):
     import networkx as nx
     self.dygraph = DyGraph()
     self.dygraph.add_graph(nx.Graph(), 10.0)
     self.dygraph.add_graph(nx.Graph(), 20.0)
     self.dygraph.add_graph(nx.Graph(), 30.0)
     for g in self.dygraph:
         print g.graph['slice_time']
     self.assertEqual([10.0, 20.0, 30], self.dygraph._slice_time)
def main():
    from complex_systems.dygraph import DyGraph
    from complex_systems.pgg import PublicGoodGames
    from complex_systems.quasi_unit_disk_graph import gen_quasi_unit_disk_weight
    from complex_systems.quasi_unit_disk_graph import remove_edges_from_graph
    import networkx as nx
    import pylab as plt

    outer_radius = 75
    inner_radius = 40
    alpha_quasi_unit_disk = 0.9
    synergy = 8
    coop_ratio = 0.5
    noise_var = 1
    nb_node = 400
    time_step = 5.0
    G = DyGraph(time_stop=2000.0, time_step=time_step)
    G.generate_mobility_levy_walk(
        alpha=0.9,
        beta=0.9,
        size_max=1000,
        f_min=10,
        f_max=1000,
        s_min=5,
        s_max=1000.0,
        b_c=2,
        radius=200.0,
        nb_node=nb_node,
        )
    first_run = True
    resultats = []
    for g in G:
        g = gen_quasi_unit_disk_weight(G=g, outer_radius=outer_radius,
                inner_radius=inner_radius, alpha=alpha_quasi_unit_disk)
        g = remove_edges_from_graph(g)
        if first_run == True:
            PGG = PublicGoodGames(G=g, synergy=synergy,
                                  cooperator_ratio=coop_ratio,
                                  noise_var=noise_var)
            nb_coop = PGG.run_game(time_step)
            resultats.append(nb_coop)
            strategies = PGG.get_strategies()
            first_run = False
        else:
            PGG = PublicGoodGames(G=g, synergy=synergy,
                                  cooperator_ratio=coop_ratio,
                                  noise_var=noise_var)
            PGG.set_strategies(strategies)
            nb_coop = PGG.run_game(time_step)
            strategies = PGG.get_strategies()
            resultats.append(nb_coop)
    plt.figure()
    plt.plot(resultats, '-o')
    plt.show()
Beispiel #6
0
 def test_add_graph(self):
     import networkx as nx
     self.dygraph = DyGraph()
     timeStep = 10.0
     G = nx.Graph()
     G.add_node(1)
     G.add_node(2)
     self.dygraph.add_graph(G, timeStep)
     self.assertDictEqual(G.node,
                          self.dygraph._slices[timeStep]['graph'].node)
     self.assertEqual(
         timeStep,
         self.dygraph._slices[timeStep]['graph'].graph['slice_time'])
class test_DyGraph(unittest.TestCase):

    def setUp(self):
        self.dygraph = DyGraph()

    def test_add_graph(self):
        import networkx as nx
        self.dygraph = DyGraph()
        timeStep = 10.0 
        G = nx.Graph()
        G.add_node(1)
        G.add_node(2)
        self.dygraph.add_graph(G, timeStep)
        self.assertDictEqual(G.node,
                             self.dygraph._slices[timeStep]['graph'
                             ].node)
        self.assertEqual(timeStep,
                         self.dygraph._slices[timeStep]['graph'
                         ].graph['slice_time'])

    def test_dygraph(self):
        import numpy as N
        self.dygraph = DyGraph(time_stop=100.0, time_step=10.0)
        self.assertEqual(N.ceil(100.0 / 10.0),
                         len(self.dygraph._slices))

    def test_dygraph_with_timeline(self):
        import numpy as N
        self.dygraph = DyGraph(timeline=N.arange(0,100,10))
        self.assertEqual(N.ceil(100.0 / 10.0),
                         len(self.dygraph._slices))

    def test_iter(self):
        import networkx as nx
        self.dygraph = DyGraph()
        self.dygraph.add_graph(nx.Graph(),10.0)
        self.dygraph.add_graph(nx.Graph(),20.0)
        self.dygraph.add_graph(nx.Graph(),30.0)
        for g in self.dygraph:
            print g.graph['slice_time']
        self.assertEqual([10.0, 20.0, 30], self.dygraph._slice_time)

    def test_gen_mobility(self):
        import numpy as N
        self.dygraph = DyGraph(time_stop=100.0, time_step=10.0)
        self.dygraph.generate_mobility_levy_walk(
            alpha=0.9,
            beta=0.9,
            size_max=100,
            f_min=10,
            f_max=100,
            s_min=1,
            s_max=100,
            b_c=2,
            radius=20.0,
            nb_node=10,
            )
        self.assertEqual(N.ceil(100.0 / 10.0),
                         len(self.dygraph._slices))
Beispiel #8
0
 def test_gen_mobility(self):
     import numpy as N
     self.dygraph = DyGraph(time_stop=100.0, time_step=10.0)
     self.dygraph.generate_mobility_levy_walk(
         alpha=0.9,
         beta=0.9,
         size_max=100,
         f_min=10,
         f_max=100,
         s_min=1,
         s_max=100,
         b_c=2,
         radius=20.0,
         nb_node=10,
     )
     self.assertEqual(N.ceil(100.0 / 10.0), len(self.dygraph._slices))
 def test_iter(self):
     import networkx as nx
     self.dygraph = DyGraph()
     self.dygraph.add_graph(nx.Graph(),10.0)
     self.dygraph.add_graph(nx.Graph(),20.0)
     self.dygraph.add_graph(nx.Graph(),30.0)
     for g in self.dygraph:
         print g.graph['slice_time']
     self.assertEqual([10.0, 20.0, 30], self.dygraph._slice_time)
Beispiel #10
0
class test_DyGraph(unittest.TestCase):
    def setUp(self):
        self.dygraph = DyGraph()

    def test_add_graph(self):
        import networkx as nx
        self.dygraph = DyGraph()
        timeStep = 10.0
        G = nx.Graph()
        G.add_node(1)
        G.add_node(2)
        self.dygraph.add_graph(G, timeStep)
        self.assertDictEqual(G.node,
                             self.dygraph._slices[timeStep]['graph'].node)
        self.assertEqual(
            timeStep,
            self.dygraph._slices[timeStep]['graph'].graph['slice_time'])

    def test_dygraph(self):
        import numpy as N
        self.dygraph = DyGraph(time_stop=100.0, time_step=10.0)
        self.assertEqual(N.ceil(100.0 / 10.0), len(self.dygraph._slices))

    def test_dygraph_with_timeline(self):
        import numpy as N
        self.dygraph = DyGraph(timeline=N.arange(0, 100, 10))
        self.assertEqual(N.ceil(100.0 / 10.0), len(self.dygraph._slices))

    def test_iter(self):
        import networkx as nx
        self.dygraph = DyGraph()
        self.dygraph.add_graph(nx.Graph(), 10.0)
        self.dygraph.add_graph(nx.Graph(), 20.0)
        self.dygraph.add_graph(nx.Graph(), 30.0)
        for g in self.dygraph:
            print g.graph['slice_time']
        self.assertEqual([10.0, 20.0, 30], self.dygraph._slice_time)

    def test_gen_mobility(self):
        import numpy as N
        self.dygraph = DyGraph(time_stop=100.0, time_step=10.0)
        self.dygraph.generate_mobility_levy_walk(
            alpha=0.9,
            beta=0.9,
            size_max=100,
            f_min=10,
            f_max=100,
            s_min=1,
            s_max=100,
            b_c=2,
            radius=20.0,
            nb_node=10,
        )
        self.assertEqual(N.ceil(100.0 / 10.0), len(self.dygraph._slices))
 def test_add_graph(self):
     import networkx as nx
     self.dygraph = DyGraph()
     timeStep = 10.0 
     G = nx.Graph()
     G.add_node(1)
     G.add_node(2)
     self.dygraph.add_graph(G, timeStep)
     self.assertDictEqual(G.node,
                          self.dygraph._slices[timeStep]['graph'
                          ].node)
     self.assertEqual(timeStep,
                      self.dygraph._slices[timeStep]['graph'
                      ].graph['slice_time'])
 def test_gen_mobility(self):
     import numpy as N
     self.dygraph = DyGraph(time_stop=100.0, time_step=10.0)
     self.dygraph.generate_mobility_levy_walk(
         alpha=0.9,
         beta=0.9,
         size_max=100,
         f_min=10,
         f_max=100,
         s_min=1,
         s_max=100,
         b_c=2,
         radius=20.0,
         nb_node=10,
         )
     self.assertEqual(N.ceil(100.0 / 10.0),
                      len(self.dygraph._slices))
Beispiel #13
0
 def test_dygraph_with_timeline(self):
     import numpy as N
     self.dygraph = DyGraph(timeline=N.arange(0, 100, 10))
     self.assertEqual(N.ceil(100.0 / 10.0), len(self.dygraph._slices))
Beispiel #14
0
def main():
    from complex_systems.dygraph import DyGraph
    from complex_systems.quasi_unit_disk_graph import gen_quasi_unit_disk_weight
    from complex_systems.diffusion import Diffusion
    import networkx as nx
    import pylab as plt

    # Variables

    size_of_simulation_area = 1000.0
    inner_radius = 10
    outer_radius = 50
    number_of_node = 100
    simulation_length = 1000.0
    sample_interval = 10.0
    alpha = 0.8

    # Generate a Graph with position

    G = DyGraph(time_stop=simulation_length, time_step=sample_interval)
    G.generate_mobility_levy_walk(
        alpha=0.9,
        beta=0.9,
        size_max=size_of_simulation_area,
        f_min=10,
        f_max=1000,
        s_min=5,
        s_max=1000.0,
        b_c=2,
        radius=outer_radius,
        nb_node=number_of_node,
        )

    G.generate_weights(inner_radius=inner_radius,
                       outer_radius=outer_radius, alpha=alpha)

    slice_time_list = G.get_slice_time()
    i = 1
    for t in slice_time_list:
        if t == 0.0:
            [states, time_stamps, strategies, payoffs] = G.diffusion(t,
                    nb_steps=10, synergy=8.0,
                    cooperator_ratio=0.5)
        else:
            Gslice = G.get_graph(t)
            pos = nx.get_node_attributes(Gslice, 'pos')

            [states, time_stamps, strategies, payoffs] = G.diffusion(
                t,
                nb_steps=10,
                synergy=8.0,
                states=states,
                time_stamps=time_stamps,
                strategies=strategies,
                payoffs=payoffs,
                )
            nbcoops =  [strategy for strategy in strategies if strategy == 'C'].count()


        Gslice = G.get_graph(t)

        pos = nx.get_node_attributes(Gslice, 'pos')
        nodelist_infected = [key for (key, val) in states.iteritems()
                             if val == 'I']
        nodelist_not_infected = [key for (key, val) in
                                 states.iteritems() if val == 'S']

        plt.figure()
        nx.draw_networkx(Gslice, nodelist=nodelist_infected, pos=pos, with_labels=False, node_size=20)
        nx.draw_networkx(Gslice, nodelist=nodelist_not_infected, pos=pos, with_labels=False, node_size=20, node_color='g')
        filename = 'diffusion_' + str("%04d" % i) + '.jpg'
        plt.savefig(filename)

        i += 1

    time_stamps_list = [vals for (key, vals) in time_stamps.iteritems()]

    plt.figure()
    (n, bins, patches) = plt.hist(time_stamps_list, 50, normed=1,
                                  histtype='bar', rwidth=0.8)
    plt.show()
Beispiel #15
0
def run_simu(parameters, synergy):
    import numpy as np
    import networkx as nx
    from complex_systems.dygraph import DyGraph
    from complex_systems.pgg import PublicGoodGames
    from complex_systems.quasi_unit_disk_graph import gen_quasi_unit_disk_weight
    from complex_systems.quasi_unit_disk_graph import remove_edges_from_graph

    number_of_node = parameters['number_of_node']
    size_of_simulation_area = parameters['size_of_simulation_area']
    outer_radius = parameters['outer_radius']
    inner_radius = parameters['inner_radius']
    alpha_quasi_unit_disk = parameters['alpha_quasi_unit_disk']
    coop_ratio = parameters['initial_cooperator_ratio']
    simulation_length = parameters['simulation_length']
    sampling_interval = parameters['sampling_interval']
    alpha_levy = parameters['alpha_levy']
    noise_var = parameters['noise_variance']
    beta = parameters['beta']
    f_min = parameters['f_min']
    f_max = parameters['f_max']
    s_min = parameters['s_min']
    s_max = parameters['s_max']
    velocity = parameters['velocity']

    G = DyGraph(time_stop=simulation_length, time_step=sampling_interval)
    G.generate_mobility_levy_walk(
        alpha=alpha_levy,
        beta=beta,
        size_max=size_of_simulation_area,
        f_min=f_min,
        f_max=f_max,
        s_min=s_min,
        s_max=s_max,
        b_c=2,
        radius=outer_radius,
        nb_node=number_of_node,
        velocity=velocity,
    )

    first_run = True
    resultats = []
    for g in G:
        g = gen_quasi_unit_disk_weight(G=g,
                                       outer_radius=outer_radius,
                                       inner_radius=inner_radius,
                                       alpha=alpha_quasi_unit_disk)
        g = remove_edges_from_graph(g)
        if first_run == True:
            PGG = PublicGoodGames(G=g,
                                  synergy=synergy,
                                  cooperator_ratio=coop_ratio,
                                  noise_var=noise_var)
            nb_coop = PGG.run_game(sampling_interval)
            resultats.append(nb_coop)
            strategies = PGG.get_strategies()
            first_run = False
        else:
            PGG = PublicGoodGames(G=g,
                                  synergy=synergy,
                                  cooperator_ratio=coop_ratio,
                                  noise_var=noise_var)
            PGG.set_strategies(strategies)
            nb_coop = PGG.run_game(sampling_interval)
            strategies = PGG.get_strategies()
            resultats.append(nb_coop)

    return (synergy, nb_coop, np.mean(G.avg_degree()))
def main(parameters):
    import networkx as nx
    from complex_systems.dygraph import DyGraph
    from complex_systems.pgg_diffusion import PGG_diffusion
    from complex_systems.quasi_unit_disk_graph import gen_quasi_unit_disk_weight
    from complex_systems.quasi_unit_disk_graph import remove_edges_from_graph
    import pylab as plt
    import numpy as np
    
    nb_node = 400
    xmax = 1000
    ymax = 1000
    coop_ratio = 0.5
    synergy = 9
    nb_game_per_round = 1
    nb_def = []
    nb_coop = []
    number_of_node = parameters['number_of_node']
    nb_seeder = parameters['number_of_seeder']
    size_of_simulation_area = parameters['size_of_simulation_area']
    buffer_size = parameters['buffer_size']
    outer_radius = parameters['outer_radius']
    inner_radius = parameters['inner_radius']
    alpha_quasi_unit_disk = parameters['alpha_quasi_unit_disk']
    coop_ratio = parameters['initial_cooperator_ratio']
    simulation_length = parameters['simulation_length']
    sampling_interval = parameters['sampling_interval']
    alpha_levy = parameters['alpha_levy']
    #noise_var = parameters['noise_variance']
    noise_var = 0.1
    beta = parameters['beta']
    f_min = parameters['f_min']
    f_max = parameters['f_max']
    s_min = parameters['s_min']
    s_max = parameters['s_max']
    velocity = parameters['velocity']


    G = DyGraph(time_stop=simulation_length,
                time_step=sampling_interval)
    G.generate_mobility_levy_walk(
        alpha=alpha_levy,
        beta=beta,
        size_max=xmax,
        f_min=f_min,
        f_max=f_max,
        s_min=s_min,
        s_max=s_max,
        b_c=2,
        radius=outer_radius,
        nb_node=nb_node,
        velocity=velocity,
        )

    first_run = True
    for g in G:
        g = gen_quasi_unit_disk_weight(G=g, outer_radius=outer_radius,
                inner_radius=inner_radius, alpha=alpha_quasi_unit_disk)
        g = remove_edges_from_graph(g)
        if first_run == True:

            PGG = PGG_diffusion(G=g, synergy=synergy,
                                cooperator_ratio=coop_ratio,
                                noise_var=noise_var,
                                buffer_size=buffer_size,
                                nb_seeder=int(nb_seeder))

            PGG.run_game()
            nb_def.append(PGG.defector_counter())
            nb_coop.append(PGG.cooperator_counter())
            strategies = PGG.get_strategies()
            time_stamps = PGG.get_time_stamps()
            states = PGG.get_states()
            #sent_update = PGG.get_sent_update()
            seeder = PGG.get_seeder()
            #print time_stamps[0]
            #print sent_update
            #print strategies
            #print states
            first_run = False
        else:
            PGG = PGG_diffusion(G=g, synergy=synergy,
                                cooperator_ratio=coop_ratio,
                                buffer_size=buffer_size,
                                noise_var=noise_var)
            PGG.set_strategies(strategies)
            PGG.set_time_stamps(time_stamps)
            PGG.set_nodes_states(states)
            #PGG.set_sent_update(sent_update)
            PGG.set_seeder(seeder)
            res = PGG.run_game()
            nb_def.append(PGG.defector_counter())
            nb_coop.append(PGG.cooperator_counter())
            strategies = PGG.get_strategies()
            time_stamps = PGG.get_time_stamps()
            states = PGG.get_states()
            #print states
            #print strategies
            #print time_stamps[0]
            #sent_update = PGG.get_sent_update()
            #seeder = PGG.get_seeder()
            #print seeder
    print synergy, res, np.mean(G.avg_degree())
    plt.figure()
    plt.plot(nb_def,'b-*')
    plt.plot(nb_coop,'r-*')

    #plt.figure()
    #print np.mean([val for key, val in G.degree().iteritems()])
    #nx.draw_networkx(G, node_size=20, pos=p, with_labels = False)

    time_stamps_dist = PGG.get_distribution_time_stamps()
    x = []
    y = []
    for key,val in time_stamps_dist.iteritems():
       x.append(key)
       y.append(val)
    
    plt.figure()
    plt.bar(x,y)
    plt.show()
def run_simu(parameters, synergy):
    import numpy as np
    import networkx as nx
    from complex_systems.dygraph import DyGraph
    from complex_systems.pgg import PublicGoodGames
    from complex_systems.quasi_unit_disk_graph import gen_quasi_unit_disk_weight
    from complex_systems.quasi_unit_disk_graph import remove_edges_from_graph


    number_of_node = parameters['number_of_node']
    size_of_simulation_area = parameters['size_of_simulation_area']
    outer_radius = parameters['outer_radius']
    inner_radius = parameters['inner_radius']
    alpha_quasi_unit_disk = parameters['alpha_quasi_unit_disk']
    coop_ratio = parameters['initial_cooperator_ratio']
    simulation_length = parameters['simulation_length']
    sampling_interval = parameters['sampling_interval']
    alpha_levy = parameters['alpha_levy']
    noise_var = parameters['noise_variance']
    beta = parameters['beta']
    f_min = parameters['f_min']
    f_max = parameters['f_max']
    s_min = parameters['s_min']
    s_max = parameters['s_max']
    velocity = parameters['velocity']

    G = DyGraph(time_stop=simulation_length, time_step=sampling_interval)
    G.generate_mobility_levy_walk(
        alpha=alpha_levy,
        beta=beta,
        size_max=size_of_simulation_area,
        f_min=f_min,
        f_max=f_max,
        s_min=s_min,
        s_max=s_max,
        b_c=2,
        radius=outer_radius,
        nb_node=number_of_node,
        velocity=velocity,
        )

    first_run = True
    resultats = []
    for g in G:
        g = gen_quasi_unit_disk_weight(G=g, outer_radius=outer_radius,
                inner_radius=inner_radius, alpha=alpha_quasi_unit_disk)
        g = remove_edges_from_graph(g)
        if first_run == True:
            PGG = PublicGoodGames(G=g, synergy=synergy,
                                  cooperator_ratio=coop_ratio,
                                  noise_var=noise_var)
            nb_coop = PGG.run_game(sampling_interval)
            resultats.append(nb_coop)
            strategies = PGG.get_strategies()
            first_run = False
        else:
            PGG = PublicGoodGames(G=g, synergy=synergy,
                                  cooperator_ratio=coop_ratio,
                                  noise_var=noise_var)
            PGG.set_strategies(strategies)
            nb_coop = PGG.run_game(sampling_interval)
            strategies = PGG.get_strategies()
            resultats.append(nb_coop)

    return (synergy, nb_coop, np.mean(G.avg_degree()))
Beispiel #18
0
def main(parameters):
    import networkx as nx
    from complex_systems.dygraph import DyGraph
    from complex_systems.pgg_diffusion import PGG_diffusion
    from complex_systems.quasi_unit_disk_graph import gen_quasi_unit_disk_weight
    from complex_systems.quasi_unit_disk_graph import remove_edges_from_graph
    import pylab as plt
    import numpy as np

    nb_node = 400
    xmax = 1000
    ymax = 1000
    coop_ratio = 0.5
    synergy = 9
    nb_game_per_round = 1
    nb_def = []
    nb_coop = []
    number_of_node = parameters['number_of_node']
    nb_seeder = parameters['number_of_seeder']
    size_of_simulation_area = parameters['size_of_simulation_area']
    buffer_size = parameters['buffer_size']
    outer_radius = parameters['outer_radius']
    inner_radius = parameters['inner_radius']
    alpha_quasi_unit_disk = parameters['alpha_quasi_unit_disk']
    coop_ratio = parameters['initial_cooperator_ratio']
    simulation_length = parameters['simulation_length']
    sampling_interval = parameters['sampling_interval']
    alpha_levy = parameters['alpha_levy']
    #noise_var = parameters['noise_variance']
    noise_var = 0.1
    beta = parameters['beta']
    f_min = parameters['f_min']
    f_max = parameters['f_max']
    s_min = parameters['s_min']
    s_max = parameters['s_max']
    velocity = parameters['velocity']

    G = DyGraph(time_stop=simulation_length, time_step=sampling_interval)
    G.generate_mobility_levy_walk(
        alpha=alpha_levy,
        beta=beta,
        size_max=xmax,
        f_min=f_min,
        f_max=f_max,
        s_min=s_min,
        s_max=s_max,
        b_c=2,
        radius=outer_radius,
        nb_node=nb_node,
        velocity=velocity,
    )

    first_run = True
    for g in G:
        g = gen_quasi_unit_disk_weight(G=g,
                                       outer_radius=outer_radius,
                                       inner_radius=inner_radius,
                                       alpha=alpha_quasi_unit_disk)
        g = remove_edges_from_graph(g)
        if first_run == True:

            PGG = PGG_diffusion(G=g,
                                synergy=synergy,
                                cooperator_ratio=coop_ratio,
                                noise_var=noise_var,
                                buffer_size=buffer_size,
                                nb_seeder=int(nb_seeder))

            PGG.run_game()
            nb_def.append(PGG.defector_counter())
            nb_coop.append(PGG.cooperator_counter())
            strategies = PGG.get_strategies()
            time_stamps = PGG.get_time_stamps()
            states = PGG.get_states()
            #sent_update = PGG.get_sent_update()
            seeder = PGG.get_seeder()
            #print time_stamps[0]
            #print sent_update
            #print strategies
            #print states
            first_run = False
        else:
            PGG = PGG_diffusion(G=g,
                                synergy=synergy,
                                cooperator_ratio=coop_ratio,
                                buffer_size=buffer_size,
                                noise_var=noise_var)
            PGG.set_strategies(strategies)
            PGG.set_time_stamps(time_stamps)
            PGG.set_nodes_states(states)
            #PGG.set_sent_update(sent_update)
            PGG.set_seeder(seeder)
            res = PGG.run_game()
            nb_def.append(PGG.defector_counter())
            nb_coop.append(PGG.cooperator_counter())
            strategies = PGG.get_strategies()
            time_stamps = PGG.get_time_stamps()
            states = PGG.get_states()
            #print states
            #print strategies
            #print time_stamps[0]
            #sent_update = PGG.get_sent_update()
            #seeder = PGG.get_seeder()
            #print seeder
    print synergy, res, np.mean(G.avg_degree())
    plt.figure()
    plt.plot(nb_def, 'b-*')
    plt.plot(nb_coop, 'r-*')

    #plt.figure()
    #print np.mean([val for key, val in G.degree().iteritems()])
    #nx.draw_networkx(G, node_size=20, pos=p, with_labels = False)

    time_stamps_dist = PGG.get_distribution_time_stamps()
    x = []
    y = []
    for key, val in time_stamps_dist.iteritems():
        x.append(key)
        y.append(val)

    plt.figure()
    plt.bar(x, y)
    plt.show()
 def test_dygraph(self):
     import numpy as N
     self.dygraph = DyGraph(time_stop=100.0, time_step=10.0)
     self.assertEqual(N.ceil(100.0 / 10.0),
                      len(self.dygraph._slices))
 def test_dygraph_with_timeline(self):
     import numpy as N
     self.dygraph = DyGraph(timeline=N.arange(0,100,10))
     self.assertEqual(N.ceil(100.0 / 10.0),
                      len(self.dygraph._slices))
 def setUp(self):
     self.dygraph = DyGraph()
Beispiel #22
0
 def test_dygraph(self):
     import numpy as N
     self.dygraph = DyGraph(time_stop=100.0, time_step=10.0)
     self.assertEqual(N.ceil(100.0 / 10.0), len(self.dygraph._slices))
Beispiel #23
0
 def setUp(self):
     self.dygraph = DyGraph()