Exemple #1
0
 def _reset(self):
     self.env.reset()
     self.model = Model(
         self.env)  # warning: this breaks if env resets again
     start = self.Node(self.env._state, [], 0, False)
     frontier = PriorityQueue(key=self.eval_node(
         noisy=True))  # this is really part of the Meta Policy
     frontier.push(start)
     reward_to_state = defaultdict(lambda: -np.inf)
     best_done = None
     # Warning: state is mutable (and we mutate it!)
     self._state = self.State(frontier, reward_to_state, best_done)
     return self._state
Exemple #2
0
 def start_episode(self, state):
     self.history = Counter()
     self.model = Model(self.env)
     self.plan = iter(())  # start with no plan
    # Update plots
    model.update_plots()
    model.remove_destroyed_agents()

    # TODO: Stop after 1000 iterations
    if model.agent_count() == 0:
        model.pause()


def close(model):
    if file_handle:
        file_handle.close()


stupid_model = Model(
    "StupidModel w. population graph (stupid13)", 100, 100, tile_size=5
)
stupid_model.add_button("setup", setup)
stupid_model.add_button("step", step)
stupid_model.add_toggle_button("go", step)
stupid_model.add_controller_row()
stupid_model.add_slider("initial_bugs", 100, 10, 300)
stupid_model.add_controller_row()
stupid_model.add_slider("max_food_eat", 1.0, 0.1, 1.0)
stupid_model.add_controller_row()
stupid_model.add_slider("max_food_prod", 0.01, 0.01, 0.1)
stupid_model.histogram("grow_size", 0, 10, 5, (0, 0, 0))
stupid_model.line_chart(["current_bugs"], [(0, 0, 0)])
stupid_model.on_close(close)
run(stupid_model)
Exemple #4
0
    for tile in model.tiles:
        tile.color = (tile.info["value"], tile.info["value"], 0)
    seekers = set([Seeker() for i in range(200)])
    model.add_agents(seekers)


def step(model):
    for tile in model.tiles:
        if tile.info["value"] > 255:
            tile.info["value"] = 0
        tile.color = (tile.info["value"], tile.info["value"], 0)
    for agent in model.agents:
        agent.step(model)


def invisible(model):
    model.invisible = not model.invisible
    if model.invisible:
        for a in model.agents:
            a.size = 0
    else:
        for a in model.agents:
            a.size = 4


urban_model = Model("urban", 50, 50)
urban_model.add_button("Setup", setup)
urban_model.add_toggle_button("Go", step)
urban_model.add_button("Invisible", invisible)
run(urban_model)
    model.update_plots()
    model.remove_destroyed_agents()

    # TODO: Stop after 1000 iterations
    if model.agent_count() == 0:
        model.pause()


def close(model):
    if file_handle:
        file_handle.close()


stupid_model = Model(
    "StupidModel w. gauss distribution of sizes (stupid14)",
    100,
    100,
    tile_size=5,
)
stupid_model.add_button("setup", setup)
stupid_model.add_button("step", step)
stupid_model.add_toggle_button("go", step)
stupid_model.add_controller_row()
stupid_model.add_slider("initial_bugs", 100, 10, 300)
stupid_model.add_controller_row()
stupid_model.add_slider("max_food_eat", 1.0, 0.1, 1.0)
stupid_model.add_slider("max_food_prod", 0.01, 0.01, 0.1)
stupid_model.add_controller_row()
stupid_model.add_slider("initialBugSizeMean", 1, 0, 10)
stupid_model.add_slider("initialBugSizeSD", 5, 0, 10)
stupid_model.histogram("grow_size", 0, 10, 5, (0, 0, 0))
stupid_model.line_chart(["current_bugs"], [(0, 0, 0)])
from agents import Model, Agent, run

epidemic_model = Model("Epidemimodel", 100, 100)

epidemic_model.add_agent(Agent())

run(epidemic_model)
            other.update_visual()
        self.util = self.utility()


