Esempio n. 1
0
def main(parameters):
    simulation = Simulation(rounds=parameters['rounds'], processes=1)
    simulation.declare_round_endowment(resource='adult',
                                       units=1,
                                       product='labor')
    simulation.declare_perishable(good='labor')

    simulation.aggregate('household',
                         possessions=['money', 'GOOD'],
                         variables=['current_utiliy'])
    simulation.panel('firm',
                     possessions=['money', 'GOOD'],
                     variables=['price', 'inventory'])

    firms = simulation.build_agents(Firm,
                                    'firm',
                                    number=parameters['num_firms'])
    households = simulation.build_agents(Household,
                                         'household',
                                         number=1,
                                         parameters=parameters)

    for r in simulation.next_round():
        households.do('sell_labor')
        firms.do('buy_labor')
        firms.do('production')
        firms.do('panel')
        firms.do('quotes')
        households.do('buy_goods')
        firms.do('sell_goods')
        households.do('aggregate')
        households.do('consumption')
        firms.do('adjust_price')

    simulation.graphs()
Esempio n. 2
0
def main(simulation_parameters):
    simulation = Simulation(rounds=simulation_parameters['rounds'])
    action_list = [
        ('firm', 'one'), ('household', 'two'), ('all', 'three')('household',
                                                                'panel')
    ]  # this instructs ABCE to save panel data as declared below
    simulation.add_action_list(action_list)

    simulation.declare_round_endowment(resource='labor_endowment',
                                       units=1,
                                       product='labor')
    simulation.declare_perishable(good='labor')

    simulation.panel(
        'household',
        possessions=['good1', 'good2'
                     ],  # put a list of household possessions to track here
        variables=['utility'
                   ])  # put a list of household possessions to track here

    simulation.build_agents(Firm,
                            'firm',
                            number=simulation_parameters['firms'],
                            parameters=simulation_parameters)
    simulation.build_agents(Household,
                            'household',
                            number=simulation_parameters['households'],
                            parameters=simulation_parameters)

    simulation.run()
    simulation.graphs()
Esempio n. 3
0
def main():
    """ Demonstration of the simulation.advance_round function, which can
    take arbitrary values """
    simulation = Simulation()
    agents = simulation.build_agents(Agent, 'agent', number=1)

    weekday = 0
    for year in range(2000, 2010):
        for month in range(12):
            for day in range(30):
                simulation.advance_round((year, month, day))
                weekday = (weekday + 1) % 7
                print(weekday)
                if weekday == 3:
                    agents.wednessday()
                if day == 1:
                    agents.first()
                if month == 12 and day == 31:
                    agents.newyearseve()
                if day <= 7 and weekday == 5:
                    agents.firstfriday()
                if day == 15:
                    agents.fiveteens()
        agents.panel_log(possessions=['money'])
        agents.agg_log(possessions=['labor'])
    simulation.finalize()
Esempio n. 4
0
def main(parameters):
    simulation = Simulation(processes=1)
    simulation.declare_round_endowment(resource='adult',
                                       units=1,
                                       product='labor')
    simulation.declare_perishable(good='labor')

    firms = simulation.build_agents(Firm,
                                    'firm',
                                    number=parameters['num_firms'])
    households = simulation.build_agents(Household,
                                         'household',
                                         number=1,
                                         parameters=parameters)

    try:
        for rnd in range(parameters['rounds']):
            simulation.advance_round(rnd)
            households.sell_labor()
            firms.buy_labor()
            firms.production()
            firms.panel_log(possessions=['money', 'GOOD'],
                            variables=['price', 'inventory'])
            firms.quotes()
            households.buy_goods()
            firms.sell_goods()
            households.agg_log(possessions=['money', 'GOOD'],
                               variables=['current_utiliy'])
            households.consumption()
            firms.adjust_price()
    except Exception as e:
        print(e)
