Log with Tensorboard

To better monitor the training process for neural controllers, i.e. SingleSourcingNeuralController and DualSourcingNeuralController, we can specify the tensorboard_writer parameter to log both the training loss and validation loss. The log result can then be inspected using tensorboard.

Below is an example demonstrating how to integrate tensorboard_writer into the SingleSourcingNeuralController.

>>> import torch
>>> from idinn.demand import UniformDemand
>>> from idinn.single_controller.single_neural import SingleSourcingNeuralController
>>> from torch.utils.tensorboard import SummaryWriter

>>> single_sourcing_model = SingleSourcingModel(
...     lead_time=0,
...     holding_cost=5,
...     shortage_cost=495,
...     batch_size=32,
...     init_inventory=10,
...     demand_generator=UniformDemand(low=0, high=4),
...  )
>>> single_controller = SingleSourcingNeuralController(
...     hidden_layers=[2], activation=torch.nn.CELU(alpha=1)
... )
>>> single_controller.fit(
...     sourcing_model=single_sourcing_model,
...     sourcing_periods=50,
...     validation_sourcing_periods=1000,
...     epochs=5000,
...     seed=1,
...     tensorboard_writer=SummaryWriter(comment="_single_1")
... )