ademarteau
fixed all environment files
ff33a83
import montecarlo_simulator
from agent_environment import MonteCarloAgent, SafetyStockAgent, ForecastAgent, BaseAgent
from demand_environment import GammaPoisson, GammaGammaHighVariance, SingleGammaLowVariance, SpikingDemand
from demand_calculator import DemandCalculator
from config import SIM_DAYS, N_SIMULATIONS
import ciw
ciw.seed(11)
#Main
simulation_version = input("Choose a simulation version (0-3):\n"
"0: Historical Demand Agent\n"
"1: Safety Stock Agent\n"
"2: Forecast Agent\n"
"3: Monte Carlo Agent\n")
print(f"Running simulation version: {simulation_version}")
simulation_version = int(simulation_version)
# Create environment first
environment_version = input("Choose demand distribution (0-3):\n"
"0: 90/10 Gamma/Poisson\n"
"1: 50/50 Gamma(mu=20)/Gamma(mu=200)\n"
"2: Spiking High Demand\n"
"3: Gamma\n")
print(f"Running demand distribution: {environment_version}")
environment_version = int(environment_version)
environment_versions = {
0: GammaPoisson(SIM_DAYS),
1: GammaGammaHighVariance(SIM_DAYS),
2: SpikingDemand(SIM_DAYS),
3: SingleGammaLowVariance(SIM_DAYS),
}
try:
selected_environment = environment_versions[environment_version]
except:
raise ValueError("Invalid demand distribution version")
demand_calculator = DemandCalculator(SIM_DAYS)
demand_calculator.set_environment(selected_environment)
daily_demand_distribution = demand_calculator
demand_mean = [d.demand_mean for d in daily_demand_distribution.daily_demand_distribution]
demand_std = [d.demand_std for d in daily_demand_distribution.daily_demand_distribution]
agent_versions = {
0: BaseAgent(daily_demand_distribution),
1: SafetyStockAgent(daily_demand_distribution),
2: ForecastAgent(daily_demand_distribution, demand_mean, demand_std),
3: MonteCarloAgent(daily_demand_distribution)
}
try:
selected_agent = agent_versions[simulation_version]
except:
raise ValueError("Invalid simulation version")
sim = montecarlo_simulator.MonteCarloSimulator(selected_agent, selected_environment)
sim.run_simulation(N_SIMULATIONS, SIM_DAYS)