This repository provides a simulation and optimization framework for an Assemble-to-Order (ATO) system.
It includes:
- Stochastic demand modeling for retail (e.g., fashion stores).
- Surface Response Optimization to enhance decision-making.
- Stability Monitoring to ensure reliable simulations.
The framework is designed to optimize product configurations, manufacturing processes, and pricing strategies.
The codebase consists of the following key components:
Store: Abstract base class for defining retail stores.FashionStore: A subclass modeling a fashion retail store, including demand simulation based on pricing.
- Implement Ato model as a black box
- Returns the revenue given the prices
- Implements response surface methodology (RSM) to find optimal configurations.
- Uses polynomial regression for meta-modeling.
- Includes visualization tools for response surface analysis.
- Ensures simulation stability using confidence intervals.
- Iteratively adjusts scenario count to guarantee robust estimates.
The main method for optimizing the surface response is optimize(), which takes as input a simulation function. In our implementation, this function corresponds to the run_simulation method of the ATO class. The optimize method returns the optimal prices along with the corresponding revenue. Additionally, the class provides a visualization method, but it is only available for cases involving two price variables.
Within the ATO class, you can register and set different objective functions using the register_objective and set_objective methods. The class initializes with a default objective function, which is set during instantiation. Moreover, you can add or remove variables and constraints in the built-in Gurobi model. The set_n_scenarios method allows for dynamically adjusting the number of scenarios, which is particularly useful when performing stability checks.
Stability is assessed through the StabilityMonitor class, which is integrated into the Surface Response Optimizer following the Observer-Observed programming paradigm.
The abstract Store class serves as a repository for all business-related information, including parameters stored in JSON files and demand-related data. Our specific implementation is a FashionStore, which provides specialized methods for handling demand distributions. The class initializes with a default demand distribution, but additional distributions can be registered and set using the register_demand and set_demand methods. Furthermore, you can register demand distributions based on predefined scenarios and their corresponding probabilities.