Esempio n. 5
0
def main():
    for simulation_parameters in read_parameters('simulation_parameters.csv'):
        w = Simulation(simulation_parameters)
        action_list = [
        ('household', 'sell_labor'),
        ('firm', 'buy_inputs'),
        ('firm', 'production'),
        ('firm', 'panel'),
        ('firm', 'sell_intermediary_goods'),
        ('household', 'buy_intermediary_goods'),
        ('household', 'panel'),
        ('household', 'consumption')
        ]
        w.add_action_list(action_list)

        w.declare_round_endowment(resource='labor_endowment', units=5, product='labor')
        w.declare_perishable(good='labor')

        w.panel('household')
        w.panel('firm')

        w.build_agents_from_file(Firm, parameters_file='agent_parameters.csv')
        w.build_agents_from_file(Household)

        w.run()
Esempio n. 6
0
def main(simulation_parameters):
        simulation = Simulation(rounds=simulation_parameters['rounds'])
        simulation.declare_round_endowment(resource='labor_endowment',
                                           units=1,
                                           product='labor')
        simulation.declare_perishable(good='labor')

        simulation.aggregate('agent', possessions=[], variables=['count'])
        simulation.panel('agent', possessions=[], variables=['idn'])

        agents = simulation.build_agents(Agent, 'agent',
                       number=simulation_parameters['agents'],
                       parameters=simulation_parameters)
        killers = simulation.build_agents(Killer, 'killer',
                       number=1,
                       parameters=simulation_parameters)
        for r in simulation.next_round():
            killers.do('kill')
            agents.do('am_I_dead')
            killers.do('send_message')
            agents.do('aggregate')
            agents.do('panel')


        simulation.graphs()
Esempio n. 7
0
def main():
    s = Simulation()

    a = s.build_agents(MyAgent, 'myagent', 10000)
    for r in range(50):
        s.advance_round(r)
        a.do("compute")
    s.finalize()
Esempio n. 8
0
def main():
    simulation_parameters = {
        'name': 'direct_optimization',
        'random_seed': None,
        'rounds': 500,
        'trade_logging': 'off',
        'num_firms': 250,
        'alpha': 0.3,
        'gamma': 0.8,
        'price_stickiness': 0.0,
        'network_weight_stickiness': 0.0,
        'wage_stickiness': 0.0,
        'dividends_percent': 0.0,
        'percentage_beneficiaries': 0.25,
        'percentage_injection': 0.25,
        'time_of_intervention': 250
    }
    s = Simulation(name=simulation_parameters['name'])

    s.declare_service('labor_endowment', 1, 'labor')

    network = create_network(simulation_parameters['num_firms'])
    network = [
        network.neighbors(neighbor)
        for neighbor in range(simulation_parameters['num_firms'])
    ]
    firms = s.build_agents(Firm,
                           'firm',
                           parameters=simulation_parameters,
                           agent_parameters=network)
    household = s.build_agents(Household,
                               'household',
                               1,
                               parameters=simulation_parameters)
    centralbank = s.build_agents(CentralBank,
                                 'centralbank',
                                 1,
                                 parameters=simulation_parameters)

    for rnd in range(simulation_parameters['rounds']):
        s.advance_round(rnd)
        (firms + household).send_demand()
        (firms + household).selling()
        (firms + household).buying()
        firms.production()
        firms.dividends()
        household.consuming()
        firms.change_weights()
        firms.stats()
        centralbank.intervention()
        household.agg_log(possessions=['money'],
                          variables=['utility', 'rationing'])
        firms.agg_log(possessions=['money'],
                      variables=[
                          'produced', 'profit', 'price', 'dead', 'inventory',
                          'rationing'
                      ])
    s.graphs()