def setup(model):
    model.reset()
    model.clear_plots()
    model.total_util = 0
    model.movespeed = 0.2
    people = set([Person() for i in range(20)])
    model.add_agents(people)


def step(model):
    model.total_util = 0
    for a in model.agents:
        a.step(model)
    model.update_plots()
    model.remove_destroyed_agents()


bnb_model = Model("Bread & butter economy", 50, 50)
bnb_model.add_button("Setup", setup)
bnb_model.add_button("Step", step)
bnb_model.add_button("Go", step, toggle=True)
bnb_model.add_controller_row()
bnb_model.add_slider("movespeed", 0.1, 0.1, 1)
bnb_model.line_chart(["total_util"], [(0, 0, 0)])
bnb_model.agent_line_chart("util")
run(bnb_model)
    # Food production
    for tile in model.tiles:
        food_prod = random.uniform(0, model.max_food_prod)
        tile.info["food"] += food_prod
        c = min(255, math.floor(tile.info["food"] * 255))
        tile.color = (c, c, c)

    # Move all agents
    for agent in model.agents:
        agent.step(model)

    # Update plots
    model.update_plots()


stupid_model = Model("StupidModel w. histograms (stupid06)",
                     100,
                     100,
                     tile_size=5)
stupid_model.add_button("setup", setup)
stupid_model.add_button("step", step)
stupid_model.add_toggle_button("go", step)
stupid_model.add_controller_row()
stupid_model.add_slider("initial_bugs", 100, 10, 300)
stupid_model.add_controller_row()
stupid_model.add_slider("max_food_eat", 1.0, 0.1, 1.0)
stupid_model.add_controller_row()
stupid_model.add_slider("max_food_prod", 0.01, 0.01, 0.1)
stupid_model.histogram("grow_size", 0, 10, 5, (0, 0, 0))
run(stupid_model)
Exemple #9
0
def step(model):
    # Food production
    for tile in model.tiles:
        food_prod = random.uniform(0, model.max_food_prod)
        tile.info["food"] += food_prod
        c = min(255, math.floor(tile.info["food"] * 255))
        tile.color = (c, c, c)

    # Move all agents
    for agent in model.agents:
        agent.step(model)


stupid_model = Model("StupidModel w. parameters and displays (stupid05)",
                     100,
                     100,
                     tile_size=5)
stupid_model.add_button("setup", setup)
stupid_model.add_button("step", step)
stupid_model.add_toggle_button("go", step)
stupid_model.add_controller_row()
stupid_model.add_slider(
    "initial_bugs",
    100,
    10,
    300,
)
stupid_model.add_controller_row()
stupid_model.add_slider("max_food_eat", 1.0, 0.1, 1.0)
stupid_model.add_controller_row()
stupid_model.add_slider("max_food_prod", 0.01, 0.01, 0.1)
Exemple #10
0
    # Initialize tiles
    for tile in model.tiles:
        tile.info["food"] = 0.0
        tile.color = (0, 0, 0)


def step(model):
    # Food production
    for tile in model.tiles:
        food_prod = random.uniform(0, model.max_food_prod)
        tile.info["food"] += food_prod
        c = min(255, math.floor(tile.info["food"] * 255))
        tile.color = (c, c, c)

    # Move all agents
    for agent in model.agents:
        agent.step(model)


stupid_model = Model(
    "StupidModel w. habitat cells and resources (stupid03)",
    100,
    100,
    tile_size=5,
)
stupid_model.add_button("setup", setup)
stupid_model.add_button("step", step)
stupid_model.add_toggle_button("go", step)
run(stupid_model)
Exemple #11
0
        # Jump there
        if new_tile is not None:
            self.jump_to_tile(new_tile)

        # Does nothing, if all tiles are occupied

    def step(self, model):
        self.move()


def setup(model):
    model.reset()
    model.initial_bugs = 100

    # Create and add agents
    for i in range(int(model.initial_bugs)):
        model.add_agent(Bug())


def step(model):
    # Move all agents
    for agent in model.agents:
        agent.step(model)


