Updated thesis

This commit is contained in:
2024-05-13 10:08:47 +02:00
parent bc33b0368d
commit 56d56446fa
17 changed files with 248 additions and 107 deletions

View File

@@ -169,11 +169,16 @@ class NrvDataset(Dataset):
all_features = torch.cat(all_features_list, dim=0)
else:
all_features_list = [nrv_features.unsqueeze(1)]
all_features_list = [nrv_features + self.]
if self.forecast_features.numel() > 0:
history_forecast_features = self.forecast_features[
actual_idx + 1 : actual_idx + self.sequence_length + 1, :
actual_idx
+ 1 : actual_idx
+ self.sequence_length
+ self.predict_sequence_length,
:,
]
all_features_list.append(history_forecast_features)

View File

@@ -80,7 +80,7 @@ class GRUDiffusionModel(DiffusionModel):
self.gru = nn.GRU(
input_size=input_size + time_dim + other_inputs_dim,
hidden_size=gru_hidden_size,
num_layers=3,
num_layers=1,
batch_first=True,
)

View File

@@ -590,43 +590,43 @@ class DiffusionTrainer:
title="CRPS", series="test", value=mean_crps, iteration=epoch
)
if self.policy_evaluator:
_, test_loader = self.data_processor.get_dataloaders(
predict_sequence_length=self.ts_length, full_day_skip=True
)
# if self.policy_evaluator:
# _, test_loader = self.data_processor.get_dataloaders(
# predict_sequence_length=self.ts_length, full_day_skip=True
# )
optimal_penalty, profit, charge_cycles = (
self.policy_evaluator.optimize_penalty_for_target_charge_cycles(
idx_samples=generated_samples,
test_loader=test_loader,
initial_penalty=self.prev_optimal_penalty,
target_charge_cycles=283,
initial_learning_rate=1,
max_iterations=50,
tolerance=1,
iteration=epoch,
)
)
# optimal_penalty, profit, charge_cycles = (
# self.policy_evaluator.optimize_penalty_for_target_charge_cycles(
# idx_samples=generated_samples,
# test_loader=test_loader,
# initial_penalty=self.prev_optimal_penalty,
# target_charge_cycles=283,
# initial_learning_rate=1,
# max_iterations=50,
# tolerance=1,
# iteration=epoch,
# )
# )
self.prev_optimal_penalty = optimal_penalty
# self.prev_optimal_penalty = optimal_penalty
task.get_logger().report_scalar(
title="Optimal Penalty",
series="test",
value=optimal_penalty,
iteration=epoch,
)
# task.get_logger().report_scalar(
# title="Optimal Penalty",
# series="test",
# value=optimal_penalty,
# iteration=epoch,
# )
task.get_logger().report_scalar(
title="Optimal Profit", series="test", value=profit, iteration=epoch
)
# task.get_logger().report_scalar(
# title="Optimal Profit", series="test", value=profit, iteration=epoch
# )
task.get_logger().report_scalar(
title="Optimal Charge Cycles",
series="test",
value=charge_cycles,
iteration=epoch,
)
# task.get_logger().report_scalar(
# title="Optimal Charge Cycles",
# series="test",
# value=charge_cycles,
# iteration=epoch,
# )
return mean_crps, generated_samples

View File

@@ -2,7 +2,7 @@ from src.utils.clearml import ClearMLHelper
clearml_helper = ClearMLHelper(project_name="Thesis/NrvForecast")
task = clearml_helper.get_task(
task_name="Diffusion Training (GRU - 2048): hidden_sizes=[512, 512] (300 steps), lr=0.0001, time_dim=8 + NRV + L + W + PV + NP",
task_name="Diffusion Training: hidden_sizes=[1024, 1024] (300 steps), lr=0.0001, time_dim=8 + NRV + L + W + PV + NP",
)
task.execute_remotely(queue_name="default", exit_process=True)
@@ -32,7 +32,7 @@ data_config.NOMINAL_NET_POSITION = True
data_config = task.connect(data_config, name="data_features")
data_processor = DataProcessor(data_config, path="", lstm=True)
data_processor = DataProcessor(data_config, path="", lstm=False)
data_processor.set_batch_size(64)
data_processor.set_full_day_skip(True)
@@ -42,33 +42,35 @@ print("Input dim: ", inputDim)
model_parameters = {
"epochs": 15000,
"learning_rate": 0.0001,
"hidden_sizes": [512, 512],
"hidden_sizes": [1024, 1024],
"time_dim": 8,
}
model_parameters = task.connect(model_parameters, name="model_parameters")
#### Model ####
# model = SimpleDiffusionModel(
# 96,
# model_parameters["hidden_sizes"],
# other_inputs_dim=inputDim[1],
# time_dim=model_parameters["time_dim"],
# )
model = GRUDiffusionModel(
model = SimpleDiffusionModel(
96,
model_parameters["hidden_sizes"],
other_inputs_dim=inputDim[2],
other_inputs_dim=inputDim[1],
time_dim=model_parameters["time_dim"],
gru_hidden_size=2048,
)
# model = GRUDiffusionModel(
# 96,
# model_parameters["hidden_sizes"],
# other_inputs_dim=inputDim[2],
# time_dim=model_parameters["time_dim"],
# gru_hidden_size=1024,
# )
### Policy Evaluator ###
battery = Battery(2, 1)
baseline_policy = BaselinePolicy(battery, data_path="")
policy_evaluator = PolicyEvaluator(baseline_policy, task)
#### Trainer ####
trainer = DiffusionTrainer(model, data_processor, "cuda", policy_evaluator=None)
trainer = DiffusionTrainer(
model, data_processor, "cuda", policy_evaluator=policy_evaluator
)
trainer.train(model_parameters["epochs"], model_parameters["learning_rate"], task)