Esempio n. 9
0
def main():
    all = [
        'buy', 'sell', 'give', 'endowment', 'loggertest',
        'productionmultifirm', 'productionfirm', 'utilityhousehold'
    ]

    for parameters in read_parameters('simulation_parameters.csv'):
        s = Simulation(parameters)
        action_list = [
            repeat([(all, 'one'), (all, 'two'), (all, 'three'),
                    (all, 'clean_up')], 60),
            #('buy', 'panel'),
            ('endowment', 'Iconsume'),
            ('productionmultifirm', 'production'),
            ('productionfirm', 'production'),
            ('utilityhousehold', 'consumption'),

            #('contractseller', 'make_offer'),
            #('contractseller', 'accept_offer'),
            #('contractseller', 'deliver_or_pay'),
            #('contractseller', 'control'),

            #('contractbuyer', 'request_offer'),
            #('contractbuyer', 'accept_offer'),
            #('contractbuyer', 'deliver_or_pay'),
            #('contractbuyer', 'control'),
            #('expiringcapital', 'go'),
            ('all', 'all_tests_completed')
        ]
        s.add_action_list(action_list)

        s.declare_round_endowment(resource='labor_endowment',
                                  units=5,
                                  product='labor')
        s.declare_round_endowment(resource='cow', units=10, product='milk')
        s.declare_perishable(good='labor')
        #s.panel('buy', variables=['price'])
        #s.declare_expiring('xcapital', 5)

        s.build_agents(Buy, 2)
        #s.build_agents(QuoteBuy, 2)
        s.build_agents(Sell, 2)
        s.build_agents(Give, 2)  # tests give and messaging
        s.build_agents(
            Endowment,
            2)  # tests declare_round_endowment and declare_perishable
        s.build_agents(LoggerTest, 1)
        s.build_agents(ProductionMultifirm, 1)
        s.build_agents(ProductionFirm, 5)
        s.build_agents(UtilityHousehold, 5)
        #s.build_agents(ContractSeller, 2)
        #s.build_agents(ContractBuyer, 2)
        #s.build_agents(ExpiringCapital, 1)
        #s.build_agents(GiveExpiringCapital, 2)
        s.build_agents(BuyExpiringCapital, 2)

        s.run()
Esempio n. 10
0
def main():
    parameters = {'name': 'name', 'rounds': 300}

    s = Simulation(rounds=parameters['rounds'], processes=8)

    myagents = s.build_agents(MyAgent, 'myagent', 50000)
    youragents = s.build_agents(YourAgent, 'youragent', 50000)
    for r in s.next_round():
        #(myagents+youragents).do('compute')
        youragents.do('s')
        myagents.do('g')
Esempio n. 11
0
def main():
    s = Simulation(processes=8)

    myagents = s.build_agents(MyAgent, 'myagent', 50000)
    youragents = s.build_agents(YourAgent, 'youragent', 50000)

    for r in range(100):
        s.advance_round(r)
        # (myagents+youragents).do('compute')
        youragents.s()
        myagents.g()
    s.finalize()
Esempio n. 12
0
def main(simulation_parameters):
    s = Simulation(rounds=simulation_parameters['rounds'])

    firms = s.build_agents(Firm, 'firm', parameters=simulation_parameters, number=1)
    market = s.build_agents(Market, 'market', parameters=simulation_parameters, number=1)
    for r in s.next_round():
        firms.do('my_production')
        firms.do('selling')
        market.do('buying')
        firms.do('adjust_price')
        firms.do('adjust_quantity')
        market.do('consumption')
Esempio n. 13
0
def main():
    parameters = {'name': 'name', 'rounds': 300}

    s = Simulation(rounds=parameters['rounds'], cores=8)
    action_list = [  # (('myagent', 'youragent'), 'compute'),
        ('youragent', 's'), ('myagent', 'g')
    ]
    s.add_action_list(action_list)

    s.build_agents(MyAgent, 50000)
    s.build_agents(YourAgent, 50000)

    s.run()
Esempio n. 14
0
def main(simulation_parameters):
    s = Simulation()

    firms = s.build_agents(Firm, 'firm', 10)
    households = s.build_agents(Household, 'household', 10)
    for r in range(int(simulation_parameters['rounds'])):
        s.advance_round(r)
        firms.panel_log(possessions=['cookies'])
        firms.quote()
        households.buying()
        firms.selling()
        households.panel_log(possessions=['cookies'])
        households.consumption()
    s.finalize()
