From aa09678242630304f661d4ceb7a05073159150f7 Mon Sep 17 00:00:00 2001 From: Bobby Noelte Date: Sun, 1 Mar 2026 11:52:08 +0100 Subject: [PATCH] chore: guard against visualization errors in genetic optimization (#920) Make genetic optimization run ignore errors in solution visualization. Signed-off-by: Bobby Noelte --- config.yaml | 2 +- docs/_generated/configexample.md | 2 +- docs/_generated/configgeneral.md | 6 +-- docs/_generated/openapi.md | 2 +- openapi.json | 6 +-- .../optimization/genetic/genetic.py | 38 +++++++++++-------- 6 files changed, 31 insertions(+), 25 deletions(-) diff --git a/config.yaml b/config.yaml index fc06fa5..0431c9f 100644 --- a/config.yaml +++ b/config.yaml @@ -6,7 +6,7 @@ # the root directory (no add-on folder as usual). name: "Akkudoktor-EOS" -version: "0.2.0.dev2602281462942819" +version: "0.2.0.dev2602281697121815" slug: "eos" description: "Akkudoktor-EOS add-on" url: "https://github.com/Akkudoktor-EOS/EOS" diff --git a/docs/_generated/configexample.md b/docs/_generated/configexample.md index 681d1ba..499f5ea 100644 --- a/docs/_generated/configexample.md +++ b/docs/_generated/configexample.md @@ -120,7 +120,7 @@ } }, "general": { - "version": "0.2.0.dev2602281462942819", + "version": "0.2.0.dev2602281697121815", "data_folder_path": "/home/user/.local/share/net.akkudoktoreos.net", "data_output_subpath": "output", "latitude": 52.52, diff --git a/docs/_generated/configgeneral.md b/docs/_generated/configgeneral.md index 7ec919d..d7d95ec 100644 --- a/docs/_generated/configgeneral.md +++ b/docs/_generated/configgeneral.md @@ -16,7 +16,7 @@ | latitude | `EOS_GENERAL__LATITUDE` | `Optional[float]` | `rw` | `52.52` | Latitude in decimal degrees between -90 and 90. North is positive (ISO 19115) (°) | | longitude | `EOS_GENERAL__LONGITUDE` | `Optional[float]` | `rw` | `13.405` | Longitude in decimal degrees within -180 to 180 (°) | | timezone | | `Optional[str]` | `ro` | `N/A` | Computed timezone based on latitude and longitude. | -| version | `EOS_GENERAL__VERSION` | `str` | `rw` | `0.2.0.dev2602281462942819` | Configuration file version. Used to check compatibility. | +| version | `EOS_GENERAL__VERSION` | `str` | `rw` | `0.2.0.dev2602281697121815` | Configuration file version. Used to check compatibility. | ::: @@ -28,7 +28,7 @@ ```json { "general": { - "version": "0.2.0.dev2602281462942819", + "version": "0.2.0.dev2602281697121815", "data_folder_path": "/home/user/.local/share/net.akkudoktoreos.net", "data_output_subpath": "output", "latitude": 52.52, @@ -46,7 +46,7 @@ ```json { "general": { - "version": "0.2.0.dev2602281462942819", + "version": "0.2.0.dev2602281697121815", "data_folder_path": "/home/user/.local/share/net.akkudoktoreos.net", "data_output_subpath": "output", "latitude": 52.52, diff --git a/docs/_generated/openapi.md b/docs/_generated/openapi.md index d0a99ce..653e23a 100644 --- a/docs/_generated/openapi.md +++ b/docs/_generated/openapi.md @@ -1,6 +1,6 @@ # Akkudoktor-EOS -**Version**: `v0.2.0.dev2602281462942819` +**Version**: `v0.2.0.dev2602281697121815` **Description**: This project provides a comprehensive solution for simulating and optimizing an energy system based on renewable energy sources. With a focus on photovoltaic (PV) systems, battery storage (batteries), load management (consumer requirements), heat pumps, electric vehicles, and consideration of electricity price data, this system enables forecasting and optimization of energy flow and costs over a specified period. diff --git a/openapi.json b/openapi.json index 335fbef..57ac34a 100644 --- a/openapi.json +++ b/openapi.json @@ -8,7 +8,7 @@ "name": "Apache 2.0", "url": "https://www.apache.org/licenses/LICENSE-2.0.html" }, - "version": "v0.2.0.dev2602281462942819" + "version": "v0.2.0.dev2602281697121815" }, "paths": { "/v1/admin/cache/clear": { @@ -4451,7 +4451,7 @@ "type": "string", "title": "Version", "description": "Configuration file version. Used to check compatibility.", - "default": "0.2.0.dev2602281462942819" + "default": "0.2.0.dev2602281697121815" }, "data_folder_path": { "type": "string", @@ -4514,7 +4514,7 @@ "type": "string", "title": "Version", "description": "Configuration file version. Used to check compatibility.", - "default": "0.2.0.dev2602281462942819" + "default": "0.2.0.dev2602281697121815" }, "data_folder_path": { "type": "string", diff --git a/src/akkudoktoreos/optimization/genetic/genetic.py b/src/akkudoktoreos/optimization/genetic/genetic.py index b3b17ca..f8938cb 100644 --- a/src/akkudoktoreos/optimization/genetic/genetic.py +++ b/src/akkudoktoreos/optimization/genetic/genetic.py @@ -1202,23 +1202,29 @@ class GeneticOptimization(OptimizationBase): else: discharge = discharge.tolist() - # Visualize the results - visualize = { - "ac_charge": ac_charge_hours, - "dc_charge": dc_charge_hours, - "discharge_allowed": discharge, - "eautocharge_hours_float": eautocharge_hours_float, - "result": simulation_result, - "eauto_obj": self.simulation.ev.to_dict() if self.simulation.ev else None, - "start_solution": start_solution, - "spuelstart": washingstart_int, - "extra_data": extra_data, - "fitness_history": self.fitness_history, - "fixed_seed": self.fix_seed, - } - from akkudoktoreos.utils.visualize import prepare_visualize + # Visualize the results in PDF + try: + from akkudoktoreos.utils.visualize import prepare_visualize - prepare_visualize(parameters, visualize, start_hour=start_hour) + visualize = { + "ac_charge": ac_charge_hours, + "dc_charge": dc_charge_hours, + "discharge_allowed": discharge, + "eautocharge_hours_float": eautocharge_hours_float, + "result": simulation_result, + "eauto_obj": self.simulation.ev.to_dict() if self.simulation.ev else None, + "start_solution": start_solution, + "spuelstart": washingstart_int, + "extra_data": extra_data, + "fitness_history": self.fitness_history, + "fixed_seed": self.fix_seed, + } + + prepare_visualize(parameters, visualize, start_hour=start_hour) + + except Exception as ex: + error_msg = f"Visualization failed: {ex}" + logger.error(error_msg) return GeneticSolution( **{