1 Solving a contextual knapsack problem¶
In this notebook we shortly introduce Decision-Focused Learning, and how it can be applied to a contextual knapsack problem. With this, we present the basic structure of PyDFLT.
1.0 Introduction to Decision-Focused Learning (DFL)¶
DFL aims at learning a predictive model that maximizes the decision quality of a downstream decision-making task or optimization model. This problem as a whole is named a predict & optimize or contextual optimization problem. In this setting, the optimization model has some uncertain parameters that correlate with some context or features. If seen as a pure predictive problem, one could aim to maximize predictive accuracy. However, since we know we will use the predictions to make decisions, we aim at maximizing decision quality. To do this, PyDFLT is based on a general structure including the following components:
An
OptimizationModelwhich specifies the optimization model/decision-making task we try to tackle, including some uncertain parametersA
Datasetwhich includes the training data, i.e., the context/feature values that correlate with the uncertain parametersThe
Problemwe are trying to solve, defined by theDatasetandOptimizationModelA
DecisionMaker, which includes the DFL approach that is used to learn the mapping from features to decisions. It includes aPredictorto map from features to uncertain parameters, and a decision model to map from uncertain parameters to decisions.A
Runnerwhich runs the training loop to train theDecisionMakerin making high-quality decisions.
We will show the usage of these components in this notebook, applied to a continuous knapsack problem.
1.1 The OptimizationModel¶
The optimization model is the formulation of the model that the decision maker wants to solve in practice. Given some realization of the uncertain parameters, solving the model will lead to a decision. Currently we support models defined as a differentiable model using CVXPY or models defined using gurobipy (including two-stage stochastic models). As an example we will take a continuous knapsack model.
A continuous knapsack model consists of a set of items with a value and a weight. The goal is to pick items such that you maximize the total value while adhering to the capacity constraint: the weights cannot exceed the capacity. In the continuous variant, you are allowed to pick partial items. This model is differentiable, which means we use CVXPYLayers [1] under the hood.
[2]:
from pydflt.concrete_models import CVXPYDiffKnapsackModel
num_items = 10
optimization_model = CVXPYDiffKnapsackModel(num_decisions=num_items, capacity=20, weights_lb=3, weights_ub=8, dimension=1, seed=5)
Auto-Sklearn cannot be imported.
1.2 The Dataset¶
For a DFL problem there is data required with feature and uncertain parameter pairs. The Dataset itself is created by the problem class, so the only requirement for the data is that it is in a dict that has a 'features' key and a key for each uncertain parameters as defined in the OptimizationModel.
[3]:
from pydflt.generate_data_functions.generate_data_knapsack import gen_data_knapsack
print(f"Uncertain parameter names: {optimization_model.param_to_predict_names}.")
data = gen_data_knapsack(seed=5, num_data=2000, num_items=num_items, num_features=5)
print(f"Data dictionary keys: {data.keys()}.")
Uncertain parameter names: ['item_value'].
Data dictionary keys: dict_keys(['item_value', 'features']).
1.3 The Problem¶
A DFL problem is defined by an optimization model and data, so we can now define the problem. It also includes the train/validation/test ratios. Optimal decisions and objectives for the in data observed parameter realization are most efficiently computed upfront, which is one of the Problem’s settings. There are some other settings including not randomizing the split but keeping the data in (timely) order: time_respecting_split.
[4]:
from pydflt.problem import Problem
problem = Problem(
data_dict=data,
opt_model=optimization_model,
train_ratio=0.7,
val_ratio=0.15,
compute_optimal_decisions=True,
compute_optimal_objectives=True,
time_respecting_split=False,
seed=5,
)
Computing optimal decisions for the entire dataset...
Optimal decisions computed and added to dataset.
Computing optimal objectives for the entire dataset...
Optimal objectives computed and added to dataset.
Shuffling indices before splitting...
Dataset split completed: Train=1400, Validation=300, Test=300
1.4 The DecisionMaker¶
This is the object that maps from features to decisions, which is generally done using a Predictor that maps from features to uncertain parameters and a decision_model based on the defined OptimizationModel that maps from uncertain parameters to decisions. The DecisionMaker includes the method that is used to train itself and therefore always includes a run_epoch and an update method. The DifferentiableDecisionMaker uses differentiation. Training its Predictor to
minimize mean squared error (Prediction-Focused Learning) for example can be done using this decision maker, but also using any differentiable surrogate losses implemented in PyEPO [2], or differentiating through the optimization model using CVXPYLayers [1] is possible. The other decision makers do not use direct differentiation, but for example use stochastic gradient estimation to differentiate. Our example problem is differentiable, so we use 'regret' as loss function. As a predictor
we use a linear predictor (Multi Layer Perceptron without hidden layers).
[5]:
from pydflt.decision_makers import DifferentiableDecisionMaker
decision_maker = DifferentiableDecisionMaker(
problem=problem, learning_rate=1e-4, batch_size=32, loss_function_str="objective", predictor_str="MLP", predictor_kwargs={"num_hidden_layers": 0}, seed=5
)
Problem mode set to: train
Problem mode set to: train
1.5 The Runner¶
This object is used to train the DecisionMaker. It includes the number of epochs to run and also defines what are important metrics. When save_best=True, it stores the best performing model on the validation set, otherwise it just takes the model obtained after the last epoch.
[6]:
from pydflt.runner import Runner
runner = Runner(decision_maker=decision_maker, num_epochs=50, main_metric="objective", use_wandb=False, save_best=True, seed=5)
result = runner.run()
Epoch 0/50: Starting initial validation...
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9607
validation/rel_regret_mean: 0.3487
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8777
validation/select_item_mean: 0.3886
validation/mse_mean: 60.4845
validation/item_value_mean: 4.7995
Initial best validation metric (objective): 19.960660934448242
Starting training...
Epoch: 1/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9607
train/solver_calls_mean: 1019.8182
train/abs_regret_mean: 10.6234
train/objective_mean: 18.1989
validation/rel_regret_mean: 0.3487
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8777
validation/select_item_mean: 0.3886
validation/mse_mean: 60.4845
train/rel_regret_mean: 0.3583
train/loss_mean: -18.1989
train/sym_rel_regret_mean: 0.2318
validation/item_value_mean: 4.7995
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9864
train/solver_calls_mean: 1019.8182
train/abs_regret_mean: 10.6234
train/objective_mean: 18.1989
validation/rel_regret_mean: 0.3485
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8520
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4996
train/rel_regret_mean: 0.3583
train/loss_mean: -18.1989
train/sym_rel_regret_mean: 0.2318
validation/item_value_mean: 4.7989
Validation evaluation (objective): 20.012088775634766
Epoch: 2/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9864
train/solver_calls_mean: 1869.8182
train/abs_regret_mean: 10.6308
train/objective_mean: 18.2018
validation/rel_regret_mean: 0.3485
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8520
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4996
train/rel_regret_mean: 0.3583
train/loss_mean: -18.2018
train/sym_rel_regret_mean: 0.2318
validation/item_value_mean: 4.7989
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9750
train/solver_calls_mean: 1869.8182
train/abs_regret_mean: 10.6308
train/objective_mean: 18.2018
validation/rel_regret_mean: 0.3487
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8635
validation/select_item_mean: 0.3885
validation/mse_mean: 60.5057
train/rel_regret_mean: 0.3583
train/loss_mean: -18.2018
train/sym_rel_regret_mean: 0.2318
validation/item_value_mean: 4.7986
Validation evaluation (objective): 19.952104568481445
New best validation evaluation (objective): 19.952104568481445 (was 19.960660934448242)
Epoch: 3/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9750
train/solver_calls_mean: 2719.8182
train/abs_regret_mean: 10.6287
train/objective_mean: 18.2046
validation/rel_regret_mean: 0.3487
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8635
validation/select_item_mean: 0.3885
validation/mse_mean: 60.5057
train/rel_regret_mean: 0.3580
train/loss_mean: -18.2046
train/sym_rel_regret_mean: 0.2316
validation/item_value_mean: 4.7986
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9648
train/solver_calls_mean: 2719.8182
train/abs_regret_mean: 10.6287
train/objective_mean: 18.2046
validation/rel_regret_mean: 0.3487
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8736
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4945
train/rel_regret_mean: 0.3580
train/loss_mean: -18.2046
train/sym_rel_regret_mean: 0.2316
validation/item_value_mean: 4.7990
Validation evaluation (objective): 19.93435287475586
New best validation evaluation (objective): 19.93435287475586 (was 19.952104568481445)
Epoch: 4/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9648
train/solver_calls_mean: 3569.8182
train/abs_regret_mean: 10.6197
train/objective_mean: 18.2030
validation/rel_regret_mean: 0.3487
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8736
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4945
train/rel_regret_mean: 0.3579
train/loss_mean: -18.2030
train/sym_rel_regret_mean: 0.2315
validation/item_value_mean: 4.7990
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9571
train/solver_calls_mean: 3569.8182
train/abs_regret_mean: 10.6197
train/objective_mean: 18.2030
validation/rel_regret_mean: 0.3488
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8813
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4868
train/rel_regret_mean: 0.3579
train/loss_mean: -18.2030
train/sym_rel_regret_mean: 0.2315
validation/item_value_mean: 4.7993
Validation evaluation (objective): 19.92615509033203
New best validation evaluation (objective): 19.92615509033203 (was 19.93435287475586)
Epoch: 5/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9571
train/solver_calls_mean: 4419.8182
train/abs_regret_mean: 10.6244
train/objective_mean: 18.2061
validation/rel_regret_mean: 0.3488
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8813
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4868
train/rel_regret_mean: 0.3578
train/loss_mean: -18.2061
train/sym_rel_regret_mean: 0.2314
validation/item_value_mean: 4.7993
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9537
train/solver_calls_mean: 4419.8182
train/abs_regret_mean: 10.6244
train/objective_mean: 18.2061
validation/rel_regret_mean: 0.3488
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8847
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4822
train/rel_regret_mean: 0.3578
train/loss_mean: -18.2061
train/sym_rel_regret_mean: 0.2314
validation/item_value_mean: 4.7996
Validation evaluation (objective): 19.936588287353516
Epoch: 6/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9537
train/solver_calls_mean: 5269.8182
train/abs_regret_mean: 10.6200
train/objective_mean: 18.2068
validation/rel_regret_mean: 0.3488
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8847
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4822
train/rel_regret_mean: 0.3578
train/loss_mean: -18.2068
train/sym_rel_regret_mean: 0.2314
validation/item_value_mean: 4.7996
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9512
train/solver_calls_mean: 5269.8182
train/abs_regret_mean: 10.6200
train/objective_mean: 18.2068
validation/rel_regret_mean: 0.3488
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8872
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4787
train/rel_regret_mean: 0.3578
train/loss_mean: -18.2068
train/sym_rel_regret_mean: 0.2314
validation/item_value_mean: 4.7997
Validation evaluation (objective): 19.936588287353516
Epoch: 7/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9512
train/solver_calls_mean: 6119.8182
train/abs_regret_mean: 10.6183
train/objective_mean: 18.2099
validation/rel_regret_mean: 0.3488
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8872
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4787
train/rel_regret_mean: 0.3577
train/loss_mean: -18.2099
train/sym_rel_regret_mean: 0.2313
validation/item_value_mean: 4.7997
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9494
train/solver_calls_mean: 6119.8182
train/abs_regret_mean: 10.6183
train/objective_mean: 18.2099
validation/rel_regret_mean: 0.3488
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8890
validation/select_item_mean: 0.3886
validation/mse_mean: 60.4756
train/rel_regret_mean: 0.3577
train/loss_mean: -18.2099
train/sym_rel_regret_mean: 0.2313
validation/item_value_mean: 4.8001
Validation evaluation (objective): 19.936588287353516
Epoch: 8/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9494
train/solver_calls_mean: 6969.8182
train/abs_regret_mean: 10.6146
train/objective_mean: 18.2091
validation/rel_regret_mean: 0.3488
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8890
validation/select_item_mean: 0.3886
validation/mse_mean: 60.4756
train/rel_regret_mean: 0.3576
train/loss_mean: -18.2091
train/sym_rel_regret_mean: 0.2313
validation/item_value_mean: 4.8001
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9478
train/solver_calls_mean: 6969.8182
train/abs_regret_mean: 10.6146
train/objective_mean: 18.2091
validation/rel_regret_mean: 0.3488
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2247
validation/abs_regret_mean: 10.8906
validation/select_item_mean: 0.3886
validation/mse_mean: 60.4730
train/rel_regret_mean: 0.3576
train/loss_mean: -18.2091
train/sym_rel_regret_mean: 0.2313
validation/item_value_mean: 4.8007
Validation evaluation (objective): 19.935434341430664
Epoch: 9/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9478
train/solver_calls_mean: 7819.8182
train/abs_regret_mean: 10.6118
train/objective_mean: 18.2088
validation/rel_regret_mean: 0.3488
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2247
validation/abs_regret_mean: 10.8906
validation/select_item_mean: 0.3886
validation/mse_mean: 60.4730
train/rel_regret_mean: 0.3576
train/loss_mean: -18.2088
train/sym_rel_regret_mean: 0.2313
validation/item_value_mean: 4.8007
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9462
train/solver_calls_mean: 7819.8182
train/abs_regret_mean: 10.6118
train/objective_mean: 18.2088
validation/rel_regret_mean: 0.3488
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2247
validation/abs_regret_mean: 10.8922
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4704
train/rel_regret_mean: 0.3576
train/loss_mean: -18.2088
train/sym_rel_regret_mean: 0.2313
validation/item_value_mean: 4.8011
Validation evaluation (objective): 19.931285858154297
Epoch: 10/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9462
train/solver_calls_mean: 8669.8182
train/abs_regret_mean: 10.6123
train/objective_mean: 18.2114
validation/rel_regret_mean: 0.3488
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2247
validation/abs_regret_mean: 10.8922
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4704
train/rel_regret_mean: 0.3576
train/loss_mean: -18.2114
train/sym_rel_regret_mean: 0.2313
validation/item_value_mean: 4.8011
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9448
train/solver_calls_mean: 8669.8182
train/abs_regret_mean: 10.6123
train/objective_mean: 18.2114
validation/rel_regret_mean: 0.3488
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2247
validation/abs_regret_mean: 10.8936
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4671
train/rel_regret_mean: 0.3576
train/loss_mean: -18.2114
train/sym_rel_regret_mean: 0.2313
validation/item_value_mean: 4.8015
Validation evaluation (objective): 19.931285858154297
Epoch: 11/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9448
train/solver_calls_mean: 9519.8182
train/abs_regret_mean: 10.6135
train/objective_mean: 18.2148
validation/rel_regret_mean: 0.3488
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2247
validation/abs_regret_mean: 10.8936
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4671
train/rel_regret_mean: 0.3576
train/loss_mean: -18.2148
train/sym_rel_regret_mean: 0.2313
validation/item_value_mean: 4.8015
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9437
train/solver_calls_mean: 9519.8182
train/abs_regret_mean: 10.6135
train/objective_mean: 18.2148
validation/rel_regret_mean: 0.3488
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2247
validation/abs_regret_mean: 10.8947
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4651
train/rel_regret_mean: 0.3576
train/loss_mean: -18.2148
train/sym_rel_regret_mean: 0.2313
validation/item_value_mean: 4.8018
Validation evaluation (objective): 19.931285858154297
Epoch: 12/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9437
train/solver_calls_mean: 10369.8182
train/abs_regret_mean: 10.6131
train/objective_mean: 18.2163
validation/rel_regret_mean: 0.3488
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2247
validation/abs_regret_mean: 10.8947
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4651
train/rel_regret_mean: 0.3576
train/loss_mean: -18.2163
train/sym_rel_regret_mean: 0.2313
validation/item_value_mean: 4.8018
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9439
train/solver_calls_mean: 10369.8182
train/abs_regret_mean: 10.6131
train/objective_mean: 18.2163
validation/rel_regret_mean: 0.3488
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8945
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4621
train/rel_regret_mean: 0.3576
train/loss_mean: -18.2163
train/sym_rel_regret_mean: 0.2313
validation/item_value_mean: 4.8020
Validation evaluation (objective): 19.946308135986328
Epoch: 13/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9439
train/solver_calls_mean: 11219.8182
train/abs_regret_mean: 10.6125
train/objective_mean: 18.2205
validation/rel_regret_mean: 0.3488
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8945
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4621
train/rel_regret_mean: 0.3576
train/loss_mean: -18.2205
train/sym_rel_regret_mean: 0.2312
validation/item_value_mean: 4.8020
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9442
train/solver_calls_mean: 11219.8182
train/abs_regret_mean: 10.6125
train/objective_mean: 18.2205
validation/rel_regret_mean: 0.3487
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8942
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4589
train/rel_regret_mean: 0.3576
train/loss_mean: -18.2205
train/sym_rel_regret_mean: 0.2312
validation/item_value_mean: 4.8021
Validation evaluation (objective): 19.948291778564453
Epoch: 14/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9442
train/solver_calls_mean: 12069.8182
train/abs_regret_mean: 10.6104
train/objective_mean: 18.2236
validation/rel_regret_mean: 0.3487
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8942
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4589
train/rel_regret_mean: 0.3575
train/loss_mean: -18.2236
train/sym_rel_regret_mean: 0.2312
validation/item_value_mean: 4.8021
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9444
train/solver_calls_mean: 12069.8182
train/abs_regret_mean: 10.6104
train/objective_mean: 18.2236
validation/rel_regret_mean: 0.3487
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8940
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4509
train/rel_regret_mean: 0.3575
train/loss_mean: -18.2236
train/sym_rel_regret_mean: 0.2312
validation/item_value_mean: 4.8022
Validation evaluation (objective): 19.946666717529297
Epoch: 15/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9444
train/solver_calls_mean: 12919.8182
train/abs_regret_mean: 10.6078
train/objective_mean: 18.2247
validation/rel_regret_mean: 0.3487
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8940
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4509
train/rel_regret_mean: 0.3574
train/loss_mean: -18.2247
train/sym_rel_regret_mean: 0.2311
validation/item_value_mean: 4.8022
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9442
train/solver_calls_mean: 12919.8182
train/abs_regret_mean: 10.6078
train/objective_mean: 18.2247
validation/rel_regret_mean: 0.3487
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8942
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4446
train/rel_regret_mean: 0.3574
train/loss_mean: -18.2247
train/sym_rel_regret_mean: 0.2311
validation/item_value_mean: 4.8022
Validation evaluation (objective): 19.942047119140625
Epoch: 16/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9442
train/solver_calls_mean: 13769.8182
train/abs_regret_mean: 10.6053
train/objective_mean: 18.2241
validation/rel_regret_mean: 0.3487
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8942
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4446
train/rel_regret_mean: 0.3574
train/loss_mean: -18.2241
train/sym_rel_regret_mean: 0.2311
validation/item_value_mean: 4.8022
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9439
train/solver_calls_mean: 13769.8182
train/abs_regret_mean: 10.6053
train/objective_mean: 18.2241
validation/rel_regret_mean: 0.3487
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8945
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4390
train/rel_regret_mean: 0.3574
train/loss_mean: -18.2241
train/sym_rel_regret_mean: 0.2311
validation/item_value_mean: 4.8022
Validation evaluation (objective): 19.93792724609375
Epoch: 17/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9439
train/solver_calls_mean: 14619.8182
train/abs_regret_mean: 10.6041
train/objective_mean: 18.2232
validation/rel_regret_mean: 0.3487
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8945
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4390
train/rel_regret_mean: 0.3573
train/loss_mean: -18.2232
train/sym_rel_regret_mean: 0.2310
validation/item_value_mean: 4.8022
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9435
train/solver_calls_mean: 14619.8182
train/abs_regret_mean: 10.6041
train/objective_mean: 18.2232
validation/rel_regret_mean: 0.3486
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8949
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4338
train/rel_regret_mean: 0.3573
train/loss_mean: -18.2232
train/sym_rel_regret_mean: 0.2310
validation/item_value_mean: 4.8022
Validation evaluation (objective): 19.93792724609375
Epoch: 18/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9435
train/solver_calls_mean: 15469.8182
train/abs_regret_mean: 10.6051
train/objective_mean: 18.2234
validation/rel_regret_mean: 0.3486
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2246
validation/abs_regret_mean: 10.8949
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4338
train/rel_regret_mean: 0.3573
train/loss_mean: -18.2234
train/sym_rel_regret_mean: 0.2310
validation/item_value_mean: 4.8022
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9460
train/solver_calls_mean: 15469.8182
train/abs_regret_mean: 10.6051
train/objective_mean: 18.2234
validation/rel_regret_mean: 0.3486
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2245
validation/abs_regret_mean: 10.8924
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4286
train/rel_regret_mean: 0.3573
train/loss_mean: -18.2234
train/sym_rel_regret_mean: 0.2310
validation/item_value_mean: 4.8023
Validation evaluation (objective): 19.991077423095703
Epoch: 19/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9460
train/solver_calls_mean: 16319.8182
train/abs_regret_mean: 10.6034
train/objective_mean: 18.2223
validation/rel_regret_mean: 0.3486
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2245
validation/abs_regret_mean: 10.8924
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4286
train/rel_regret_mean: 0.3573
train/loss_mean: -18.2223
train/sym_rel_regret_mean: 0.2310
validation/item_value_mean: 4.8023
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9456
train/solver_calls_mean: 16319.8182
train/abs_regret_mean: 10.6034
train/objective_mean: 18.2223
validation/rel_regret_mean: 0.3486
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2245
validation/abs_regret_mean: 10.8928
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4242
train/rel_regret_mean: 0.3573
train/loss_mean: -18.2223
train/sym_rel_regret_mean: 0.2310
validation/item_value_mean: 4.8023
Validation evaluation (objective): 19.93687629699707
Epoch: 20/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9456
train/solver_calls_mean: 17169.8182
train/abs_regret_mean: 10.6037
train/objective_mean: 18.2231
validation/rel_regret_mean: 0.3486
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2245
validation/abs_regret_mean: 10.8928
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4242
train/rel_regret_mean: 0.3572
train/loss_mean: -18.2231
train/sym_rel_regret_mean: 0.2309
validation/item_value_mean: 4.8023
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9452
train/solver_calls_mean: 17169.8182
train/abs_regret_mean: 10.6037
train/objective_mean: 18.2231
validation/rel_regret_mean: 0.3486
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2245
validation/abs_regret_mean: 10.8932
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4202
train/rel_regret_mean: 0.3572
train/loss_mean: -18.2231
train/sym_rel_regret_mean: 0.2309
validation/item_value_mean: 4.8023
Validation evaluation (objective): 19.93687629699707
Epoch: 21/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9452
train/solver_calls_mean: 18019.8182
train/abs_regret_mean: 10.6038
train/objective_mean: 18.2230
validation/rel_regret_mean: 0.3486
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2245
validation/abs_regret_mean: 10.8932
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4202
train/rel_regret_mean: 0.3572
train/loss_mean: -18.2230
train/sym_rel_regret_mean: 0.2309
validation/item_value_mean: 4.8023
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9448
train/solver_calls_mean: 18019.8182
train/abs_regret_mean: 10.6038
train/objective_mean: 18.2230
validation/rel_regret_mean: 0.3486
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2245
validation/abs_regret_mean: 10.8936
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4163
train/rel_regret_mean: 0.3572
train/loss_mean: -18.2230
train/sym_rel_regret_mean: 0.2309
validation/item_value_mean: 4.8024
Validation evaluation (objective): 19.93687629699707
Epoch: 22/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9448
train/solver_calls_mean: 18869.8182
train/abs_regret_mean: 10.6028
train/objective_mean: 18.2217
validation/rel_regret_mean: 0.3486
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2245
validation/abs_regret_mean: 10.8936
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4163
train/rel_regret_mean: 0.3572
train/loss_mean: -18.2217
train/sym_rel_regret_mean: 0.2309
validation/item_value_mean: 4.8024
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9465
train/solver_calls_mean: 18869.8182
train/abs_regret_mean: 10.6028
train/objective_mean: 18.2217
validation/rel_regret_mean: 0.3486
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2245
validation/abs_regret_mean: 10.8919
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4122
train/rel_regret_mean: 0.3572
train/loss_mean: -18.2217
train/sym_rel_regret_mean: 0.2309
validation/item_value_mean: 4.8025
Validation evaluation (objective): 19.984882354736328
Epoch: 23/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9465
train/solver_calls_mean: 19719.8182
train/abs_regret_mean: 10.6015
train/objective_mean: 18.2225
validation/rel_regret_mean: 0.3486
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2245
validation/abs_regret_mean: 10.8919
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4122
train/rel_regret_mean: 0.3572
train/loss_mean: -18.2225
train/sym_rel_regret_mean: 0.2309
validation/item_value_mean: 4.8025
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9484
train/solver_calls_mean: 19719.8182
train/abs_regret_mean: 10.6015
train/objective_mean: 18.2225
validation/rel_regret_mean: 0.3485
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2245
validation/abs_regret_mean: 10.8900
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4086
train/rel_regret_mean: 0.3572
train/loss_mean: -18.2225
train/sym_rel_regret_mean: 0.2309
validation/item_value_mean: 4.8025
Validation evaluation (objective): 19.991165161132812
Epoch: 24/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9484
train/solver_calls_mean: 20569.8182
train/abs_regret_mean: 10.6014
train/objective_mean: 18.2252
validation/rel_regret_mean: 0.3485
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2245
validation/abs_regret_mean: 10.8900
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4086
train/rel_regret_mean: 0.3571
train/loss_mean: -18.2252
train/sym_rel_regret_mean: 0.2309
validation/item_value_mean: 4.8025
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9501
train/solver_calls_mean: 20569.8182
train/abs_regret_mean: 10.6014
train/objective_mean: 18.2252
validation/rel_regret_mean: 0.3485
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2245
validation/abs_regret_mean: 10.8883
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4057
train/rel_regret_mean: 0.3571
train/loss_mean: -18.2252
train/sym_rel_regret_mean: 0.2309
validation/item_value_mean: 4.8026
Validation evaluation (objective): 19.991165161132812
Epoch: 25/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9501
train/solver_calls_mean: 21419.8182
train/abs_regret_mean: 10.6005
train/objective_mean: 18.2258
validation/rel_regret_mean: 0.3485
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2245
validation/abs_regret_mean: 10.8883
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4057
train/rel_regret_mean: 0.3571
train/loss_mean: -18.2258
train/sym_rel_regret_mean: 0.2308
validation/item_value_mean: 4.8026
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9517
train/solver_calls_mean: 21419.8182
train/abs_regret_mean: 10.6005
train/objective_mean: 18.2258
validation/rel_regret_mean: 0.3485
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2245
validation/abs_regret_mean: 10.8867
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4029
train/rel_regret_mean: 0.3571
train/loss_mean: -18.2258
train/sym_rel_regret_mean: 0.2308
validation/item_value_mean: 4.8027
Validation evaluation (objective): 19.991165161132812
Epoch: 26/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9517
train/solver_calls_mean: 22269.8182
train/abs_regret_mean: 10.5994
train/objective_mean: 18.2248
validation/rel_regret_mean: 0.3485
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2245
validation/abs_regret_mean: 10.8867
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4029
train/rel_regret_mean: 0.3571
train/loss_mean: -18.2248
train/sym_rel_regret_mean: 0.2308
validation/item_value_mean: 4.8027
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9540
train/solver_calls_mean: 22269.8182
train/abs_regret_mean: 10.5994
train/objective_mean: 18.2248
validation/rel_regret_mean: 0.3485
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8844
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4000
train/rel_regret_mean: 0.3571
train/loss_mean: -18.2248
train/sym_rel_regret_mean: 0.2308
validation/item_value_mean: 4.8028
Validation evaluation (objective): 20.014835357666016
Epoch: 27/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9540
train/solver_calls_mean: 23119.8182
train/abs_regret_mean: 10.5991
train/objective_mean: 18.2261
validation/rel_regret_mean: 0.3485
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8844
validation/select_item_mean: 0.3885
validation/mse_mean: 60.4000
train/rel_regret_mean: 0.3571
train/loss_mean: -18.2261
train/sym_rel_regret_mean: 0.2308
validation/item_value_mean: 4.8028
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9561
train/solver_calls_mean: 23119.8182
train/abs_regret_mean: 10.5991
train/objective_mean: 18.2261
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8823
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3974
train/rel_regret_mean: 0.3571
train/loss_mean: -18.2261
train/sym_rel_regret_mean: 0.2308
validation/item_value_mean: 4.8028
Validation evaluation (objective): 20.013364791870117
Epoch: 28/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9561
train/solver_calls_mean: 23969.8182
train/abs_regret_mean: 10.5985
train/objective_mean: 18.2266
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8823
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3974
train/rel_regret_mean: 0.3570
train/loss_mean: -18.2266
train/sym_rel_regret_mean: 0.2308
validation/item_value_mean: 4.8028
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9572
train/solver_calls_mean: 23969.8182
train/abs_regret_mean: 10.5985
train/objective_mean: 18.2266
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8812
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3946
train/rel_regret_mean: 0.3570
train/loss_mean: -18.2266
train/sym_rel_regret_mean: 0.2308
validation/item_value_mean: 4.8029
Validation evaluation (objective): 19.988079071044922
Epoch: 29/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9572
train/solver_calls_mean: 24819.8182
train/abs_regret_mean: 10.5976
train/objective_mean: 18.2267
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8812
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3946
train/rel_regret_mean: 0.3570
train/loss_mean: -18.2267
train/sym_rel_regret_mean: 0.2308
validation/item_value_mean: 4.8029
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9583
train/solver_calls_mean: 24819.8182
train/abs_regret_mean: 10.5976
train/objective_mean: 18.2267
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8801
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3921
train/rel_regret_mean: 0.3570
train/loss_mean: -18.2267
train/sym_rel_regret_mean: 0.2308
validation/item_value_mean: 4.8030
Validation evaluation (objective): 19.988079071044922
Epoch: 30/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9583
train/solver_calls_mean: 25669.8182
train/abs_regret_mean: 10.5969
train/objective_mean: 18.2276
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8801
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3921
train/rel_regret_mean: 0.3570
train/loss_mean: -18.2276
train/sym_rel_regret_mean: 0.2307
validation/item_value_mean: 4.8030
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9591
train/solver_calls_mean: 25669.8182
train/abs_regret_mean: 10.5969
train/objective_mean: 18.2276
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8793
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3896
train/rel_regret_mean: 0.3570
train/loss_mean: -18.2276
train/sym_rel_regret_mean: 0.2307
validation/item_value_mean: 4.8031
Validation evaluation (objective): 19.985301971435547
Epoch: 31/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9591
train/solver_calls_mean: 26519.8182
train/abs_regret_mean: 10.5962
train/objective_mean: 18.2286
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8793
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3896
train/rel_regret_mean: 0.3570
train/loss_mean: -18.2286
train/sym_rel_regret_mean: 0.2307
validation/item_value_mean: 4.8031
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9587
train/solver_calls_mean: 26519.8182
train/abs_regret_mean: 10.5962
train/objective_mean: 18.2286
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8797
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3874
train/rel_regret_mean: 0.3570
train/loss_mean: -18.2286
train/sym_rel_regret_mean: 0.2307
validation/item_value_mean: 4.8031
Validation evaluation (objective): 19.943859100341797
Epoch: 32/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9587
train/solver_calls_mean: 27369.8182
train/abs_regret_mean: 10.5964
train/objective_mean: 18.2301
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8797
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3874
train/rel_regret_mean: 0.3569
train/loss_mean: -18.2301
train/sym_rel_regret_mean: 0.2307
validation/item_value_mean: 4.8031
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9582
train/solver_calls_mean: 27369.8182
train/abs_regret_mean: 10.5964
train/objective_mean: 18.2301
validation/rel_regret_mean: 0.3485
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8802
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3850
train/rel_regret_mean: 0.3569
train/loss_mean: -18.2301
train/sym_rel_regret_mean: 0.2307
validation/item_value_mean: 4.8032
Validation evaluation (objective): 19.943859100341797
Epoch: 33/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9582
train/solver_calls_mean: 28219.8182
train/abs_regret_mean: 10.5954
train/objective_mean: 18.2306
validation/rel_regret_mean: 0.3485
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8802
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3850
train/rel_regret_mean: 0.3569
train/loss_mean: -18.2306
train/sym_rel_regret_mean: 0.2307
validation/item_value_mean: 4.8032
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9578
train/solver_calls_mean: 28219.8182
train/abs_regret_mean: 10.5954
train/objective_mean: 18.2306
validation/rel_regret_mean: 0.3485
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2245
validation/abs_regret_mean: 10.8806
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3827
train/rel_regret_mean: 0.3569
train/loss_mean: -18.2306
train/sym_rel_regret_mean: 0.2307
validation/item_value_mean: 4.8032
Validation evaluation (objective): 19.945064544677734
Epoch: 34/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9578
train/solver_calls_mean: 29069.8182
train/abs_regret_mean: 10.5945
train/objective_mean: 18.2317
validation/rel_regret_mean: 0.3485
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2245
validation/abs_regret_mean: 10.8806
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3827
train/rel_regret_mean: 0.3569
train/loss_mean: -18.2317
train/sym_rel_regret_mean: 0.2307
validation/item_value_mean: 4.8032
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9586
train/solver_calls_mean: 29069.8182
train/abs_regret_mean: 10.5945
train/objective_mean: 18.2317
validation/rel_regret_mean: 0.3485
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2245
validation/abs_regret_mean: 10.8798
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3804
train/rel_regret_mean: 0.3569
train/loss_mean: -18.2317
train/sym_rel_regret_mean: 0.2307
validation/item_value_mean: 4.8033
Validation evaluation (objective): 19.98650360107422
Epoch: 35/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9586
train/solver_calls_mean: 29919.8182
train/abs_regret_mean: 10.5935
train/objective_mean: 18.2322
validation/rel_regret_mean: 0.3485
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2245
validation/abs_regret_mean: 10.8798
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3804
train/rel_regret_mean: 0.3569
train/loss_mean: -18.2322
train/sym_rel_regret_mean: 0.2306
validation/item_value_mean: 4.8033
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9593
train/solver_calls_mean: 29919.8182
train/abs_regret_mean: 10.5935
train/objective_mean: 18.2322
validation/rel_regret_mean: 0.3485
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2245
validation/abs_regret_mean: 10.8791
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3779
train/rel_regret_mean: 0.3569
train/loss_mean: -18.2322
train/sym_rel_regret_mean: 0.2306
validation/item_value_mean: 4.8034
Validation evaluation (objective): 19.982181549072266
Epoch: 36/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9593
train/solver_calls_mean: 30769.8182
train/abs_regret_mean: 10.5941
train/objective_mean: 18.2336
validation/rel_regret_mean: 0.3485
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2245
validation/abs_regret_mean: 10.8791
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3779
train/rel_regret_mean: 0.3569
train/loss_mean: -18.2336
train/sym_rel_regret_mean: 0.2306
validation/item_value_mean: 4.8034
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9601
train/solver_calls_mean: 30769.8182
train/abs_regret_mean: 10.5941
train/objective_mean: 18.2336
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8783
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3756
train/rel_regret_mean: 0.3569
train/loss_mean: -18.2336
train/sym_rel_regret_mean: 0.2306
validation/item_value_mean: 4.8034
Validation evaluation (objective): 19.989940643310547
Epoch: 37/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9601
train/solver_calls_mean: 31619.8182
train/abs_regret_mean: 10.5947
train/objective_mean: 18.2352
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8783
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3756
train/rel_regret_mean: 0.3568
train/loss_mean: -18.2352
train/sym_rel_regret_mean: 0.2306
validation/item_value_mean: 4.8034
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9604
train/solver_calls_mean: 31619.8182
train/abs_regret_mean: 10.5947
train/objective_mean: 18.2352
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8780
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3733
train/rel_regret_mean: 0.3568
train/loss_mean: -18.2352
train/sym_rel_regret_mean: 0.2306
validation/item_value_mean: 4.8035
Validation evaluation (objective): 19.9720401763916
Epoch: 38/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9604
train/solver_calls_mean: 32469.8182
train/abs_regret_mean: 10.5942
train/objective_mean: 18.2354
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8780
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3733
train/rel_regret_mean: 0.3568
train/loss_mean: -18.2354
train/sym_rel_regret_mean: 0.2306
validation/item_value_mean: 4.8035
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9616
train/solver_calls_mean: 32469.8182
train/abs_regret_mean: 10.5942
train/objective_mean: 18.2354
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8768
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3710
train/rel_regret_mean: 0.3568
train/loss_mean: -18.2354
train/sym_rel_regret_mean: 0.2306
validation/item_value_mean: 4.8036
Validation evaluation (objective): 20.005638122558594
Epoch: 39/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9616
train/solver_calls_mean: 33319.8182
train/abs_regret_mean: 10.5931
train/objective_mean: 18.2363
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8768
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3710
train/rel_regret_mean: 0.3568
train/loss_mean: -18.2363
train/sym_rel_regret_mean: 0.2306
validation/item_value_mean: 4.8036
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9628
train/solver_calls_mean: 33319.8182
train/abs_regret_mean: 10.5931
train/objective_mean: 18.2363
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8756
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3687
train/rel_regret_mean: 0.3568
train/loss_mean: -18.2363
train/sym_rel_regret_mean: 0.2306
validation/item_value_mean: 4.8036
Validation evaluation (objective): 20.011211395263672
Epoch: 40/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9628
train/solver_calls_mean: 34169.8182
train/abs_regret_mean: 10.5927
train/objective_mean: 18.2365
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8756
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3687
train/rel_regret_mean: 0.3568
train/loss_mean: -18.2365
train/sym_rel_regret_mean: 0.2306
validation/item_value_mean: 4.8036
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9639
train/solver_calls_mean: 34169.8182
train/abs_regret_mean: 10.5927
train/objective_mean: 18.2365
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8745
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3665
train/rel_regret_mean: 0.3568
train/loss_mean: -18.2365
train/sym_rel_regret_mean: 0.2306
validation/item_value_mean: 4.8037
Validation evaluation (objective): 20.007793426513672
Epoch: 41/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9639
train/solver_calls_mean: 35019.8182
train/abs_regret_mean: 10.5916
train/objective_mean: 18.2366
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8745
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3665
train/rel_regret_mean: 0.3568
train/loss_mean: -18.2366
train/sym_rel_regret_mean: 0.2306
validation/item_value_mean: 4.8037
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9642
train/solver_calls_mean: 35019.8182
train/abs_regret_mean: 10.5916
train/objective_mean: 18.2366
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8742
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3647
train/rel_regret_mean: 0.3568
train/loss_mean: -18.2366
train/sym_rel_regret_mean: 0.2306
validation/item_value_mean: 4.8038
Validation evaluation (objective): 19.973041534423828
Epoch: 42/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9642
train/solver_calls_mean: 35869.8182
train/abs_regret_mean: 10.5909
train/objective_mean: 18.2376
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8742
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3647
train/rel_regret_mean: 0.3567
train/loss_mean: -18.2376
train/sym_rel_regret_mean: 0.2305
validation/item_value_mean: 4.8038
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9643
train/solver_calls_mean: 35869.8182
train/abs_regret_mean: 10.5909
train/objective_mean: 18.2376
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8741
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3627
train/rel_regret_mean: 0.3567
train/loss_mean: -18.2376
train/sym_rel_regret_mean: 0.2305
validation/item_value_mean: 4.8038
Validation evaluation (objective): 19.97244644165039
Epoch: 43/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9643
train/solver_calls_mean: 36719.8182
train/abs_regret_mean: 10.5898
train/objective_mean: 18.2381
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8741
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3627
train/rel_regret_mean: 0.3567
train/loss_mean: -18.2381
train/sym_rel_regret_mean: 0.2305
validation/item_value_mean: 4.8038
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9645
train/solver_calls_mean: 36719.8182
train/abs_regret_mean: 10.5898
train/objective_mean: 18.2381
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8739
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3608
train/rel_regret_mean: 0.3567
train/loss_mean: -18.2381
train/sym_rel_regret_mean: 0.2305
validation/item_value_mean: 4.8038
Validation evaluation (objective): 19.97244644165039
Epoch: 44/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9645
train/solver_calls_mean: 37569.8182
train/abs_regret_mean: 10.5887
train/objective_mean: 18.2384
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8739
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3608
train/rel_regret_mean: 0.3567
train/loss_mean: -18.2384
train/sym_rel_regret_mean: 0.2305
validation/item_value_mean: 4.8038
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9647
train/solver_calls_mean: 37569.8182
train/abs_regret_mean: 10.5887
train/objective_mean: 18.2384
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8737
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3590
train/rel_regret_mean: 0.3567
train/loss_mean: -18.2384
train/sym_rel_regret_mean: 0.2305
validation/item_value_mean: 4.8039
Validation evaluation (objective): 19.97244644165039
Epoch: 45/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9647
train/solver_calls_mean: 38419.8182
train/abs_regret_mean: 10.5875
train/objective_mean: 18.2383
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8737
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3590
train/rel_regret_mean: 0.3567
train/loss_mean: -18.2383
train/sym_rel_regret_mean: 0.2305
validation/item_value_mean: 4.8039
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9640
train/solver_calls_mean: 38419.8182
train/abs_regret_mean: 10.5875
train/objective_mean: 18.2383
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8744
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3572
train/rel_regret_mean: 0.3567
train/loss_mean: -18.2383
train/sym_rel_regret_mean: 0.2305
validation/item_value_mean: 4.8039
Validation evaluation (objective): 19.93259048461914
Epoch: 46/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9640
train/solver_calls_mean: 39269.8182
train/abs_regret_mean: 10.5861
train/objective_mean: 18.2385
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8744
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3572
train/rel_regret_mean: 0.3566
train/loss_mean: -18.2385
train/sym_rel_regret_mean: 0.2305
validation/item_value_mean: 4.8039
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9636
train/solver_calls_mean: 39269.8182
train/abs_regret_mean: 10.5861
train/objective_mean: 18.2385
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8748
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3559
train/rel_regret_mean: 0.3566
train/loss_mean: -18.2385
train/sym_rel_regret_mean: 0.2305
validation/item_value_mean: 4.8039
Validation evaluation (objective): 19.943378448486328
Epoch: 47/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9636
train/solver_calls_mean: 40119.8182
train/abs_regret_mean: 10.5844
train/objective_mean: 18.2394
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8748
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3559
train/rel_regret_mean: 0.3566
train/loss_mean: -18.2394
train/sym_rel_regret_mean: 0.2304
validation/item_value_mean: 4.8039
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9640
train/solver_calls_mean: 40119.8182
train/abs_regret_mean: 10.5844
train/objective_mean: 18.2394
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8744
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3548
train/rel_regret_mean: 0.3566
train/loss_mean: -18.2394
train/sym_rel_regret_mean: 0.2304
validation/item_value_mean: 4.8039
Validation evaluation (objective): 19.982357025146484
Epoch: 48/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9640
train/solver_calls_mean: 40969.8182
train/abs_regret_mean: 10.5828
train/objective_mean: 18.2404
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8744
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3548
train/rel_regret_mean: 0.3566
train/loss_mean: -18.2404
train/sym_rel_regret_mean: 0.2304
validation/item_value_mean: 4.8039
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9645
train/solver_calls_mean: 40969.8182
train/abs_regret_mean: 10.5828
train/objective_mean: 18.2404
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8739
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3537
train/rel_regret_mean: 0.3566
train/loss_mean: -18.2404
train/sym_rel_regret_mean: 0.2304
validation/item_value_mean: 4.8039
Validation evaluation (objective): 19.991682052612305
Epoch: 49/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9645
train/solver_calls_mean: 41819.8182
train/abs_regret_mean: 10.5817
train/objective_mean: 18.2421
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8739
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3537
train/rel_regret_mean: 0.3565
train/loss_mean: -18.2421
train/sym_rel_regret_mean: 0.2304
validation/item_value_mean: 4.8039
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9651
train/solver_calls_mean: 41819.8182
train/abs_regret_mean: 10.5817
train/objective_mean: 18.2421
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8733
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3528
train/rel_regret_mean: 0.3565
train/loss_mean: -18.2421
train/sym_rel_regret_mean: 0.2304
validation/item_value_mean: 4.8039
Validation evaluation (objective): 19.991352081298828
Epoch: 50/50
Problem mode set to: train
Epoch Results:
validation/objective_mean: 19.9651
train/solver_calls_mean: 42669.8182
train/abs_regret_mean: 10.5799
train/objective_mean: 18.2435
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8733
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3528
train/rel_regret_mean: 0.3565
train/loss_mean: -18.2435
train/sym_rel_regret_mean: 0.2303
validation/item_value_mean: 4.8039
Problem mode set to: validation
Epoch Results:
validation/objective_mean: 19.9660
train/solver_calls_mean: 42669.8182
train/abs_regret_mean: 10.5799
train/objective_mean: 18.2435
validation/rel_regret_mean: 0.3484
train/grad_norm_mean: 0.0000
validation/sym_rel_regret_mean: 0.2244
validation/abs_regret_mean: 10.8724
validation/select_item_mean: 0.3886
validation/mse_mean: 60.3519
train/rel_regret_mean: 0.3565
train/loss_mean: -18.2435
train/sym_rel_regret_mean: 0.2303
validation/item_value_mean: 4.8039
Validation evaluation (objective): 20.0119686126709
Training finished. Evaluating on the test set...
Problem mode set to: test
Epoch Results:
test/rel_regret_mean: 0.3621
train/objective_mean: 18.2435
train/sym_rel_regret_mean: 0.2303
validation/item_value_mean: 4.8039
train/abs_regret_mean: 10.5799
test/item_value_mean: 4.8681
train/grad_norm_mean: 0.0000
validation/mse_mean: 60.3519
test/mse_mean: 66.3354
validation/objective_mean: 19.9660
test/select_item_mean: 0.3850
validation/abs_regret_mean: 10.8724
validation/select_item_mean: 0.3886
train/rel_regret_mean: 0.3565
train/solver_calls_mean: 42669.8182
test/abs_regret_mean: 11.2389
validation/rel_regret_mean: 0.3484
validation/sym_rel_regret_mean: 0.2244
test/objective_mean: 19.0278
test/sym_rel_regret_mean: 0.2352
train/loss_mean: -18.2435
[7]:
import matplotlib.pyplot as plt
fig, axs = plt.subplots(1, 2, figsize=(10, 3))
metric = "train/objective_mean"
_ = axs[0].plot([d[metric] for d in runner.logger.epoch_metrics_list if metric in d.keys()])
_ = axs[0].set_title(metric)
metric = "validation/objective_mean"
_ = axs[1].plot([d[metric] for d in runner.logger.epoch_metrics_list if metric in d.keys()])
_ = axs[1].set_title(metric)
References¶
[1] Akshay Agrawal, Brandon Amos, Shane Barratt, Stephen Boyd, Steven Diamond, and J Zico Kolter. Differentiable convex optimization layers. Advances in neural information processing systems, 32, 2019. doi:10.48550/arXiv.1910.12430.
[2] Bo Tang and Elias B. Khalil. Pyepo: a pytorch-based end-to-end predict-then-optimize library for linear and integer programming. Mathematical Programming Computation, 16(3):297–335, 2024. doi:10.1007/s12532-024-00255-x.