Esempio n. 15
0
def main(simulation_parameters):
    s = Simulation(rounds=simulation_parameters['rounds'])
    s.panel('household', possessions=['cookies'])
    s.panel('firm', possessions=['cookies'])

    firms = s.build_agents(Firm, 'firm', 10)
    households = s.build_agents(Household, 'household', 10)
    for r in s.next_round():
        firms.do('production')
        firms.do('panel')
        firms.do('quote')
        households.do('buying')
        firms.do('selling')
        households.do('panel')
        households.do('consumption')
Esempio n. 16
0
def main():
    for simulation_parameters in read_parameters('simulation_parameters.csv'):
        s = Simulation(simulation_parameters)
        action_list = [('firm', 'my_production'), ('firm', 'selling'),
                       ('market', 'buying'),
                       ('firm', 'adjust_price', 'serial'),
                       ('firm', 'adjust_quantity', 'serial'),
                       ('market', 'consumption')]

        s.add_action_list(action_list)

        s.build_agents(Firm, 1)
        s.build_agents(Market, 1)

        s.run()
Esempio n. 17
0
def main(simulation_parameters):
    s = Simulation()

    firms = s.build_agents(
        Firm, 'firm', parameters=simulation_parameters, number=1)
    market = s.build_agents(
        Market, 'market', parameters=simulation_parameters, number=1)
    for r in range(simulation_parameters['rounds']):
        s.advance_round(r)
        firms.my_production()
        firms.selling()
        market.buying()
        firms.adjust_price()
        firms.adjust_quantity()
        market.consumption()
    s.finalize()
Esempio n. 18
0
def main():
    parameters = {
        'name': 'name',
        'num_rounds': 10
    }

    s = Simulation(parameters)
    action_list = [  # (('myagent', 'youragent'), 'compute'),
        ('youragent', 's'),
        ('myagent', 'g')]
    s.add_action_list(action_list)

    s.build_agents(MyAgent, 50000)
    s.build_agents(YourAgent, 50000)

    s.run(parallel=True)
Esempio n. 19
0
def main():
    for params in simulation_parameters:
        s = Simulation(params)

        s.declare_round_endowment('field', 60, 'corn')
        s.declare_round_endowment('shares', 60, 'money')

        f = s.build_agents(Firm, 'firm', 1)
        h = s.build_agents(Household, 'household', 1)
        for r in s.next_round():
            for i in range(60):
                f.do('selling')
                h.do('buying')
                h.do('checking')

        s.run()
Esempio n. 20
0
def main():
    for simulation_parameters in read_parameters('simulation_parameters.csv'):
        s = Simulation(simulation_parameters)
        action_list = [('firm', 'quote_hire'), ('labormarket', 'accepting'),
                       ('firm', 'hire'), ('firm', 'my_production'),
                       ('firm', 'selling'), ('market', 'buying'),
                       ('firm', 'adjust_price'), ('firm', 'adjust_quantity'),
                       ('market', 'consumption')]

        s.add_action_list(action_list)
        s.declare_perishable('labor')

        s.build_agents(Firm, 1)
        s.build_agents(Market, 1)
        s.build_agents(LaborMarket, 1)

        s.run()
Esempio n. 21
0
def main(simulation_parameters):
    s = Simulation(**simulation_parameters)
    s.declare_perishable('labor')

    firms = s.build_agents(Firm, 'firm', 1)
    market = s.build_agents(Market, 'market', 1)
    labormarket = s.build_agents(LaborMarket, 'labormarket', 1)
    for r in s.next_round():
        firms.do('quote_hire')
        labormarket.do('accepting')
        firms.do('hire')
        firms.do('my_production')
        firms.do('selling')
        market.do('buying')
        firms.do('adjust_price')
        firms.do('adjust_quantity')
        market.do('consumption')
Esempio n. 22
0
def main():
    for simulation_parameters in read_parameters('simulation_parameters.csv'):
        s = Simulation(simulation_parameters)
        action_list = [
            repeat([
                       ('firm', 'selling', 'parallel'),
                       ('household', 'buying'),
                       ('household', 'checking')
                       ], 60)]
        s.add_action_list(action_list)

        s.declare_round_endowment('field', 60, 'corn')
        s.declare_round_endowment('shares', 60, 'money')

        s.build_agents(Firm, 1)
        s.build_agents(Household, 1)

        s.run()
