Beispiel #1
0
def main(processes, rounds):
    simulation = abce.Simulation(processes=processes)

    print('build Killer')
    killer = simulation.build_agents(Killer, 'killer', 1)
    print('build Victim')
    victims = simulation.build_agents(Victim, 'victim', rounds)
    print('build Victim loudvictim')
    loudvictims = simulation.build_agents(Victim, 'loudvictim', rounds)
    print('build AddAgent')
    balls = simulation.build_agents(Ball, 'ball', 0)

    for time in range(rounds):
        simulation.advance_round(time)
        assert len(balls) == time, len(balls)
        deads = killer.kill_silent()
        victims.delete_agents(deads)
        deads = killer.kill_loud()
        loudvictims.delete_agents(deads)
        victims.am_I_dead()
        loudvictims.am_I_dead()
        balls.create_agents(1)

    simulation.finalize()
    del simulation
Beispiel #2
0
def main(processes):
    simulation = abce.Simulation(processes=processes)

    simulation.aggregate('agent', variables=['i', 'r'], possessions=['money'])
    simulation.panel('agent', variables=['i', 'r'], possessions=['money'])

    agents = simulation.build_agents(Agent, 'agent', 10, parameters='')

    for r in range(100):
        simulation.advance_round(r)
        agents.do('go')
        agents.aggregate()
        agents.panel()
    simulation.finalize()

    if platform.system() == 'Windows':
        simulation.path = simulation.path.replace('/', '\\')

    compare('aggregate_agent.csv',
            simulation.path, 'aggregate logging test\t\t')
    compare('aggregate_agent_mean.csv',
            simulation.path, 'aggregate logging test mean\t')
    compare('aggregate_agent_std.csv',
            simulation.path, 'aggregate logging test std\t')

    compare('aggregate_log_agent.csv',
            simulation.path, 'self.log test \t\t\t')
    compare('log_agent.csv', simulation.path, 'self.log test\t\t\t\t')

    compare('aggregate_panel_agent.csv',
            simulation.path, 'aggregated panel logging test\t')
    compare('panel_agent.csv', simulation.path, 'panel logging test\t\t\t')
Beispiel #3
0
def main(processes, rounds):
    simulation = abce.Simulation(name='logging_test_friendly_names',
                                 processes=processes)

    agents = simulation.build_agents(Agent,
                                     'friendly_agent',
                                     agent_parameters=[{
                                         'name': 'A'
                                     }, {
                                         'name': 'Davoud'
                                     }, {
                                         'name': "fred"
                                     }, {
                                         'name': "F12"
                                     }])

    for rnd in range(10):
        for r in range(10):
            simulation.advance_round((r, rnd))
            agents.go()
            agents.agg_log(variables=['i', 'r'], goods=['money'])
            agents.panel_log(variables=['i', 'r'], goods=['money'])
    simulation.finalize()

    compare('aggregated_friendly_agent.csv', simulation.path,
            'aggregated logging test\t\t', processes)
    compare('aggregate_friendly_agent.csv', simulation.path,
            'aggregate logging test\t\t', processes)
    compare('panel_friendly_agent.csv', simulation.path,
            'aggregate logging test mean\t', processes)
Beispiel #4
0
def main(processes, rounds):
    sim = abce.Simulation()
    sim.advance_round(0)

    myagents = sim.build_agents(MyAgent, 'myagent', number=5)

    for id in range(5):
        assert list(myagents[id].say()) == [id], (list(myagents[id].say()),
                                                  [id])
    sim.finalize()
Beispiel #5
0
def main(processes, rounds):
    sim = abce.Simulation(processes=processes)

    myagents = sim.build_agents(MyAgent, 'myagent', number=2)

    for time in range(rounds):
        sim.time = time
        myagents.produce()

    myagents.all_tests_completed()
    sim.finalize()
Beispiel #6
0
def main(processes, rounds):
    s = abce.Simulation(processes=processes, name='unittest')

    endowment = s.build_agents(Endowment, 'endowment', 2, rounds=rounds)

    for r in range(rounds):
        s.time = r
        endowment.refresh_services('labor',
                                   derived_from='labor_endowment',
                                   units=5)
        endowment.Iconsume()
    endowment.all_tests_completed()
    s.finalize()
Beispiel #7
0
def main(processes, rounds):
    sim = abce.Simulation(name='mysim',
                          processes=processes,
                          dbplugin=CustomLogging,
                          dbpluginargs=['sqlite:///:memory:', 'sometable'])

    myagents = sim.build_agents(MyAgent, 'myagent', number=5)

    for i in range(rounds):
        sim.advance_round(i)
        myagents.write()

    sim.finalize()