stupid_model = Model("Basic StupidModel (stupid01)", 100, 100, tile_size=5)
stupid_model.add_button("setup", setup)
stupid_model.add_button("step", step)
stupid_model.add_toggle_button("go", step)
run(stupid_model)
    model.update_plots()
    model.remove_destroyed_agents()

    # TODO: Stop after 1000 iterations
    if model.agent_count() == 0:
        model.pause()


def close(model):
    if file_handle:
        file_handle.close()


stupid_model = Model(
    "StupidModel w. mortality and reproduction (stupid12)",
    100,
    100,
    tile_size=5,
)
stupid_model.add_button("setup", setup)
stupid_model.add_button("step", step)
stupid_model.add_toggle_button("go", step)
stupid_model.add_controller_row()
stupid_model.add_slider("initial_bugs", 100, 10, 300)
stupid_model.add_controller_row()
stupid_model.add_slider("max_food_eat", 1.0, 0.1, 1.0)
stupid_model.add_controller_row()
stupid_model.add_slider("max_food_prod", 0.01, 0.01, 0.1)
stupid_model.histogram("grow_size", 0, 10, 5, (0, 0, 0))
stupid_model.on_close(close)
run(stupid_model)
    model.remove_destroyed_agents()

    # TODO: Stop after 1000 iterations
    if model.agent_count() == 0:
        model.pause()


def close(model):
    if file_handle:
        file_handle.close()


stupid_model = Model(
    "StupidModel - reading habitat data from file (stupid15)",
    100,
    100,
    tile_size=3,
    cell_data_file="stupid.cell",
)
stupid_model.add_button("setup", setup)
stupid_model.add_button("step", step)
stupid_model.add_toggle_button("go", step)
stupid_model.add_controller_row()
stupid_model.add_slider("initial_bugs", 100, 10, 300)
stupid_model.add_controller_row()
stupid_model.add_slider("max_food_eat", 1.0, 0.1, 1.0)
stupid_model.add_controller_row()
stupid_model.add_slider("initialBugSizeMean", 1, 0, 10)
stupid_model.add_slider("initialBugSizeSD", 5, 0, 10)
stupid_model.histogram("grow_size", 0, 10, 5, (0, 0, 0))
stupid_model.line_chart(["current_bugs"], [(0, 0, 0)])
    model.remove_destroyed_agents()

    # TODO: Stop after 1000 iterations
    if model.agent_count() == 0:
        model.pause()


def close(model):
    if file_handle:
        file_handle.close()


stupid_model = Model(
    "StupidModel w. multiple agent types (stupid16)",
    100,
    100,
    tile_size=3,
    cell_data_file="stupid.cell",
)
stupid_model.add_button("setup", setup)
stupid_model.add_button("step", step)
stupid_model.add_toggle_button("go", step)
stupid_model.add_controller_row()
stupid_model.add_slider("initial_bugs", 100, 10, 300)
stupid_model.add_controller_row()
stupid_model.add_slider("max_food_eat", 0.1, 0.1, 1.0)
stupid_model.add_controller_row()
stupid_model.add_slider("initialBugSizeMean", 1, 0, 10)
stupid_model.add_slider("initialBugSizeSD", 5, 0, 10)
stupid_model.histogram("grow_size", 0, 10, 5, (0, 0, 0))
stupid_model.line_chart(["current_bugs"], [(0, 0, 0)])
Exemple #15
0
 def start_episode(self, state):
     self.history = Counter()
     self.model = Model(self.env)
Exemple #16
0
    # Food production
    for tile in model.tiles:
        food_prod = random.uniform(0, model.max_food_prod)
        tile.info["food"] += food_prod
        c = min(255, math.floor(tile.info["food"] * 255))
        tile.color = (c, c, c)

    # Move all agents
    for agent in model.agents:
        agent.step(model)

    # Update plots
    model.update_plots()


stupid_model = Model("StupidModel w. stop condition (stupid07)",
                     100,
                     100,
                     tile_size=5)