Esempio n. 23
0
def main():
    s = Simulation()
    buy = s.build_agents(Buy, group_name='buy', number=2,
                         parameters=simulation_parameters)
    sell = s.build_agents(Sell, group_name='sell', number=2,
                          parameters=simulation_parameters)

    all = buy + sell

    for r in range(simulation_parameters['num_rounds']):
        s.advance_round(r)
        for r in range(20000):
            all.one()
            all.two()
            all.three()
            all.clean_up()

        all.all_tests_completed()
Esempio n. 24
0
def main():
    s = Simulation(name='Sticky Prices Microfoundations')
    s.declare_perishable('labor')

    firms = s.build_agents(Firm, 'firm', 1)
    market = s.build_agents(Market, 'market', 1)
    labormarket = s.build_agents(LaborMarket, 'labormarket', 1)
    for r in range(20):
        s.advance_round(r)
        firms.do('quote_hire')
        labormarket.do('accepting')
        firms.do('hire')
        firms.do('my_production')
        firms.do('selling')
        market.do('buying')
        firms.do('adjust_price')
        firms.do('adjust_quantity')
        market.do('consumption')
Esempio n. 25
0
def main(simulation_parameters):
    simulation = Simulation(rounds=simulation_parameters['rounds'])

    simulation.declare_round_endowment(resource='labor_endowment',
                                       units=1,
                                       product='labor')

    simulation.declare_perishable(good='labor')

    simulation.aggregate(
        'household',
        possessions=[],  # put a list of household possessions to track here
        variables=['count'
                   ])  # put a list of household possessions to track here

    simulation.aggregate(
        'firm',
        possessions=[],  # put a list of household possessions to track here
        variables=['count'
                   ])  # put a list of household possessions to track here

    firms = simulation.build_agents(Firm,
                                    'firm',
                                    number=simulation_parameters['firms'],
                                    parameters=simulation_parameters)

    households = simulation.build_agents(
        Household,
        'household',
        number=simulation_parameters['households'],
        parameters=simulation_parameters)

    messengers = simulation.build_agents(Messenger, 'messenger', 1)

    for r in simulation.next_round():
        messengers.do('messaging')
        (firms + households).do('receive_message')
        firms.do('add_household')
        firms.do('add_firm')
        firms.do('print_id')
        households.do('print_id')
        # this instructs ABCE to save panel data as declared below
        (firms + households).do('aggregate')
    simulation.graphs()
Esempio n. 26
0
def main():
    simulation = Simulation(name="NORI Token Market Simulation v0.1")

    print(simulation)

    #	simulation.declare_round_endowment() IS THIS NECESSARY?
    suppliers = simulation.build_agents(
        Supplier, 'supplier',
        100)  # Put these in parameters.csv and use .build_agents_from_file
    simulation.build_agents(Spotbuyer, 'spotbuyer', 100)
    simulation.build_agents(Speculator, 'speculator', 1000)
    simulation.build_agents(Coinex, 'coinex', 1)

    # Create supplier_queue from 'crc_supply_sample.csv' in order returned from the code in lines 70-75, above
    # Each supplier has an associated marginal_cost and marginal_qty
    # For supplier i, if expected_price >= reserve_price,
    #	list_crc and remove from queue
    #	else evaluate the next element in list

    # LIKE THIS?
    # Make 100 suppliers
    #for supplier_number in range(100):
    #	new_supplier = {'marginal_cost': X, 'marginal_qty': Y, 'expected_price': Z}
    #	supplier_queue.append(new_supplier)

    for round in range(360):  # Assume 360 trading days per year
        simulation.advance_round(round)
        Supplier().self.list_crc(
        )  # IS THIS THE RIGHT WAY TO DO THIS? Supplier lists CRC if expected_price > marginal_cost
        spotbuyer.buy_nori()  # Spot Buyer buys NORI from Coinex
        coinex.exch_sell_nori()  # Coinex sells NORI to Spot Buyer
        spotbuyer.buy_crc()  # Spot Buyer purchases CRC
        spotbuyer.retire_crc()  # Spot Buyer (smart contract) retires CRC
        (supplier + spotbuyer()).panel_log(...)  # Log CRC trades
        speculator.trade_nori()  # Speculators trade
        supplier.sell_nori()  # Supplier sells NORI to Coinex
        speculator.sell_nori()  # Speculator sells NORI to Coinex
        coinex.exch_buy_nori()  # Coinex buys
        coinex.panel_log(...)  # Log NORI trades
        # Do we need to clear trades? If so, how?

    simulation.graphs()
    simulation.finalize()