Beispiel #8
0
def main(processes, rounds):
    sim = abce.Simulation(processes=processes)

    returners = sim.build_agents(Returner, 'returner', number=3)
    getters = sim.build_agents(Getter, 'getter', number=1)

    for y in range(rounds):
        sim.advance_round(y)
        ret = returners.returnit()
        getters.getit(ret)
        getters.method('a', 'b', 'c', d='d', f='f', e='e')
    sim.finalize()
    print('Returning tested \t\t\t\t\t\tOK')
    print('Calling with parameters tested \t\t\t\t\tOK')
def main(processes, rounds):
    s = abce.Simulation(processes=processes, name='unittest')

    print('build MessageA')
    messagea = s.build_agents(MessageA, 'messagea', 20)
    print('build MessageB')
    messageb = s.build_agents(MessageB, 'messageb', 20)

    for r in range(rounds):
        s.time = r
        (messagea + messageb).sendmsg()
        (messageb + messagea).recvmsg()

    print("Send_envelope and receive test:\t OK")
    s.finalize()
Beispiel #10
0
def main(processes, rounds=5):
    s = abce.Simulation(processes=processes, name='production_consumption_test')
    print('build ProductionMultifirm')
    productionmultifirm = s.build_agents(ProductionMultifirm, 'productionmultifirm', 1, rounds=rounds)
    print('build UtilityHousehold')
    utilityhousehold = s.build_agents(UtilityHousehold, 'utilityhousehold', 5, rounds=rounds)

    all_agents = utilityhousehold + productionmultifirm

    for r in range(rounds):
        s.advance_round(r)
        productionmultifirm.production()
        utilityhousehold.consumption()
        all_agents.all_tests_completed()
    s.finalize()
Beispiel #11
0
def main(processes, rounds):
    sim = abce.Simulation()
    sim.advance_round(0)

    myagents = sim.build_agents(MyAgent, 'myagent', agent_parameters=[{'name': 'me'},
                                                                      {'name': 'you'},
                                                                      {'name': 'him'},
                                                                      {'name': ('firm', 0)}])

    names = ['me', 'you', 'him', ('firm', 0)]
    for name in names:
        assert list(myagents.by_name(name).say()) == [name], (
            list(myagents.by_name(name).say()), [name])

    assert list(myagents.by_name(name).say()) == [name], (
        list(myagents.by_names(names).say()), names)
    sim.finalize()
Beispiel #12
0
def main(processes, rounds):
    simulation = abce.Simulation(name='logging_test', processes=processes)

    agents = simulation.build_agents(Agent, 'agent', 10)

    for rnd in range(100):
        simulation.advance_round(rnd)
        agents.go()
        agents.agg_log(variables=['i', 'r'], goods=['money'])
        agents.panel_log(variables=['i', 'r'], goods=['money'])
    simulation.finalize()

    compare('aggregated_agent.csv', simulation.path,
            'aggregated logging test\t\t', processes)
    compare('aggregate_agent.csv', simulation.path,
            'aggregate logging test\t\t', processes)
    compare('panel_agent.csv', simulation.path,
            'aggregate logging test mean\t', processes)
Beispiel #13
0
def main(processes, rounds):
    sim = abce.Simulation(processes=processes)

    aagents = sim.build_agents(Agent, 'aagent', number=5)
    bagents = sim.build_agents(Agent, 'bagent', number=5)

    actionA = aagents.actionA
    actionB = bagents.actionB

    for r in range(rounds):
        sim.advance_round(r)
        (aagents.actionA + aagents.actionB)()
        (aagents.actionA + bagents.actionB)()
        (aagents.actionB + bagents.actionB)()
        aagents.actionA()
        bagents.actionB()
        (actionA + actionB)()

    sim.finalize()
Beispiel #14
0
def main(processes):
    simulation = abce.Simulation(processes=processes)

    agents = simulation.build_agents(Agent, 'agent', 10, parameters='')

    for rnd in range(100):
        simulation.advance_round(rnd)
        agents.go()
        agents.agg_log(variables=['i', 'r'], possessions=['money'])
        agents.panel_log(variables=['i', 'r'], possessions=['money'])
    simulation.finalize()

    if platform.system() == 'Windows':
        simulation.path = simulation.path.replace('/', '\\')

    compare('aggregated_agent.csv', simulation.path,
            'aggregated logging test\t\t', processes)
    compare('aggregate_agent.csv', simulation.path,
            'aggregate logging test\t\t', processes)
    compare('panel_agent.csv', simulation.path,
            'aggregate logging test mean\t', processes)
