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
Esempio n. 2
0
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)
Esempio n. 4
0
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)
Esempio n. 6
0
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)
Esempio n. 7
0
    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,
Esempio n. 8
0
    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)
Esempio n. 9
0
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)