Ejemplo n.º 1
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)
    execution_key = int(props[EXEC_KEY].val) \
        if props is not None else CLI_EXEC_KEY
    blue_agents = Composite(group_names[BLUE_GRP_IDX], {"color": BLUE},
                            member_creator=create_resident,
                            num_members=get_prop('num_blue',
                                                 NUM_BLUE,
                                                 execution_key=execution_key),
                            group=BLUE,
                            execution_key=execution_key)
    red_agents = Composite(group_names[RED_GRP_IDX], {"color": RED},
                           member_creator=create_resident,
                           num_members=get_prop('num_red',
                                                NUM_RED,
                                                execution_key=execution_key),
                           group=RED,
                           execution_key=execution_key)
    city = Env(MODEL_NAME,
               members=[blue_agents, red_agents],
               height=get_prop('grid_height',
                               DEF_CITY_DIM,
                               execution_key=execution_key),
               width=get_prop('grid_width',
                              DEF_CITY_DIM,
                              execution_key=execution_key),
               execution_key=execution_key)
    city.exclude_menu_item("line_graph")
Ejemplo n.º 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)
    execution_key = int(props[EXEC_KEY].val) \
        if props is not None else CLI_EXEC_KEY
    calm = Composite(CALM, {"color": BLUE},
                     member_creator=create_resident,
                     num_members=get_prop('num_people',
                                          NUM_CALM_AGENTS,
                                          execution_key=execution_key),
                     group=BLUE, execution_key=execution_key)
    panic = Composite(PANIC, {"color": RED},
                      member_creator=create_resident,
                      num_members=NUM_PANIC_AGENTS,
                      group=RED, execution_key=execution_key)
    city = Env(MODEL_NAME, members=[calm, panic],
               height=get_prop('grid_height', DEF_CITY_DIM,
                               execution_key=execution_key),
               width=get_prop('grid_width', DEF_CITY_DIM,
                              execution_key=execution_key),
               execution_key=execution_key)
    set_env_attr(STATES, [CALM, PANIC], execution_key=execution_key)
    city.exclude_menu_item("line_graph")
Ejemplo n.º 3
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)
    execution_key = int(props[EXEC_KEY].val) \
        if props is not None else CLI_EXEC_KEY

    width = get_prop('grid_width', DEF_WIDTH, execution_key=execution_key)
    height = (width // 2) + (width % 2)

    groups = [
        Composite(WHITE, {"color": WHITE}, execution_key=execution_key),
        Composite(BLACK, {
            "color": BLACK,
            "marker": SQUARE
        },
                  execution_key=execution_key)
    ]

    for y in range(height):
        for x in range(width):
            groups[W] += create_wolf_cell(x, y, execution_key)
    wolfram_env = Env(MODEL_NAME,
                      action=wolfram_action,
                      height=height,
                      width=width,
                      members=groups,
                      attrs={
                          "size": 50,
                          "hide_grid_lines": True,
                          "hide_legend": True
                      },
                      random_placing=False,
                      execution_key=execution_key)

    rule_num = get_prop('rule_number', DEF_RULE, execution_key=execution_key)
    wolfram_env.set_attr("rule_num", rule_num)
    wolfram_env.set_attr("rule_dict", get_rule(rule_num))
    wolfram_env.exclude_menu_item("line_graph")
    '''
    This switch needs to happen before the environment is executed.
    Using add switch doesn't process the switch until after
    the environment is executed which breaks the model.
    '''
    top_center_agent = \
        wolfram_env.get_agent_at(width // 2, top_row(execution_key))
    switch(top_center_agent.name, WHITE, BLACK, execution_key=execution_key)

    # top row is the "previous" because we just processed it
    set_env_attr("prev_row_idx",
                 top_row(execution_key),
                 execution_key=execution_key)
Ejemplo n.º 4
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")
Ejemplo n.º 5
0
def set_up(props=None):
    """
    A func to set up run that can also be used by test code.
    """
    global groups
    global curr_row
    global rule_dict
    global rule_num

    pa = get_props(MODEL_NAME, props)
    width = pa.get('grid_width', DEF_WIDTH)
    rule_num = pa.get('rule_number', DEF_RULE)
    rule_dict = get_rule(rule_num)
    height = 0
    height = (width // 2) + (width % 2)
    white = Composite("White", {"color": WHITE})
    black = Composite("Black", {"color": BLACK, "marker": SQUARE})
    groups = [white, black]
    for y in range(height):
        for x in range(width):
            groups[W] += create_wolf_cell(x, y)
    wolfram_env = Env("Wolfram Model",
                      action=wolfram_action,
                      height=height,
                      width=width,
                      members=groups,
                      attrs={
                          "size": 50,
                          "hide_grid_lines": True,
                          "hide_legend": True
                      },
                      random_placing=False,
                      props=pa)
    wolfram_env.exclude_menu_item("line_graph")
    wolfram_env.now_switch(wolfram_env.get_agent_at(width // 2, height - 1),
                           groups[W], groups[B])
    curr_row = wolfram_env.get_row_hood(wolfram_env.height - 1)
    return (wolfram_env, groups, rule_dict)