Exemple #1
0
def set_up(props=None):
    """
    A func to set up run that can also be used by test code.
    """

    global resource_holders
    global entrepreneurs

    pa = init_props(MODEL_NAME, props, model_dir="capital")
    entrepreneurs = Composite("Entrepreneurs", {"color": BLUE},
                              member_creator=create_entr,
                              props=pa,
                              num_members=pa.get('num_entr', DEF_NUM_ENTR))
    resource_holders = Composite("Resource_holders", {"color": RED},
                                 member_creator=create_rholder,
                                 props=pa,
                                 num_members=pa.get('num_rholder',
                                                    DEF_NUM_RHOLDER))

    Env("neighborhood",
        height=get_prop('grid_height', DEF_HEIGHT),
        width=get_prop('grid_width', DEF_WIDTH),
        members=[resource_holders, entrepreneurs])

    return resource_holders, entrepreneurs
Exemple #2
0
def set_up(props=None):
    """
    A func to set up run that can also be used by test code.
    """
    init_props(MODEL_NAME, props)
    groups = []

    groups.append(
        Composite("value_investors", {"color": BLUE},
                  member_creator=create_value_investor,
                  num_members=get_prop("value_investors",
                                       DEF_NUM_VALUE_INVESTOR)))
    groups.append(
        Composite("trend_followers", {"color": RED},
                  member_creator=create_trend_follower,
                  num_members=get_prop("trend_followers",
                                       DEF_NUM_TREND_FOLLOWER)))
    groups.append(create_market_maker("market_maker"))
    Env("fmarket",
        members=groups,
        width=UNLIMITED,
        height=UNLIMITED,
        census=market_report,
        line_data_func=plot_asset_price)
    get_env().exclude_menu_item("scatter_plot")
