예제 #1
0
def test_episodes_reproducible():
    num_dcs = 5
    num_customers = 2  # scale up to 200
    num_commodities = 10  # scale up to 50
    orders_per_day = 2  # was going to be 0.1 but ran too slow.
    # orders_per_day = 2
    dcs_per_customer = 2
    demand_mean = 500
    demand_var = 150
    num_steps = 10  # 1 month
    # num_episodes = 500
    num_episodes = 1

    reproducibility.set_seeds(0)

    runner_donothing_1 = experiment_runner.create_donothing_experiment_runner(
        num_dcs, num_customers, dcs_per_customer, demand_mean, demand_var,
        num_commodities, orders_per_day, num_steps)
    runner_donothing_1.run_episodes(
        num_steps,
        num_episodes,
        orders_per_day,
        experiment_name=f"donothing_reproducible_test_1")

    reproducibility.set_seeds(0)

    runner_donothing_2 = experiment_runner.create_donothing_experiment_runner(
        num_dcs,
        num_customers,
        dcs_per_customer,
        demand_mean,
        demand_var,
        num_commodities,
        orders_per_day,
        num_steps,
    )
    runner_donothing_2.run_episodes(
        num_steps,
        num_episodes,
        orders_per_day,
        experiment_name=f"donothing_reproducible_test_2")

    a = pd.read_csv(
        "data/results/donothing_reproducible_test_1/ep_0/movement_detail_report.csv"
    )[['source_name', 'destination_name']]
    b = pd.read_csv(
        "data/results/donothing_reproducible_test_2/ep_0/movement_detail_report.csv"
    )[['source_name', 'destination_name']]
    compare = pd.concat([a, b], axis=1)
    compare.columns = ['s1', 'd1', 's2', 'd2']

    print(compare)
    print("Equality: ", a.equals(b))

    assert a.equals(b)
예제 #2
0
def run_agent_66_custom_agent():
    print("===RUNNING agent66===")
    reproducibility.set_seeds(0)
    print("Check this array to ensure reproducibility")
    print("Reproducibility agent66", np.random.randint(0, 500, size=(5, 1)))
    runner_bestfit = experiment_runner.create_agent_66_experiment_runner(
        num_dcs, num_customers, dcs_per_customer, demand_mean, demand_var,
        num_commodities, orders_per_day, num_steps)
    runner_bestfit.run_episodes(num_steps,
                                num_episodes,
                                orders_per_day,
                                experiment_name=f"z_debug_agent_highest")
    print("===DONE agent66===")
예제 #3
0
def run_bestfit():
    print("===RUNNING BESTFIT===")
    reproducibility.set_seeds(0)
    print("Check this array to ensure reproducibility")
    print("Reproducibility BESTFIT", np.random.randint(0, 500, size=(5, 1)))
    runner_bestfit = experiment_runner.create_bestfit_experiment_runner(
        num_dcs, num_customers, dcs_per_customer, demand_mean, demand_var,
        num_commodities, orders_per_day, num_steps)
    runner_bestfit.run_episodes(num_steps,
                                num_episodes,
                                orders_per_day,
                                experiment_name=f"bestfit_few_warehouses_v3")
    print("===DONE BESTFIT===")
예제 #4
0
def run_donothing():
    print("!!!RUNNING donothing!!!")
    reproducibility.set_seeds(0)
    print("Check this array to ensure reproducibility")
    print("Reproducibility donothing", np.random.randint(0, 500, size=(5, 1)))
    runner_donothing = experiment_runner.create_donothing_experiment_runner(
        num_dcs,
        num_customers,
        dcs_per_customer,
        demand_mean,
        demand_var,
        num_commodities,
        orders_per_day,
        num_steps,
    )
    runner_donothing.run_episodes(
        num_steps,
        num_episodes,
        orders_per_day,
        experiment_name=f"donotrhing_few_warehouses_v3")
    print("!!!DONE donothing!!!")
예제 #5
0
def run_random():
    print("***RUNNING RANDOM***")
    reproducibility.set_seeds(0)
    print("Check this array to ensure reproducibility")
    print("Reproducibility RANDOM", np.random.randint(0, 500, size=(5, 1)))
    runner_random = experiment_runner.create_random_experiment_runner(
        num_dcs,
        num_customers,
        dcs_per_customer,
        demand_mean,
        demand_var,
        num_commodities,
        orders_per_day,
        num_steps,
    )

    runner_random.run_episodes(num_steps,
                               num_episodes,
                               orders_per_day,
                               experiment_name=f"dumb_few_warehouses_v3")
    print("***DONE RANDOM***")
예제 #6
0
def run_dqn():
    print("!!!RUNNING DQN!!!")
    reproducibility.set_seeds(0)
    print("Check this array to ensure reproducibility")
    print("Reproducibility DQN", np.random.randint(0, 500, size=(5, 1)))
    runner_dqn = experiment_runner.create_dqn_experiment_runner(
        num_dcs,
        num_customers,
        dcs_per_customer,
        demand_mean,
        demand_var,
        num_commodities,
        orders_per_day,
        num_steps,
    )
    runner_dqn.run_episodes(num_steps,
                            num_episodes,
                            orders_per_day,
                            experiment_name=f"dqn2_few_warehouses_v3")

    runner_dqn.agent.save_weights("models/dqn2_few_warehouses_v3.h5")
    print("!!!DONE DQN!!!")