Save and Load Controllers
Trained controllers can be saved to disk for later use. For the SingleSourcingNeuralController and DualSourcingNeuralController, this can be achieved using their save and load methods.
>>> # Save the model
>>> single_neural_controller.save("optimal_single_neural_controller.pt")
>>> # Load the model
>>> saved_single_controller = SingleSourcingNeuralController()
>>> saved_single_controller = saved_single_controller.load("optimal_single_neural_controller.pt")
For other controllers, Python’s pickle utility can be used instead.
>>> import pickle
>>> from idinn.sourcing_model import SingleSourcingModel
>>> from idinn.single_controller import BaseStockController
>>> from idinn.demand import UniformDemand
>>> single_sourcing_model = SingleSourcingModel(
... lead_time=2,
... holding_cost=5,
... shortage_cost=495,
... batch_size=32,
... init_inventory=10,
... demand_generator=UniformDemand(low=0, high=4),
... )
>>> controller_base = BaseStockController()
>>> controller_base.fit(single_sourcing_model)
# Save trained controller to "controller_base.pkl"
>>> with open("controller_base.pkl", "wb") as f:
... pickle.dump(controller_base, f)
# The file can later be loaded
>>> with open("controller_base.pkl", "rb") as f:
... controller_saved = pickle.load(f)