stupid_model.add_button("setup", setup)
stupid_model.add_button("step", step)
stupid_model.add_toggle_button("go", step)
stupid_model.add_controller_row()
stupid_model.add_slider("initial_bugs", 100, 10, 300)
stupid_model.add_controller_row()
stupid_model.add_slider("max_food_eat", 1.0, 0.1, 1.0)
stupid_model.add_controller_row()
stupid_model.add_slider("max_food_prod", 0.01, 0.01, 0.1)
stupid_model.histogram("grow_size", 0, 10, 5, (0, 0, 0))
run(stupid_model)
Exemple #17
0
from random import randint
from agents import Model, Agent, AgentShape, run

miner_model = Model("MinerBots", 100, 100)


class Robot(Agent):
    def setup(self, model):
        self.color = (100, 100, 100)
        self.direction = randint(0, 359)
        self.loaded = False
        self.x = model.width / 2
        self.y = model.height / 2

    def step(self, model):
        if self.loaded:
            self.point_towards(model.width / 2, model.height / 2)
        else:
            self.direction += randint(0, 20) - 10
        self.forward()
        self.speed = model.speed_factor
        t = self.current_tile()
        if t.info["has_mineral"] and not self.loaded:
            t.info["has_mineral"] = False
            t.color = (200, 100, 0)
            self.color = (100, 100, 255)
            self.loaded = True


class Homebase(Agent):
    def setup(self, model):

def setup(model):
    model.reset()
    model.clear_plots()
    model.total_util = 0
    model.BNP = 0
    people = set([Person() for i in range(20)])
    model.add_agents(people)


def step(model):
    model.BNP = 0
    for a in model.agents:
        a.step(model)
        model.BNP += a.utility()
    model.update_plots()
    model.remove_destroyed_agents()


bnb_model = Model("Bread & butter economy during pandemic", 50, 50)
bnb_model.add_button("Setup", setup)
bnb_model.add_button("Step", step)
bnb_model.add_button("Go", step, toggle=True)
bnb_model.add_controller_row()
bnb_model.add_slider("movespeed", 0.5, 0.1, 1)
bnb_model.add_checkbox("Decay")
bnb_model.line_chart(["BNP"], [(0, 0, 0)])
bnb_model.show_direction = False
run(bnb_model)
Exemple #19
0
    # Write min, average and max bug size to file
    file_handle.write(
        str(bug_min) + " " + str(bug_mean) + " " + str(bug_max) + "\n")

    # Update plots
    model.update_plots()


def close(model):
    if file_handle:
        file_handle.close()


stupid_model = Model("StupidModel w. file output (stupid08)",
                     100,
                     100,
                     tile_size=5)
stupid_model.add_button("setup", setup)
stupid_model.add_button("step", step)
stupid_model.add_toggle_button("go", step)
stupid_model.add_controller_row()
stupid_model.add_slider("initial_bugs", 100, 10, 300)
stupid_model.add_controller_row()
stupid_model.add_slider("max_food_eat", 1.0, 0.1, 1.0)
stupid_model.add_controller_row()
stupid_model.add_slider("max_food_prod", 0.01, 0.01, 0.1)
stupid_model.histogram("grow_size", 0, 10, 5, (0, 0, 0))
stupid_model.on_close(close)
run(stupid_model)
Exemple #20
0
        self.size_to_color()

    def step(self, model):
        self.grow()
        self.move()


def setup(model):
    model.reset()
    model.initial_bugs = 100

    # Create and add agents
    for i in range(int(model.initial_bugs)):
        model.add_agent(Bug())


def step(model):
    # Move all agents
    for agent in model.agents:
        agent.step(model)


stupid_model = Model("StupidModel w. Bug Growth (stupid02)",
                     100,
                     100,
                     tile_size=5)
stupid_model.add_button("setup", setup)
stupid_model.add_button("step", step)
stupid_model.add_toggle_button("go", step)
run(stupid_model)