Beispiel #15
0
def main(processes, rounds):
    simulation = abce.Simulation(processes=processes)

    print('build Killer')
    killer = simulation.build_agents(Killer,
                                     'killer',
                                     1,
                                     parameters={'rounds': rounds})
    print('build Victim')
    victims = simulation.build_agents(Victim,
                                      'victim',
                                      rounds,
                                      parameters={'rounds': rounds})
    print('build Victim loudvictim')
    loudvictims = simulation.build_agents(Victim,
                                          'loudvictim',
                                          rounds,
                                          parameters={'rounds': rounds})
    print('build AddAgent')
    balls = simulation.build_agents(Ball, 'ball', 0)

    for time in range(rounds):
        simulation.advance_round(time)
        assert len(balls.boing()) == time, len(balls.boing())
        deads = killer.kill_silent()
        for dead in deads:
            simulation.delete_agent(*dead)
        deads = killer.kill_loud()
        for dead in deads:
            simulation.delete_agent(*dead)
        killer.send_message()
        victims.am_I_dead()
        loudvictims.am_I_dead()
        simulation.create_agent(Ball, 'ball')

    simulation.finalize()
    del simulation
Beispiel #16
0
def main(params): 
    simulation = abce.Simulation(name='economy', processes=1)
    group_of_firms = simulation.build_agents(Firm, "firm", number=params["num_firms"], **params)
    people = simulation.build_agents(People, "people", number=1, **params)
    
    for r in range(params["num_days"]):
        simulation.time = r

        group_of_firms.panel_log(variables=['wage', 'ideal_num_workers'], goods=['workers'])
        people.create_labor()

        vacancies_list = list(group_of_firms.publish_vacencies())

        people.send_workers(vacancies_list)

        group_of_firms.production()
        group_of_firms.pay_workers()
        group_of_firms.pay_dividents()
        group_of_firms.send_prices()
        people.get_prices()
        demand = people.buy_goods()

        group_of_firms.sell_goods()
        group_of_firms.determine_bounds(demand=list(demand)[0])
        (group_of_firms + people).print_possessions()
        group_of_firms.determine_wage()
        group_of_firms.expand_or_change_price()
        (people + group_of_firms).destroy_unused_labor()
        people.consumption()
        group_of_firms.determine_profits()

    print('done')
    path = simulation.path

    simulation.finalize()
 
    return sim_data = pd.read_csv(path + "/panel_firm.csv")
Beispiel #17
0
    farm_wage_increment=0.01,
    farm_price_increment=0.01,
    num_days=1300,
    l=0.5,  # constant from CS equation
    num_days_buffer=
    10,  # number of days worth of wages a firm will keep after giving profits
    phi_upper=10,  # phi_upper * demand gives upper bound to inventory
    phi_lower=2,
    excess=
    1.1,  # if number of workers offered to work for firm exceeds 110% of ideal number, decrease wage
    wage_increment=0.01,
    price_increment=0.01,
    worker_increment=0.01,
    productivity=1,
    wage_acceptance=1)
simulation = abce.Simulation(name='economy', processes=1)
group_of_firms = simulation.build_agents(Firm,
                                         "firm",
                                         number=params["num_firms"],
                                         **params)
people = simulation.build_agents(People, "people", number=1, **params)
farms = simulation.build_agents(Farm,
                                "farm",
                                number=params["num_farms"],
                                **params)
farmers = simulation.build_agents(Farmers, "farmers", number=1, **params)


