def non_convexity(params): t = 1 x = 0 confs = list(ModelConfig( gamma=1, lead_time=0, info_state_rvs=None, holding_cost=params["h"], backlogging_cost=params["b"], setup_cost=0, unit_price=0, usage_model=BinomUsageModel(n=params["usage_n"], p=params["usage_p"]), increments=1, horizon=n, info_rv=rv_0_1, label="base_case_non_convex_bh_100", label_index=i ) for n in [0, 1, 2]) model_0 = get_model(confs[0]) model_1 = get_model(confs[1]) model_2 = get_model(confs[2]) j0 = mean([model_0.j_function(t, x, info_state) for info_state in model_0.info_states()]) j1 = mean([model_1.j_function(t, x, info_state) for info_state in model_1.info_states()]) j2 = mean([model_2.j_function(t, x, info_state) for info_state in model_2.info_states()]) metric = 1 if j0 == j1 and j1 == j2 else (j1 - j2) / (j0 - j1) return metric
i = 0 usage_models = [PoissonUsageModel(scale=1)] for rv in rvs: for horizon in [0, 1, 2, 3, 4]: for u in usage_models: for b in [0.001, 1, 10, 100, 1000, 10000]: for h in [1]: configs.append(ModelConfig( gamma=1, lead_time=0, info_state_rvs=None, holding_cost=h, backlogging_cost=b, setup_cost=0, unit_price=0, usage_model=u, increments=1, horizon=horizon, info_rv=rv, label="k0_geometric_bookings", label_index=i) ) i += 1 if __name__ == "__main__": xs = list(range(0, 30)) ts = list(range(0, 21)) run_configs(configs, ts, xs, pools=8)
configs = [] i = 0 for info_rv in [rv_7_13, rv_6_14, rv_5_15]: for horizon in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]: for k in [40, 50, 60, 70, 80]: for b in [10]: i += 1 configs.append(ModelConfig( gamma=0.9, lead_time=0, info_state_rvs=None, holding_cost=1, backlogging_cost=b, setup_cost=k, unit_price=0, usage_model=DeterministUsageModel(scale=1), increments=1, horizon=horizon, info_rv=info_rv, label="Non-Convex_Search_Det_Usage", label_index=i) ) if __name__ == "__main__": xs = list(range(0, 1)) ts = list(range(0, 20)) run_configs(configs, ts, xs, pools=8)
from scm_optimization.model import ModelConfig, run_configs, PoissonUsageModel, BinomUsageModel, DeterministUsageModel import pacal from decimal import * configs = [] i = 0 for horizon in [0, 1, 2, 3, 4]: for b in [10, 1000]: for d in [1, 5, 10, 20]: configs.append( ModelConfig(gamma=1, lead_time=0, info_state_rvs=None, holding_cost=1, backlogging_cost=b, setup_cost=0, unit_price=0, usage_model=PoissonUsageModel(1), horizon=horizon, info_rv=pacal.BinomialDistr(d, 0.5), label="demand_scale_experiment", label_index=i)) i += 1 configs = [configs[35], configs[39]] if __name__ == "__main__": xs = list(range(0, 1)) ts = list(range(0, 21)) run_configs(configs, ts, xs, pools=8)
configs = [] i = 0 for demand_n in [1, 2, 3, 4]: for usage_n in [1, 2, 3, 4]: for p in [0.25, 0.5, 0.75]: for q in [0.25, 0.5, 0.75]: for horizon in [0, 1, 2, 3, 4]: for b in [0.001, 0.05, 0.1, 0.5, 1, 2, 4, 100]: configs.append( ModelConfig( gamma=1, lead_time=0, info_state_rvs=None, holding_cost=1, backlogging_cost=b, setup_cost=0, unit_price=0, usage_model=BinomUsageModel(n=usage_n, p=p), increments=1, horizon=horizon, info_rv=pacal.BinomialDistr(demand_n, q), label="numerical_experiments_binomial_model", label_index=i)) i += 1 if __name__ == "__main__": xs = list(range(0, 20)) ts = list(range(0, 21)) run_configs(configs, ts, xs, pools=8)
configs = [] i = 0 usage_models = list(BinomUsageModel(n=1, p=p) for p in [0.6]) for rv in rvs: for horizon in [0, 1, 2, 3, 4, 5, 6]: for u in usage_models: for b in [100]: for h in [100]: configs.append( ModelConfig(gamma=1, lead_time=0, info_state_rvs=None, holding_cost=h, backlogging_cost=b, setup_cost=0, unit_price=0, usage_model=u, increments=1, horizon=horizon, info_rv=rv, label="base_case_non_convex_bh_100", label_index=i)) i += 1 if __name__ == "__main__": xs = list(range(0, 3)) ts = list(range(0, 20)) run_configs(configs, ts, xs, pools=8)
BinomUsageModel(n=5, p=0.2), BinomUsageModel(n=10, p=0.1), ] b = 1000 poisson_usage_model = PoissonUsageModel(1, trunk=1e-10) booking_model = pacal.BinomialDistr(10, 0.5) for horizon in [0, 1, 2, 3]: configs.append(ModelConfig( gamma=1, lead_time=0, info_state_rvs=None, holding_cost=1, backlogging_cost=b, setup_cost=0, unit_price=0, usage_model=poisson_usage_model, horizon=horizon, info_rv=booking_model, label="poisson_usage_policy", label_index=i) ) i += 1 binomial_usage_configs = [] i = 0 for horizon in [0, 1, 2, 3]: for usage_model in binomial_usage_models: binomial_usage_configs.append(ModelConfig( gamma=1,
PoissonUsageModel(scale=1), BinomUsageModel(n=4, p=0.25), BinomUsageModel(n=2, p=0.5), DeterministUsageModel(1) ] for rv in rvs: for horizon in [0, 1, 2, 3, 4, 5, 6]: for u in usage_models: for b in [100, 50, 10, 5, 1]: configs.append( ModelConfig(gamma=0.9, lead_time=0, info_state_rvs=None, holding_cost=1, backlogging_cost=b, setup_cost=0, unit_price=0, usage_model=u, increments=1, horizon=horizon, info_rv=rv, label="k0_searches", label_index=i)) i += 1 if __name__ == "__main__": xs = list(range(0, 30)) ts = list(range(0, 21)) run_configs(configs, ts, xs, pools=8)
rv_4_16 = pacal.DiscreteDistr([4, 16], [0.5, 0.5]) rv_2_18 = pacal.DiscreteDistr([2, 18], [0.5, 0.5]) rv_0_20 = pacal.DiscreteDistr([0, 20], [0.5, 0.5]) rv_8_16 = pacal.DiscreteDistr([8, 16], [0.5, 0.5]) configs = [] i = 0 def poisson_usage(o): return pacal.PoissonDistr(o, trunk_eps=1e-3) for horizon in [0, 1, 2, 3, 4]: for inc in [1, Decimal("0.5"), Decimal("0.2"), Decimal("0.1")]: configs.append( ModelConfig(gamma=0.9, lead_time=0, info_state_rvs=None, holding_cost=1, backlogging_cost=10, setup_cost=50, unit_price=0, usage_model=poisson_usage, increments=inc, horizon=horizon, info_rv=rv_6_14, label="Action_Increment", label_index=i)) i += 1
rv_8_16 = pacal.DiscreteDistr([8, 16], [0.5, 0.5]) configs = [] i = 0 for horizon in [0, 1, 2, 3, 4, 5, 6, 7, 8]: for l in [0, 1, 2, 3]: for b in [10]: i += 1 configs.append(ModelConfig( gamma=0.9, lead_time=l, info_state_rvs=None, holding_cost=1, backlogging_cost=b, setup_cost=50, unit_price=0, usage_model=DeterministUsageModel(scale=1), increments=1, horizon=horizon, info_rv=rv_6_14, label="Leadtime", label_index=i) ) if __name__ == "__main__": xs = list(range(0, 1)) ts = list(range(0, 16)) run_configs(configs, ts, xs, pools=8)
usage_models = [ PoissonUsageModel(scale=1), BinomUsageModel(n=4, p=0.25), BinomUsageModel(n=2, p=0.5), DeterministUsageModel(1) ] for horizon in [0, 1, 2, 3, 4]: for k in [50, 55, 60]: for u in usage_models: configs.append( ModelConfig(gamma=0.9, lead_time=0, info_state_rvs=None, holding_cost=1, backlogging_cost=10, setup_cost=k, unit_price=0, usage_model=u, increments=1, horizon=horizon, info_rv=rv_6_14, label="Non-Convex_Search_Usage_Model", label_index=i)) i += 1 if __name__ == "__main__": xs = list(range(0, 30)) ts = list(range(0, 16)) run_configs(configs, ts, xs, pools=8)