Esempio n. 27
0
def main(simulation_parameters):

    s = Simulation(name=simulation_parameters['name'])

    s.declare_service('labor_endowment', 1, 'labor')

    network = create_network(simulation_parameters['num_firms'])
    network = [
        network.neighbors(neighbor)
        for neighbor in range(simulation_parameters['num_firms'])
    ]
    firms = s.build_agents(Firm,
                           'firm',
                           parameters=simulation_parameters,
                           agent_parameters=network)
    household = s.build_agents(Household,
                               'household',
                               1,
                               parameters=simulation_parameters)
    centralbank = s.build_agents(CentralBank,
                                 'centralbank',
                                 1,
                                 parameters=simulation_parameters)

    for rnd in range(simulation_parameters['rounds']):
        s.advance_round(rnd)
        (firms + household).send_demand()
        (firms + household).selling()
        (firms + household).buying()
        firms.production()
        firms.dividends()
        household.consuming()
        firms.change_weights()
        firms.stats()
        centralbank.intervention()
        household.agg_log(possessions=['money'],
                          variables=['utility', 'rationing'])
        firms.agg_log(possessions=['money'],
                      variables=[
                          'produced', 'profit', 'price', 'dead', 'inventory',
                          'rationing'
                      ])
    s.finalize()
Esempio n. 28
0
def main():
    for parameters in read_parameters():
        w = Simulation(parameters)
        action_list = [('household', 'sell_labor'), ('firm', 'buy_labor'),
                       ('firm', 'production'), ('firm', 'panel'),
                       ('firm', 'sell_goods'), ('household', 'buy_goods'),
                       ('household', 'panel'), ('household', 'consumption')]
        w.add_action_list(action_list)

        w.declare_round_endowment(resource='adult', units=1, product='labor')
        w.declare_perishable(good='labor')

        w.panel('household')
        w.panel('firm')

        w.build_agents(Firm, 1)
        w.build_agents(Household, 1)

        w.run()
Esempio n. 29
0
def main(simulation_parameters):
    simulation = Simulation(rounds=simulation_parameters['rounds'],
                            processes=2)

    firms = simulation.build_agents(Firm,
                                    'firm',
                                    number=simulation_parameters['firms'],
                                    parameters=simulation_parameters)
    households = simulation.build_agents(
        Household,
        'household',
        number=simulation_parameters['households'],
        parameters=simulation_parameters)

    for round in simulation.next_round():
        print('one')
        (firms + households).do('one')
        #pprint({k: str(v) for k, v in simulation.mlist.items()})
        print('two')
        (firms + households).do('two')
Esempio n. 30
0
def main(parameters):
    w = Simulation(rounds=parameters['rounds'])
    w.declare_round_endowment(resource='adult', units=1, product='labor')
    w.declare_perishable(good='labor')

    w.panel('household',
            possessions=['money', 'GOOD'],
            variables=['current_utiliy'])
    w.panel('firm', possessions=['money', 'GOOD'])

    firms = w.build_agents(Firm, 'firm', 1)
    households = w.build_agents(Household, 'household', 1)
    for r in w.next_round():
        households.do('sell_labor')
        firms.do('buy_labor')
        firms.do('production')
        firms.do('panel')
        firms.do('sell_goods')
        households.do('buy_goods')
        households.do('panel')
        households.do('consumption')