示例#1
0
def create_agent_66_experiment_runner(num_dcs, num_customers, dcs_per_customer,
                                      demand_mean, demand_var, num_commodities,
                                      orders_per_day, num_steps):
    physical_network = PhysicalNetwork(
        num_dcs,
        num_customers,
        dcs_per_customer,
        demand_mean,
        demand_var,
        num_commodities,
    )
    order_generator = ActualOrderGenerator(physical_network, orders_per_day)
    generator = DirichletInventoryGenerator(physical_network)

    environment_parameters = EnvironmentParameters(physical_network,
                                                   order_generator, generator,
                                                   num_steps)

    env = ShippingFacilityEnvironment(environment_parameters)
    agent = AgentHighest(env)

    return ExperimentRunner(order_generator,
                            generator,
                            agent,
                            env,
                            experiment_name="randomvalid_validation")
示例#2
0
def build_network_flow_env_parameters(environment_config, episode_length,
                                      order_gen: str):
    physical_network = PhysicalNetwork(
        num_dcs=environment_config['num_dcs'],
        num_customers=environment_config['num_customers'],
        dcs_per_customer=environment_config['dcs_per_customer'],
        demand_mean=environment_config['demand_mean'],
        demand_var=environment_config['demand_var'],
        big_m_factor=environment_config['big_m_factor'],
        num_commodities=environment_config['num_commodities'],
    )

    if order_gen == 'original':  # The original is independent means for each product customer.
        order_generator = ActualOrderGenerator(
            physical_network, environment_config['orders_per_day'])
    elif order_gen == 'biased':  # biased is more skewed and there's correlations in products.
        order_generator = BiasedOrderGenerator(  # todo make this parameterized with a factory or something.
            physical_network, environment_config['orders_per_day'])
    else:
        raise NotImplementedError("alternatives are original and biased")

    generator = DirichletInventoryGenerator(physical_network)

    environment_parameters = EnvironmentParameters(physical_network,
                                                   order_generator, generator,
                                                   episode_length)

    return environment_parameters
def run_with_params(num_dcs, num_customers, dcs_per_customer, demand_mean,
                    demand_var, num_commodities, orders_per_day, num_episodes):
    physical_network = PhysicalNetwork(num_dcs, num_customers,
                                       dcs_per_customer, demand_mean,
                                       demand_var, num_commodities)
    # order_generator = NaiveOrderGenerator(num_dcs, num_customers, orders_per_day)
    order_generator = ActualOrderGenerator(physical_network, orders_per_day)
    generator = NaiveInventoryGenerator()
    environment_parameters = EnvironmentParameters(physical_network,
                                                   order_generator, generator,
                                                   num_episodes)

    env = ShippingFacilityEnvironment(environment_parameters)
    agent = RandomAgent(env.action_space)

    obs = env.reset()
    reward = 0
    done = False
    print("=========== starting episode loop ===========")
    print("Initial environment: ")
    env.render()
    while not done:
        action = agent.get_action(obs, reward, done)
        #print(f"Agent is taking action: {action}")
        # the agent observes the first state and chooses an action
        # environment steps with the agent's action and returns new state and reward
        obs, reward, done, info = env.step(action)
        #print(f"Got reward {reward} done {done}")

        # Render the current state of the environment
        env.render()

        if done:
            print("===========Environment says we are DONE ===========")
示例#4
0
def run_with_params(num_dcs, num_customers, dcs_per_customer, demand_mean,
                    demand_var, num_commodities, orders_per_day, num_steps):
    physical_network = PhysicalNetwork(
        num_dcs,
        num_customers,
        dcs_per_customer,
        demand_mean,
        demand_var,
        num_commodities,
    )
    # order_generator = NaiveOrderGenerator(num_dcs, num_customers, orders_per_day)
    order_generator = ActualOrderGenerator(physical_network, orders_per_day)
    generator = DirichletInventoryGenerator(physical_network)
    environment_parameters = EnvironmentParameters(physical_network,
                                                   order_generator, generator,
                                                   num_steps)

    env = ShippingFacilityEnvironment(environment_parameters)
    agent = RandomAgent(env)

    obs = env.reset()
    reward = 0
    done = False
    print("=========== starting episode loop ===========")
    print("Initial environment: ")
    env.render()
    actions = []
    episode_rewards = []
    #demands_per_k = np.zeros((num_commodities,num_steps))
    #inventory_at_t = np.zeros((num_commodities,num_steps)) #todo llenar estos eventualmente
    while not done:
        action = agent.act(obs, reward, done)

        # print(f"Agent is taking action: {action}")
        # the agent observes the first state and chooses an action
        # environment steps with the agent's action and returns new state and reward
        obs, reward, done, info = env.step(action)
        # print(f"Got reward {reward} done {done}")

        # Render the current state of the environment
        env.render()
        actions.append(action)
        episode_rewards.append(reward)

        if done:
            print("===========Environment says we are DONE ===========")

    return actions, episode_rewards
示例#5
0
from shipping_allocation.envs.network_flow_env import EnvironmentParameters, NaiveOrderGenerator, NaiveInventoryGenerator
from gym.envs.registration import register

from network.PhysicalNetwork import PhysicalNetwork

register(id='shipping-v0',
         entry_point='shipping_allocation.envs:ShippingFacilityEnvironment',
         kwargs={
             'environment_parameters':
             EnvironmentParameters(PhysicalNetwork(5, 5, 2, 100, 20),
                                   NaiveOrderGenerator(5, 5, 2),
                                   NaiveInventoryGenerator(), 5)
         })