Exemple #3
0
def set_up(props=None):
    """
    A func to set up run that can also be used by test code.
    """
    global population
    global optimal_occupancy
    global agents_decided

    init_props(MODEL_NAME, props)
    agents_decided = 0

    drinkers = Composite(DRINKERS, {"color": RED},
                         member_creator=create_drinker,
                         num_members=get_prop('population',
                                              DEF_POPULATION) // 2)

    non_drinkers = Composite(NON_DRINKERS, {"color": BLUE},
                             member_creator=create_non_drinker,
                             num_members=get_prop('population',
                                                  DEF_POPULATION) // 2)

    population = len(drinkers) + len(non_drinkers)
    optimal_occupancy = int(population * 0.6)

    Env("bar",
        height=get_prop('grid_height', DEF_HEIGHT),
        width=get_prop('grid_width', DEF_WIDTH),
        members=[drinkers, non_drinkers])
Exemple #4
0
def create_rholder(name, i, props=None):
    """
    Create an agent.
    """
    k_price = DEF_K_PRICE
    resources = copy.deepcopy(DEF_CAP_WANTED)
    num_resources = len(resources)

    price_list = copy.deepcopy(DEF_EACH_CAP_PRICE)
    if props is not None:
        k_price = props.get('cap_price', DEF_K_PRICE)
        for k in price_list.keys():
            price_list[k] = float("{0:.2f}".format(
                float(k_price * random.uniform(0.5, 1.5))))

    starting_cash = DEF_RHOLDER_CASH
    if props is not None:
        starting_cash = get_prop('rholder_starting_cash', DEF_RHOLDER_CASH)

    if props is not None:
        total_resources = get_prop('rholder_starting_resource_total',
                                   DEF_TOTAL_RESOURCES_RHOLDER_HAVE)
        for k in resources.keys():
            resources[k] = int(
                (total_resources * 2) * (random.random() / num_resources))

    return Agent(name + str(i),
                 action=rholder_action,
                 attrs={
                     "cash": starting_cash,
                     "resources": resources,
                     "price": price_list
                 })
Exemple #5
0
def create_central_bank(name, i):
    """
    Create the central bank to distribute the coupons
    """
    central_bank = Agent(name, action=central_bank_action)
    central_bank["percent_change"] = get_prop("percent_change", DEF_PERCENT)
    central_bank["extra_coupons"] = get_prop("extra_coupons", DEF_COUPON)
    central_bank["extra_dev"] = get_prop("extra_deviation", DEF_SIGMA)
    return central_bank
Exemple #6
0
def create_babysitter(name, i):
    """
    Create a babysitter.
    """
    babysitter = Agent(name + str(i), action=babysitter_action)
    mean_coupons = get_prop("average_coupons", DEF_COUPON)
    dev = get_prop("deviation", DEF_SIGMA)
    babysitter["goal"] = None
    babysitter['coupons'] = int(gaussian(mean_coupons, dev))
    babysitter['desired_cash'] = get_prop("desired_cash", DEF_DESIRED_CASH_BAL)
    return babysitter
Exemple #7
0
def create_trend_follower(name, i):
    """
    Create a trend follower.
    """
    average_period = get_prop("average_period", DEF_PERIODS)
    dev = get_prop("deviation_follower", DEF_SIGMA)
    trend_follower = Agent(name + str(i), action=trend_follower_action)
    trend_follower["change_period"] = gaussian(average_period, dev)

    trend_follower["capital"] = DEF_CAPITAL
    trend_follower["num_stock"] = 0
    return trend_follower
Exemple #8
0
def create_value_investor(name, i):
    """
    Create a value investor.
    """
    value_investor = Agent(name + str(i), action=value_investor_action)
    mean_price = get_prop("discount", DEF_DISCOUNT)
    dev = get_prop("deviation_investor", DEF_SIGMA)
    low_val_percentage = gaussian(mean_price, dev)
    high_val_percentage = gaussian(mean_price, dev)
    value_investor["low_price"] = DEF_REAL_VALUE * (1 - low_val_percentage)
    value_investor["high_price"] = DEF_REAL_VALUE * (1 + high_val_percentage)

    value_investor["capital"] = DEF_CAPITAL
    value_investor["num_stock"] = 0
    return value_investor
Exemple #9
0
def set_up(props=None):
    """
    A func to set up run that can also be used by test code.
    """
    init_props(MODEL_NAME, props)
    blue_group = Composite("Blues", {"color": BLUE},
                           member_creator=create_agent,
                           num_members=get_prop('num_blue', DEF_NUM_BLUE))
    red_group = Composite("Reds", {"color": RED},
                          member_creator=create_agent,
                          num_members=get_prop('num_red', DEF_NUM_RED))

    Env("env",
        height=get_prop('grid_height', DEF_HEIGHT),
        width=get_prop('grid_width', DEF_WIDTH),
        members=[blue_group, red_group])
Exemple #10
0
def set_up(props=None):
    """
    A func to set up run that can also be used by test code.
    """
    init_props(MODEL_NAME, props)

    num_members = get_prop('num_babysitter', DEF_BABYSITTER)
    co_op_members = Composite(CO_OP_MEMBERS,
                              num_members=num_members,
                              member_creator=create_babysitter)
    central_bank = Composite("central_bank",
                             num_members=1,
                             member_creator=create_central_bank)

    Env('coop_env',
        members=[co_op_members, central_bank],
        action=coop_action,
        width=UNLIMITED,
        height=UNLIMITED,
        census=coop_report,
        pop_hist_setup=initial_exchanges,
        pop_hist_func=record_exchanges,
        attrs={
            "show_special_points": CB_intervention_points,
            "special_points_name": "CB intervention points"
        })
Exemple #11
0
def create_toxin(name, i):
    """
    Create a toxin.
    """
    toxin = Agent(name + str(i), action=toxin_action)
    toxin["max_move"] = get_prop("toxin_move", DEF_TOXIN_MOVE)
    return toxin
Exemple #12
0
def set_up(props=None):
    """
    A func to set up run that can also be used by test code.
    """
    # global max_util -> not in use now
    init_props(MODEL_NAME, props, model_dir="capital")
    traders = Composite("Traders",
                        member_creator=create_trader,
                        num_members=get_prop('num_traders', DEF_NUM_TRADERS))

    nature_to_traders(traders, natures_goods)

    Env("MengerMoney",
        height=get_prop('grid_height', DEF_HEIGHT),
        width=get_prop('grid_width', DEF_WIDTH),
        members=[traders],
        attrs={"goods": natures_goods})
Exemple #13
0
def create_nutrient(name, i):
    """
    Create a nutrient.
    """
    nutrient = Agent(name + str(i), action=nutrient_action)
    nutrient["max_move"] = get_prop("nutrient_move",
                                    DEF_NUTRIENT_MOVE)
    return nutrient
Exemple #14
0
def set_up(props=None):
    """
    A func to set up run that can also be used by test code.
    """
    init_props(MODEL_NAME, props)
    blue_agents = Composite(group_names[BLUE_TEAM],
                            {"color": BLUE},
                            member_creator=create_resident,
                            num_members=get_prop('num_blue',
                                                 NUM_BLUE))
    red_agents = Composite(group_names[RED_TEAM],
                           {"color": RED},
                           member_creator=create_resident,
                           num_members=get_prop('num_red', NUM_RED))
    city = Env("A city", members=[blue_agents, red_agents],
               height=get_prop('grid_height', DEF_CITY_DIM),
               width=get_prop('grid_width', DEF_CITY_DIM))
    city.exclude_menu_item("line_graph")
Exemple #15
0
def set_up(num_dealers, props=None):  # testcase???
    """
    A func to set up run that can also be used by test code.
    """
    init_props(MODEL_NAME, props)
    group = []
    group.append(
        Composite(DEALER_GRP, {"color": BLUE},
                  member_creator=create_dealer,
                  num_members=num_dealers))
    group.append(
        Composite(BUYER_GRP, {"color": RED},
                  member_creator=create_buyer,
                  num_members=get_prop('num_buyers', DEF_NUM_RED)))

    Env("Car market",
        height=get_prop('grid_height', DEF_HEIGHT),
        width=get_prop('grid_width', DEF_WIDTH),
        members=group)
Exemple #16
0
def set_up(props=None):
    """
    A func to set up run that can also be used by test code.
    """
    global max_utility
    pa = init_props(MODEL_NAME, props, model_dir="capital")
    trader_group = Composite("trader", {"color": BLUE},
                             member_creator=create_trader,
                             props=pa,
                             num_members=get_prop('num_traders',
                                                  DEF_NUM_TRADER))
    Env("env",
        height=get_prop('grid_height', DEF_HEIGHT),
        width=get_prop('grid_width', DEF_WIDTH),
        members=[trader_group])
    for trader in trader_group:
        allocate_resources(trader_group[trader], GOODS)
        get_env().user.tell(trader_group[trader]["goods"])
    return (trader_group, max_utility)
Exemple #17
0
def set_up(props=None):
    """
    A func to set up run that can also be used by test code.
    """
    init_props(MODEL_NAME, props)

    members = []
    members.append(Composite(WOLF_GROUP,
                   attrs={"color": TAN},
                   member_creator=create_wolf,
                   num_members=get_prop('num_wolves', NUM_WOLVES)))

    members.append(Composite(SHEEP_GROUP,
                   attrs={"color": GRAY},
                   member_creator=create_sheep,
                   num_members=get_prop('num_sheep', NUM_SHEEP)))

    Env("meadow", members=members,
        height=get_prop('meadow_height', MEADOW_HEIGHT),
        width=get_prop('meadow_width', MEADOW_WIDTH))
Exemple #18
0
def create_bacterium(name, i):
    """
    Create a baterium.
    """
    bacterium = Agent(name + str(i), action=bacterium_action)
    bacterium["prev_toxicity"] = None
    bacterium["prev_nutricity"] = None
    bacterium["angle"] = None
    bacterium["max_move"] = get_prop("bacterium_move",
                                     DEF_BACTERIUM_MOVE)
    return bacterium
Exemple #19
0
def set_up(props=None):
    """
    A func to set up run that can also be used by test code.
    """
    global max_util
    pa = init_props(MODEL_NAME, props, model_dir="capital")
    cheese_group = Composite("Cheese holders", {"color": BLUE},
                             member_creator=create_cagent,
                             props=pa,
                             num_members=get_prop('num_cagents',
                                                  DEF_NUM_CAGENTS))
    wine_group = Composite("Wine holders", {"color": RED},
                           member_creator=create_wagent,
                           props=pa,
                           num_members=get_prop('num_wagents',
                                                DEF_NUM_WAGENTS))

    Env("EdgeworthBox",
        height=get_prop('grid_height', DEF_HEIGHT),
        width=get_prop('grid_width', DEF_WIDTH),
        members=[cheese_group, wine_group])

    start_cheese = 0
    start_wine = 0
    if pa is not None:
        start_cheese = get_prop('start_cheese', DEF_NUM_CHEESE)
        start_wine = get_prop('start_wine', DEF_NUM_WINE)
        max_util = max(start_cheese, start_wine)
    else:
        props_max_util = max(start_cheese, start_wine)
        max_util = max(props_max_util, DEF_MAX_UTIL)

    return (cheese_group, wine_group, max_util)
Exemple #20
0
def create_resident(name, i):
    """
    Creates agent of specified color type
    """

    if "Blue" in name:
        color = 0
        mean_tol = get_prop('mean_tol', DEF_TOLERANCE)
    else:
        color = 1
        mean_tol = -get_prop('mean_tol', DEF_TOLERANCE)
    dev = get_prop('deviation', DEF_SIGMA)
    this_tolerance = get_tolerance(mean_tol,
                                   dev)
    return Agent(name + str(i),
                 action=seg_agent_action,
                 attrs={TOLERANCE: this_tolerance,
                        COLOR: color, "hood_changed": True,
                        "just_moved": False,
                        "hood_size": get_prop('hood_size',
                                              DEF_HOOD_SIZE)
                        }, )
Exemple #21
0
def set_up(props=None):
    """
    A func to set up run that can also be used by test code.
    """
    init_props(MODEL_NAME, props)

    toxins = Composite(TOXINS, {"color": RED},
                       member_creator=create_toxin,
                       num_members=get_prop('num_toxins', NUM_TOXINS))

    nutrients = Composite(NUTRIENTS, {"color": GREEN},
                          member_creator=create_nutrient,
                          num_members=get_prop('num_nutrients', NUM_TOXINS))

    bacteria = Composite("Bacteria", {"color": BLUE},
                         member_creator=create_bacterium,
                         num_members=get_prop('num_toxins',
                                              DEF_NUM_BACT))

    Env("Petrie dish",
        height=get_prop('grid_height', DEF_HEIGHT),
        width=get_prop('grid_width', DEF_WIDTH),
        members=[toxins, nutrients, bacteria])
Exemple #22
0
def set_up(props=None):
    """
    A func to set up run that can also be used by test code.
    """
    init_props(MODEL_NAME, props)

    forest_height = get_prop('grid_height', DEF_DIM)
    forest_width = get_prop('grid_width', DEF_DIM)
    forest_density = get_prop('density', DEF_DENSITY)
    tree_cnt = int(forest_height * forest_width * forest_density)
    groups = []
    groups.append(
        Composite(HEALTHY, {
            "color": GREEN,
            "marker": TREE
        },
                  member_creator=plant_tree,
                  num_members=tree_cnt))
    groups.append(Composite(NEW_FIRE, {"color": TOMATO, "marker": TREE}))
    groups.append(Composite(ON_FIRE, {"color": RED, "marker": TREE}))
    groups.append(Composite(BURNED_OUT, {"color": BLACK, "marker": TREE}))
    groups.append(Composite(NEW_GROWTH, {
        "color": SPRINGGREEN,
        "marker": TREE
    }))

    Env("Forest", height=forest_height, width=forest_width, members=groups)

    global group_map
    group_map = {
        HE: groups[HE],
        NF: groups[NF],
        OF: groups[OF],
        BO: groups[BO],
        NG: groups[NG]
    }
Exemple #23
0
def create_entr(name, i, props=None):
    """
    Create an agent.
    """
    starting_cash = DEF_ENTR_CASH
    if props is not None:
        starting_cash = get_prop('entr_starting_cash', DEF_ENTR_CASH)

    resources = copy.deepcopy(DEF_CAP_WANTED)
    if props is not None:
        total_resources = get_prop('entr_want_resource_total',
                                   DEF_TOTAL_RESOURCES_ENTR_WANT)
        num_resources = len(resources)
        for k in resources.keys():
            resources[k] = int(
                (total_resources * 2) * (random.random() / num_resources))

    return Agent(name + str(i),
                 action=entr_action,
                 attrs={
                     "cash": starting_cash,
                     "wants": resources,
                     "have": {}
                 })
Exemple #24
0
 def set_menu_excludes(self):
     if not get_prop('use_line', True):
         self.exclude_menu_item("line_graph")
     if not get_prop('use_scatter', True):
         self.exclude_menu_item("scatter_plot")
Exemple #25
0
 def test_get_prop_no_pa(self):
     """
     No prop args set up... can we still get prop ok?
     """
     prop_val = get_prop("key", "default")
     self.assertEqual(prop_val, "default")