def main(params):

    for date in pd.date_range(start='1/1/1880',
import abce as abcEconomics
from bank import Bank
from household import Household

min_capital_ratio = 0.03

sim = abcEconomics.Simulation()
bank = sim.build_agents(Bank,
                        'bank',
                        number=1,
                        min_capital_ratio=min_capital_ratio,
                        reserves=11000,
                        deposits=10000)
households = sim.build_agents(Household,
                              'household',
                              number=100,
                              money=100,
                              loans=0)

for time in range(100):
    sim.advance_round(time)
    ir = bank.announce_interest_rate()
    households.request_loans(list(ir)[0])
    bank.grant_loans()
    print('bank')
    bank.print_balance_sheet()

    households.pay_interest()

    bank.print_profit_and_loss()
    bank.book_end_of_period()
Beispiel #19
0
import sys
sys.path.insert(0, '../abcFinance')
import abce
from bank import Bank
from household import Household

min_capital_ratio = 0.03

sim = abce.Simulation()
bank = sim.build_agents(Bank, 'bank', number=1, min_capital_ratio=min_capital_ratio, reserves=11000, deposits=10000)
households = sim.build_agents(Household, 'household', number=100, money=100, loans=0)


for time in range(100):
    sim.advance_round(time)
    ir = bank.announce_interest_rate()
    households.request_loans(list(ir)[0])
    bank.grant_loans()
    print('bank')
    bank.print_balance_sheet()

    households.pay_interest()

    bank.print_profit_and_loss()
    bank.book_end_of_period()
    households.book_end_of_period()
    bank.print_balance_sheet()

    print('bank')
    bank.print_balance_sheet()
    print('household 0')
Beispiel #20
0
            self.send(
                loan_request.sender, '_autobook',
                dict(debit=[('money holdings', amount)],
                     credit=[('loan liabilities', amount)],
                     text='Loan'))


class Config:
    num_banks = 2
    num_households = 3
    spending_probability = 0.3
    loan_size = 100


sim = abce.Simulation(check_unchecked_msgs=True)

banks = sim.build_agents(Bank, 'bank', Config.num_banks, config=Config)
households = sim.build_agents(Household,
                              'household',
                              Config.num_households,
                              config=Config)

Config.housebank_indices = list(households.return_housebank())
households.get_outside_money()

for r in range(4):
    sim.advance_round(r)
    households.transfer_money()
    funding_needs = list(banks.handle_transfers())
    banks.get_funding(funding_needs)
Beispiel #21
0
  # get access to each row of the dataframe
  for i in range(1, len(suppliers_df)):
    s = {
      'id': suppliers_df.iloc[i].ID,
      'county': suppliers_df.iloc[i].County_Soil,
      'marg_cost': suppliers_df.iloc[i].marginal_cost,
      'marg_qty': suppliers_df.iloc[i].marginal_qty
    }
    suppliers_list.append(s)

# Create simulation

market_price = 10.0

simulation = abce.Simulation(name="Suppliers")

suppliers = simulation.build_agents(
    Supplier_Agent,  # agent class
    'supplier',      # name of the group
    agent_parameters = suppliers_list
    # no need to pass 'number' explicitly, because abce
    # calculates the length of the list automatically
)

# Run the simulation

for r in range(3):
  simulation.advance_round(r)
  suppliers.whether_to_sell()
Beispiel #22
0
def main(processes, rounds):
    sim = abce.Simulation()

    myagent = sim.build_agents(MyAgent,
                               'myagent',
                               agent_parameters=[{
                                   'agent_parameters': 0
                               }, {
                                   'agent_parameters': 1
                               }, {
                                   'agent_parameters': 2
                               }, {
                                   'agent_parameters': 3
                               }, {
                                   'agent_parameters': 4
                               }, {
                                   'agent_parameters': 5
                               }, {
                                   'agent_parameters': 6
                               }])

    differentagent = sim.build_agents(DifferentAgent,
                                      'differentagent',
                                      agent_parameters=[{
                                          'agent_parameters': 0
                                      }, {
                                          'agent_parameters': 1
                                      }, {
                                          'agent_parameters': 2
                                      }, {
                                          'agent_parameters': 3
                                      }, {
                                          'agent_parameters': 4
                                      }, {
                                          'agent_parameters': 5
                                      }, {
                                          'agent_parameters': 6
                                      }])

    print('len', len(myagent))

    sim.advance_round(0)
    myagent.call_me_maybe()
    print('simple')

    for r in range(1, 14):
        sim.advance_round(r)
        myagent[r % 7].call_me_maybe()
        print('--')

    print('two individuals')
    for r in range(14, 28):
        sim.advance_round(r)
        (myagent[r % 7] + myagent[3]).call_me_maybe()
        print('--')

    print('one class')
    for r in range(28, 42):
        sim.advance_round(r)
        myagent[r % 7, 3].call_me_maybe()
        print('--')

    print('whole class plus individual')
    for r in range(42, 56):
        sim.advance_round(r)
        (myagent + myagent[r % 7]).call_me_maybe()
        print('--')

    print('two classes')
    for r in range(56, 70):
        sim.advance_round(r)
        (myagent + differentagent).call_me_maybe()
        print('--')

    sim.finalize()
Beispiel #23
0
def main(simulation_parameters, seed):

    np.random.seed(seed)

    # create simulation and world objects (identical in non-abce mode)
    if isleconfig.use_abce:
        simulation = abce.Simulation(processes=1, random_seed=seed)

    simulation_parameters['simulation'] = world = InsuranceSimulation(
        override_no_riskmodels, replic_ID, simulation_parameters)

    if not isleconfig.use_abce:
        simulation = world

    # create agents: insurance firms
    insurancefirms_group = simulation.build_agents(
        InsuranceFirm,
        'insurancefirm',
        parameters=simulation_parameters,
        agent_parameters=world.agent_parameters["insurancefirm"])

    if isleconfig.use_abce:
        insurancefirm_pointers = insurancefirms_group.get_pointer()
    else:
        insurancefirm_pointers = insurancefirms_group
    world.accept_agents("insurancefirm", insurancefirm_pointers,
                        insurancefirms_group)

    # create agents: reinsurance firms
    reinsurancefirms_group = simulation.build_agents(
        ReinsuranceFirm,
        'reinsurance',
        parameters=simulation_parameters,
        agent_parameters=world.agent_parameters["reinsurance"])
    if isleconfig.use_abce:
        reinsurancefirm_pointers = reinsurancefirms_group.get_pointer()
    else:
        reinsurancefirm_pointers = reinsurancefirms_group
    world.accept_agents("reinsurance", reinsurancefirm_pointers,
                        reinsurancefirms_group)

    # time iteration
    for t in range(simulation_parameters["max_time"]):

        # abce time step
        simulation.advance_round(t)

        # create new agents             # TODO: write method for this; this code block is executed almost identically 4 times
        if world.insurance_firm_market_entry(agent_type="InsuranceFirm"):
            parameters = [
                np.random.choice(world.agent_parameters["insurancefirm"])
            ]
            parameters[0]["id"] = world.get_unique_insurer_id()
            new_insurance_firm = simulation.build_agents(
                InsuranceFirm,
                'insurancefirm',
                parameters=simulation_parameters,
                agent_parameters=parameters)
            insurancefirms_group += new_insurance_firm
            if isleconfig.use_abce:
                # TODO: fix abce
                # may fail in abce because addressing individual agents may not be allowed
                # may also fail because agent methods may not be callable directly
                new_insurancefirm_pointer = [
                    new_insurance_firm[0].get_pointer()
                ]  # index 0 because this is a list with just 1 object
            else:
                new_insurancefirm_pointer = new_insurance_firm
            world.accept_agents("insurancefirm",
                                new_insurancefirm_pointer,
                                new_insurance_firm,
                                time=t)

        if world.insurance_firm_market_entry(agent_type="ReinsuranceFirm"):
            parameters = [
                np.random.choice(world.agent_parameters["reinsurance"])
            ]
            parameters[0]["id"] = world.get_unique_reinsurer_id()
            new_reinsurance_firm = simulation.build_agents(
                ReinsuranceFirm,
                'reinsurance',
                parameters=simulation_parameters,
                agent_parameters=parameters)
            reinsurancefirms_group += new_reinsurance_firm
            if isleconfig.use_abce:
                # TODO: fix abce
                # may fail in abce because addressing individual agents may not be allowed
                # may also fail because agent methods may not be callable directly
                new_reinsurancefirm_pointer = [
                    new_reinsurance_firm[0].get_pointer()
                ]  # index 0 because this is a list with just 1 object
            else:
                new_reinsurancefirm_pointer = new_reinsurance_firm
            world.accept_agents("reinsurance",
                                new_reinsurancefirm_pointer,
                                new_reinsurance_firm,
                                time=t)

        # iterate simulation
        world.iterate(t)

        # log data
        if isleconfig.use_abce:
            #insurancefirms.logme()
            #reinsurancefirms.logme()
            insurancefirms_group.agg_log(variables=['cash', 'operational'],
                                         len=['underwritten_contracts'])
            #reinsurancefirms_group.agg_log(variables=['cash'])
        else:
            world.save_data()

        #print("here")

    # finish simulation, write logs
    simulation.finalize()
Beispiel #24
0
import abce
from ball import Ball
from killer import Killer
from victim import Victim

rounds = 30

simulation = abce.Simulation(processes=4)

print('build Killer')
killer = simulation.build_agents(Killer,
                                 'killer',
                                 1,
                                 parameters={'rounds': rounds})
print('build Victim')
victims = simulation.build_agents(Victim,
                                  'victim',
                                  rounds,
                                  parameters={'rounds': rounds})
print('build Victim loudvictim')
loudvictims = simulation.build_agents(Victim,
                                      'loudvictim',
                                      rounds,
                                      parameters={'rounds': rounds})
print('build AddAgent')
balls = simulation.build_agents(Ball, 'ball', 0)

for time in range(rounds):
    simulation.advance_round(time)
    deads = killer.kill_silent()
    for dead in deads: