Пример #1
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()
Пример #2
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()
Пример #3
0
def main(simulation_parameters):
    sam = Sam(
        'climate_square.sam.csv',
        inputs=[
            'col', 'ele', 'gas', 'o_g', 'oil', 'eis', 'trn', 'roe', 'lab',
            'cap'
        ],
        outputs=['col', 'ele', 'gas', 'o_g', 'oil', 'eis', 'trn', 'roe'],
        output_tax='tax',
        consumption=['col', 'ele', 'gas', 'o_g', 'oil', 'eis', 'trn', 'roe'],
        consumers=['hoh'])
    """ reads the social accounting matrix and returns coefficients of a cobb-douglas model """
    carbon_prod = defaultdict(float)
    carbon_prod.update({
        'col': 2112 * 1e-4,
        'oil': 2439.4 * 1e-4,
        'gas': 1244.3 * 1e-4
    })
    """ this is the co2 output per sector at the base year """
    print(sam.output_tax_shares())

    simulation_parameters.update({
        'name':
        'cce',
        'random_seed':
        None,
        'num_household':
        1,
        'num_firms':
        1,
        'endowment_FFcap':
        sam.endowment('cap'),
        'endowment_FFlab':
        sam.endowment('lab'),
        'final_goods':
        sam.consumption,
        'capital_types': ['cap', 'lab'],
        'dividends_percent':
        0.0,
        'production_functions':
        sam.production_functions(),
        'consumption_functions':
        sam.utility_function(),
        'output_tax_shares':
        sam.output_tax_shares(),
        'money':
        2691.2641884030372,
        'inputs':
        sam.inputs,
        'outputs':
        sam.outputs,
        'balance_of_payment':
        sam.balance_of_payment('nx', 'inv'),
        'sam':
        sam,
        'carbon_prod':
        carbon_prod,
        'wage_stickiness':
        0.5,
        'price_stickiness':
        0.5,
        'network_weight_stickiness':
        0.5
    })

    simulation = Simulation(trade_logging='group', processes=1)

    simulation.declare_service('endowment_FFcap', 1, 'cap')
    simulation.declare_service('endowment_FFlab', 1, 'lab')
    """ every round for every endowment_FFcap the owner gets one good of lab
    similar for cap"""

    firms = {
        good:
        simulation.build_agents(Firm,
                                number=simulation_parameters['num_firms'],
                                group_name=good,
                                parameters=simulation_parameters)
        for good in sam.outputs
    }
    household = simulation.build_agents(Household,
                                        'household',
                                        simulation_parameters['num_household'],
                                        parameters=simulation_parameters)
    netexport = simulation.build_agents(NetExport,
                                        'netexport',
                                        1,
                                        parameters=simulation_parameters)
    government = simulation.build_agents(Government,
                                         'government',
                                         1,
                                         parameters=simulation_parameters)

    firms_and_household = sum(firms.values()) + household
    all_firms = sum(firms.values())

    try:
        for r in range(simulation_parameters['rounds']):
            simulation.advance_round(r)
            all_firms.taxes_intervention()
            firms_and_household.send_demand()
            firms_and_household.selling()
            firms_and_household.buying()
            household.money_to_nx()
            all_firms.production()
            all_firms.carbon_taxes()
            all_firms.sales_tax()
            government.taxes_to_household()
            all_firms.international_trade()
            all_firms.invest()
            netexport.invest()
            household.sales_accounting()
            all_firms.dividends()
            all_firms.change_weights()
            all_firms.stats()
            household.agg_log(variables=['welfare'])
            (firms['col'] + firms['gas'] +
             firms['oil']).agg_log(variables=['price', 'produced', 'co2'])

            (firms['ele'] + firms['o_g'] + firms['eis'] + firms['trn'] +
             firms['roe']).agg_log(variables=['price', 'produced'])
            household.consuming()
    except Exception as e:
        print(e)

    simulation.finalize()
    # raise  # put raise for full traceback but no graphs in case of error
    iotable.to_iotable(simulation.path,
                       [99, simulation_parameters['rounds'] - 1])
    mean_price = iotable.average_price(simulation.path, 99)
    print('mean price', mean_price)
    # simulation.graphs()
    return mean_price