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")
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 ===========")
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
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) })