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()
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()
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