diff --git a/config.yaml b/config.yaml index ae94966..c94848f 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.dev2603140879799190" +version: "0.2.0.dev2603160842907888" slug: "eos" description: "Akkudoktor-EOS add-on" url: "https://github.com/Akkudoktor-EOS/EOS" diff --git a/docs/_generated/openapi.md b/docs/_generated/openapi.md index b0fc3e1..1b07d3d 100644 --- a/docs/_generated/openapi.md +++ b/docs/_generated/openapi.md @@ -1,6 +1,6 @@ # Akkudoktor-EOS -**Version**: `v0.2.0.dev2603140879799190` +**Version**: `v0.2.0.dev2603160842907888` **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 739d795..52de1ab 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.dev2603140879799190" + "version": "v0.2.0.dev2603160842907888" }, "paths": { "/v1/admin/cache/clear": { diff --git a/src/akkudoktoreos/optimization/genetic/genetic.py b/src/akkudoktoreos/optimization/genetic/genetic.py index f8938cb..212b77e 100644 --- a/src/akkudoktoreos/optimization/genetic/genetic.py +++ b/src/akkudoktoreos/optimization/genetic/genetic.py @@ -113,8 +113,14 @@ class GeneticSimulation(PydanticBaseModel): home_appliance: Optional[HomeAppliance] = None, inverter: Optional[Inverter] = None, ) -> None: + """Prepare simulation runs. + + Populate internal arrays and device references used during simulation. + """ self.optimization_hours = optimization_hours self.prediction_hours = prediction_hours + + # Load arrays from provided EMS parameters self.load_energy_array = np.array(parameters.gesamtlast, float) self.pv_prediction_wh = np.array(parameters.pv_prognose_wh, float) self.elect_price_hourly = np.array(parameters.strompreis_euro_pro_wh, float) @@ -125,6 +131,8 @@ class GeneticSimulation(PydanticBaseModel): len(self.load_energy_array), parameters.einspeiseverguetung_euro_pro_wh, float ) ) + + # Associate devices if inverter: self.battery = inverter.battery else: @@ -132,23 +140,14 @@ class GeneticSimulation(PydanticBaseModel): self.ev = ev self.home_appliance = home_appliance self.inverter = inverter + + # Initialize per-hour action arrays for the prediction horizon self.ac_charge_hours = np.full(self.prediction_hours, 0.0) self.dc_charge_hours = np.full(self.prediction_hours, 0.0) self.bat_discharge_hours = np.full(self.prediction_hours, 0.0) self.ev_charge_hours = np.full(self.prediction_hours, 0.0) self.ev_discharge_hours = np.full(self.prediction_hours, 0.0) self.home_appliance_start_hour = None - """Prepare simulation runs.""" - self.load_energy_array = np.array(parameters.gesamtlast, float) - self.pv_prediction_wh = np.array(parameters.pv_prognose_wh, float) - self.elect_price_hourly = np.array(parameters.strompreis_euro_pro_wh, float) - self.elect_revenue_per_hour_arr = ( - parameters.einspeiseverguetung_euro_pro_wh - if isinstance(parameters.einspeiseverguetung_euro_pro_wh, list) - else np.full( - len(self.load_energy_array), parameters.einspeiseverguetung_euro_pro_wh, float - ) - ) def reset(self) -> None: if self.ev: @@ -299,7 +298,7 @@ class GeneticSimulation(PydanticBaseModel): # Default return if no electric vehicle is available soc_ev_per_hour = np.full((total_hours), 0) - if home_appliance_fast and self.home_appliance_start_hour: + if home_appliance_fast and self.home_appliance_start_hour is not None: home_appliance_enabled = True # Pre-allocate arrays for the results, optimized for speed home_appliance_wh_per_hour = np.full((total_hours), np.nan) @@ -335,6 +334,13 @@ class GeneticSimulation(PydanticBaseModel): consumption += loaded_energy_ev losses_wh_per_hour[hour_idx] += verluste_eauto + # Save battery SOC before inverter processing = true begin-of-interval state. + # Must be recorded here (before DC charge/discharge) so the displayed SOC at + # timestamp T reflects what the battery actually had at the START of interval T, + # not the post-DC result. Consistent with the EV SOC convention above. + if battery_fast: + soc_per_hour[hour_idx] = battery_fast.current_soc_percentage() + # Process inverter logic energy_feedin_grid_actual = energy_consumption_grid_actual = losses = eigenverbrauch = ( 0.0 @@ -351,7 +357,6 @@ class GeneticSimulation(PydanticBaseModel): # AC PV Battery Charge if battery_fast: - soc_per_hour[hour_idx] = battery_fast.current_soc_percentage() # save begin state hour_ac_charge = ac_charge_hours_fast[hour] if hour_ac_charge > 0.0 and ac_charging_possible: # Cap charge factor by max_ac_charge_power_w if set @@ -436,6 +441,9 @@ class GeneticOptimization(OptimizationBase): self.config.prediction.hours - self.config.optimization.horizon_hours ) self.ev_possible_charge_values: list[float] = [1.0] + # Separate charge-level list for battery AC charging (independent of EV rates). + # Populated from parameters.pv_akku.charge_rates in optimierung_ems. + self.bat_possible_charge_values: list[float] = [1.0] self.verbose = verbose self.fix_seed = fixed_seed self.optimize_ev = True @@ -457,29 +465,31 @@ class GeneticOptimization(OptimizationBase): ) -> tuple[np.ndarray, np.ndarray, np.ndarray]: """Decode the input array into ac_charge, dc_charge, and discharge arrays.""" discharge_hours_bin_np = np.array(discharge_hours_bin) - len_ac = len(self.ev_possible_charge_values) + # Battery AC charge uses its own charge-level list (bat_possible_charge_values). + len_bat = len(self.bat_possible_charge_values) - # Categorization: - # Idle: 0 .. len_ac-1 - # Discharge: len_ac .. 2*len_ac - 1 - # AC Charge: 2*len_ac .. 3*len_ac - 1 - # DC optional: 3*len_ac (not allowed), 3*len_ac + 1 (allowed) + # Categorization (using battery charge levels): + # Idle: 0 .. len_bat-1 + # Discharge: len_bat .. 2*len_bat - 1 + # AC Charge: 2*len_bat .. 3*len_bat - 1 (maps to bat_possible_charge_values) + # DC optional: 3*len_bat (not allowed), 3*len_bat + 1 (allowed) - # Idle has no charge, Discharge has binary 1, AC Charge has corresponding values # Idle states - idle_mask = (discharge_hours_bin_np >= 0) & (discharge_hours_bin_np < len_ac) + idle_mask = (discharge_hours_bin_np >= 0) & (discharge_hours_bin_np < len_bat) # Discharge states - discharge_mask = (discharge_hours_bin_np >= len_ac) & (discharge_hours_bin_np < 2 * len_ac) + discharge_mask = (discharge_hours_bin_np >= len_bat) & ( + discharge_hours_bin_np < 2 * len_bat + ) # AC states - ac_mask = (discharge_hours_bin_np >= 2 * len_ac) & (discharge_hours_bin_np < 3 * len_ac) - ac_indices = (discharge_hours_bin_np[ac_mask] - 2 * len_ac).astype(int) + ac_mask = (discharge_hours_bin_np >= 2 * len_bat) & (discharge_hours_bin_np < 3 * len_bat) + ac_indices = (discharge_hours_bin_np[ac_mask] - 2 * len_bat).astype(int) # DC states (if enabled) if self.optimize_dc_charge: - dc_not_allowed_state = 3 * len_ac - dc_allowed_state = 3 * len_ac + 1 + dc_not_allowed_state = 3 * len_bat + dc_allowed_state = 3 * len_bat + 1 dc_charge = np.where(discharge_hours_bin_np == dc_allowed_state, 1, 0) else: dc_charge = np.ones_like(discharge_hours_bin_np, dtype=float) @@ -489,7 +499,7 @@ class GeneticOptimization(OptimizationBase): discharge[discharge_mask] = 1 # Set Discharge states to 1 ac_charge = np.zeros_like(discharge_hours_bin_np, dtype=float) - ac_charge[ac_mask] = [self.ev_possible_charge_values[i] for i in ac_indices] + ac_charge[ac_mask] = [self.bat_possible_charge_values[i] for i in ac_indices] # Idle is just 0, already default. @@ -497,12 +507,12 @@ class GeneticOptimization(OptimizationBase): def mutate(self, individual: list[int]) -> tuple[list[int]]: """Custom mutation function for the individual.""" - # Calculate the number of states - len_ac = len(self.ev_possible_charge_values) + # Calculate the number of states using battery charge levels + len_bat = len(self.bat_possible_charge_values) if self.optimize_dc_charge: - total_states = 3 * len_ac + 2 + total_states = 3 * len_bat + 2 else: - total_states = 3 * len_ac + total_states = 3 * len_bat # 1. Mutating the charge_discharge part charge_discharge_part = individual[: self.config.prediction.hours] @@ -633,30 +643,30 @@ class GeneticOptimization(OptimizationBase): creator.create("Individual", list, fitness=creator.FitnessMin) self.toolbox = base.Toolbox() - len_ac = len(self.ev_possible_charge_values) + # Battery state space uses bat_possible_charge_values; EV index space uses ev_possible_charge_values. + len_bat = len(self.bat_possible_charge_values) + len_ev = len(self.ev_possible_charge_values) - # Total number of states without DC: - # Idle: len_ac states - # Discharge: len_ac states - # AC-Charge: len_ac states - # Total without DC: 3 * len_ac - - # With DC: + 2 states + # Total battery/discharge states: + # Idle: len_bat states + # Discharge: len_bat states + # AC-Charge: len_bat states (maps to bat_possible_charge_values) + # With DC: + 2 additional states if self.optimize_dc_charge: - total_states = 3 * len_ac + 2 + total_states = 3 * len_bat + 2 else: - total_states = 3 * len_ac + total_states = 3 * len_bat # State space: 0 .. (total_states - 1) self.toolbox.register("attr_discharge_state", random.randint, 0, total_states - 1) - # EV attributes + # EV attributes (separate index space) if self.optimize_ev: self.toolbox.register( "attr_ev_charge_index", random.randint, 0, - len_ac - 1, + len_ev - 1, ) # Household appliance start time @@ -666,17 +676,17 @@ class GeneticOptimization(OptimizationBase): self.toolbox.register("population", tools.initRepeat, list, self.toolbox.individual) self.toolbox.register("mate", tools.cxTwoPoint) - # Mutation operator for charge/discharge states + # Mutation operator for battery charge/discharge states self.toolbox.register( "mutate_charge_discharge", tools.mutUniformInt, low=0, up=total_states - 1, indpb=0.2 ) - # Mutation operator for EV states + # Mutation operator for EV states (separate index space) self.toolbox.register( "mutate_ev_charge_index", tools.mutUniformInt, low=0, - up=len_ac - 1, + up=len_ev - 1, indpb=0.2, ) @@ -800,7 +810,7 @@ class GeneticOptimization(OptimizationBase): if np.any(invalid_charge_mask): invalid_indices = np.where(invalid_charge_mask)[0] if len(invalid_indices) > 1: - eautocharge_hours_index_tail[invalid_indices[1:]] = 0 + eautocharge_hours_index_tail[invalid_indices] = 0 eautocharge_hours_index[-min_length:] = eautocharge_hours_index_tail.tolist() @@ -1127,6 +1137,25 @@ class GeneticOptimization(OptimizationBase): else: self.optimize_ev = False + # Battery AC charge rates — use the battery's configured charge_rates so the + # optimizer can select partial AC charge power (e.g. 10 %, 50 %, 100 %) instead + # of always forcing full power. Falls back to [1.0] when not configured. + if parameters.pv_akku and parameters.pv_akku.charge_rates: + self.bat_possible_charge_values = [ + r for r in parameters.pv_akku.charge_rates if r > 0.0 + ] or [1.0] + elif ( + self.config.devices.batteries + and self.config.devices.batteries[0] + and self.config.devices.batteries[0].charge_rates + ): + self.bat_possible_charge_values = [ + r for r in self.config.devices.batteries[0].charge_rates if r > 0.0 + ] or [1.0] + else: + self.bat_possible_charge_values = [1.0] + logger.debug("Battery AC charge levels: {}", self.bat_possible_charge_values) + # Initialize household appliance if applicable dishwasher = ( HomeAppliance( diff --git a/src/akkudoktoreos/optimization/genetic/geneticparams.py b/src/akkudoktoreos/optimization/genetic/geneticparams.py index b32716d..3c81029 100644 --- a/src/akkudoktoreos/optimization/genetic/geneticparams.py +++ b/src/akkudoktoreos/optimization/genetic/geneticparams.py @@ -407,6 +407,7 @@ class GeneticOptimizationParameters( max_charge_power_w=battery_config.max_charge_power_w, min_soc_percentage=battery_config.min_soc_percentage, max_soc_percentage=battery_config.max_soc_percentage, + charge_rates=battery_config.charge_rates, ) except: logger.info( diff --git a/src/akkudoktoreos/optimization/genetic/geneticsolution.py b/src/akkudoktoreos/optimization/genetic/geneticsolution.py index 520fc90..c9a21c8 100644 --- a/src/akkudoktoreos/optimization/genetic/geneticsolution.py +++ b/src/akkudoktoreos/optimization/genetic/geneticsolution.py @@ -262,6 +262,67 @@ class GeneticSolution(ConfigMixin, GeneticParametersBaseModel): # Fallback → safe idle return BatteryOperationMode.IDLE, 1.0 + def _soc_clamped_operation_factors( + self, + ac_charge: float, + dc_charge: float, + discharge_allowed: bool, + soc_pct: float, + ) -> tuple[float, float, bool]: + """Clamp raw genetic gene values by the battery's actual SOC at that hour. + + The raw gene values represent the optimizer's *intent* and are stored + verbatim in the ``genetic_*`` solution columns. This method derives + the *effective* values that can physically be executed given the + battery's state of charge, used for the ``battery1_*_op_*`` columns + and for ``energy_management_plan`` instructions. + + Clamping rules: + - AC charge factor: scaled down proportionally when the battery + headroom (max_soc − current_soc) is smaller than what the + commanded factor would store in one hour. Set to 0 when full. + - DC charge factor (PV): zeroed when battery is at or above max SOC + (the inverter curtails automatically, but this makes intent clear). + - Discharge: blocked when SOC is at or below min SOC. + """ + bat_list = self.config.devices.batteries + if not bat_list: + return ac_charge, dc_charge, discharge_allowed + + bat = bat_list[0] + min_soc = float(bat.min_soc_percentage) + max_soc = float(bat.max_soc_percentage) + capacity_wh = float(bat.capacity_wh) + ch_eff = float(bat.charging_efficiency) + headroom_wh = max(0.0, (max_soc - soc_pct) / 100.0 * capacity_wh) + + # --- AC charge: scale to available headroom --- + effective_ac = ac_charge + if effective_ac > 0.0: + if headroom_wh <= 0.0: + effective_ac = 0.0 + else: + inv_list = self.config.devices.inverters + ac_to_dc_eff = float(inv_list[0].ac_to_dc_efficiency) if inv_list else 1.0 + max_ac_cp_w = ( + float(inv_list[0].max_ac_charge_power_w) + if inv_list and inv_list[0].max_ac_charge_power_w is not None + else float(bat.max_charge_power_w) + ) + max_dc_per_h_wh = effective_ac * max_ac_cp_w * ac_to_dc_eff * ch_eff + if max_dc_per_h_wh > headroom_wh: + effective_ac = effective_ac * (headroom_wh / max_dc_per_h_wh) + + # --- DC charge (PV): zero when battery is full --- + effective_dc = dc_charge + if effective_dc > 0.0 and headroom_wh <= 0.0: + effective_dc = 0.0 + + # --- Discharge: block at min SOC --- + effective_dis = discharge_allowed and (soc_pct > min_soc) + + return effective_ac, effective_dc, effective_dis + def optimization_solution(self) -> OptimizationSolution: """Provide the genetic solution as a general optimization solution. @@ -334,12 +395,26 @@ class GeneticSolution(ConfigMixin, GeneticParametersBaseModel): ac_charge_hour = self.ac_charge[hour_idx] dc_charge_hour = self.dc_charge[hour_idx] discharge_allowed_hour = bool(self.discharge_allowed[hour_idx]) - operation_mode, operation_mode_factor = self._battery_operation_from_solution( - ac_charge_hour, dc_charge_hour, discharge_allowed_hour - ) + + # Raw genetic gene values — optimizer intent, stored verbatim operation["genetic_ac_charge_factor"].append(ac_charge_hour) operation["genetic_dc_charge_factor"].append(dc_charge_hour) - operation["genetic_discharge_allowed_factor"].append(discharge_allowed_hour) + operation["genetic_discharge_allowed_factor"].append(float(discharge_allowed_hour)) + + # SOC-clamped effective values — what can physically be executed at + # this hour given the expected battery state of charge. + result_idx = hour_idx - start_day_hour + soc_h_pct = ( + self.result.akku_soc_pro_stunde[result_idx] + if result_idx < len(self.result.akku_soc_pro_stunde) + else 0.0 + ) + eff_ac, eff_dc, eff_dis = self._soc_clamped_operation_factors( + ac_charge_hour, dc_charge_hour, discharge_allowed_hour, soc_h_pct + ) + operation_mode, operation_mode_factor = self._battery_operation_from_solution( + eff_ac, eff_dc, eff_dis + ) for mode in BatteryOperationMode: mode_key = f"battery1_{mode.lower()}_op_mode" factor_key = f"battery1_{mode.lower()}_op_factor" @@ -561,10 +636,24 @@ class GeneticSolution(ConfigMixin, GeneticParametersBaseModel): for hour_idx, rate in enumerate(self.ac_charge): if hour_idx < start_day_hour: continue - operation_mode, operation_mode_factor = self._battery_operation_from_solution( + # Derive SOC-clamped effective factors so that FRBCInstruction + # operation_mode_factor reflects what can physically be executed, + # while the raw genetic gene values are preserved in the solution + # dataframe (genetic_*_factor columns). + result_idx = hour_idx - start_day_hour + soc_h_pct = ( + self.result.akku_soc_pro_stunde[result_idx] + if result_idx < len(self.result.akku_soc_pro_stunde) + else 0.0 + ) + eff_ac, eff_dc, eff_dis = self._soc_clamped_operation_factors( self.ac_charge[hour_idx], self.dc_charge[hour_idx], bool(self.discharge_allowed[hour_idx]), + soc_h_pct, + ) + operation_mode, operation_mode_factor = self._battery_operation_from_solution( + eff_ac, eff_dc, eff_dis ) if ( operation_mode == last_operation_mode diff --git a/tests/testdata/optimize_result_1.json b/tests/testdata/optimize_result_1.json index c3bf9e3..42f7052 100644 --- a/tests/testdata/optimize_result_1.json +++ b/tests/testdata/optimize_result_1.json @@ -17,7 +17,7 @@ 0.0, 0.0, 0.0, - 1.0, + 0.0, 0.0, 1.0, 0.0, @@ -37,15 +37,15 @@ 0.0, 0.0, 0.0, - 0.375, 0.0, 0.0, - 0.625, 0.0, 0.0, - 0.375, - 0.75, - 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, 0.0, 0.0 ], @@ -110,27 +110,11 @@ 0, 0, 0, - 0, - 1, - 0, - 0, - 1, - 1, - 0, - 0, - 0, - 0, - 1, - 1, - 1, - 0, - 0, 1, 0, 1, 1, - 0, - 0, + 1, 0, 1, 0, @@ -140,10 +124,26 @@ 0, 1, 1, + 1, + 1, 0, 1, 0, 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, 0, 0, 1, @@ -179,7 +179,7 @@ 992.46, 1155.99, 827.01, - 3132.98, + 1257.98, 1232.67, 871.26, 860.88, @@ -237,10 +237,10 @@ 0.0, 0.0, 0.0, - 0.22334747537370364, - 0.19016535126346096, + 0.19391086083906173, + 0.18681973047764083, 0.12880892587597292, - 0.04260510586128589, + 0.02404700392596282, 0.0, 0.0, 0.0, @@ -260,21 +260,21 @@ 0.0, 0.0, 0.0, - 0.059176154400016855, - 0.25751345302450973, - 0.14923279815365575, - 0.07926913850394514, - 0.024174420063375994, + 0.0, + 0.12500582038027028, + 0.14608958812480227, + 0.09047346757070289, + 0.010404817872487553, 0.0, 0.0, 0.0, 0.0, 0.0 ], - "Gesamt_Verluste": 2500.030611233429, - "Gesamtbilanz_Euro": 1.4988843060949502, - "Gesamteinnahmen_Euro": 1.1542928225199272, - "Gesamtkosten_Euro": 2.6531771286148773, + "Gesamt_Verluste": 2878.660271824896, + "Gesamtbilanz_Euro": 1.053854835771092, + "Gesamteinnahmen_Euro": 0.9055602150669013, + "Gesamtkosten_Euro": 1.9594150508379933, "Home_appliance_wh_per_hour": [ 0.0, 0.0, @@ -316,39 +316,39 @@ 0.0 ], "Kosten_Euro_pro_Stunde": [ - 0.027996119999999992, 0.0, - 0.04475252599999999, - 0.0018232052307313393, + 0.004569992000000018, 0.0, 0.0, - 0.008135265032732555, + 0.0, + 4.482711108977355e-14, + 0.0, 0.016809914659344942, - 0.061530097476751734, + 0.0, 0.05480703000000003, 0.0, + 0.291163892, + 0.0, 0.0, 0.0, - 0.19588158, - 0.174739608, 0.0, 0.22802125600000003, 0.0, - 0.0, + 0.182970359, 0.162995926, - 0.16677339, + 0.0, 0.26411047, 0.0, - 0.08545095, - 0.0, - 0.028255713342252034, - 0.0, - 0.3629952558325975, 0.0, 0.0, - 0.0076430797975209205, 0.0, - 0.04565364324294593, + 0.0, + 0.010682755832597498, + 0.0, + 0.0003442778967139274, + 0.0, + 0.028137079449292023, + 0.0, 0.08231598, 0.174597189, 0.293043269, @@ -356,39 +356,39 @@ 0.16484566 ], "Netzbezug_Wh_pro_Stunde": [ - 122.78999999999996, 0.0, - 213.81999999999994, - 9.703061366318996, + 20.660000000000082, 0.0, 0.0, - 37.01212480770043, + 0.0, + 2.236881790906864e-10, + 0.0, 74.05248748610107, - 205.30563055305882, + 0.0, 171.54000000000008, 0.0, + 980.68, + 0.0, 0.0, 0.0, - 704.61, - 516.37, 0.0, 694.34, 0.0, - 0.0, + 556.31, 488.89, - 506.91, + 0.0, 799.85, 0.0, - 351.65, - 0.0, - 127.73830624887898, - 0.0, - 1931.853410498124, 0.0, 0.0, - 34.77288351920346, 0.0, - 152.3311419517715, + 0.0, + 56.853410498124, + 0.0, + 1.7179535764168035, + 0.0, + 123.95189184710142, + 0.0, 257.64, 566.69, 987.01, @@ -401,10 +401,10 @@ 0.0, 0.0, 0.0, - 3190.678219624338, - 2716.6478751922996, + 2770.155154843739, + 2668.8532925377262, 1840.127512513899, - 608.6443694469413, + 343.5286275137546, 0.0, 0.0, 0.0, @@ -424,11 +424,11 @@ 0.0, 0.0, 0.0, - 845.3736342859552, - 3678.7636146358536, - 2131.8971164807967, - 1132.4162643420734, - 345.3488580482285, + 0.0, + 1785.797434003861, + 2086.994116068604, + 1292.4781081528986, + 148.64025532125078, 0.0, 0.0, 0.0, @@ -436,39 +436,39 @@ 0.0 ], "Verluste_Pro_Stunde": [ + 16.744090909090914, 0.0, - 2.817272727272737, - 0.0, - 2.3948326360417305, + 29.157272727272726, + 3.7179773678125034, 582.6180000000041, - 138.18861364508305, - 0.0, - 0.0, + 188.65138141872444, + 10.782457846871594, 0.0, + 59.810111380126784, 0.0, 99.72409090909093, - 133.72909090909081, + 0.0, 124.41545454545451, - 0.0, - 0.0, + 96.08318181818186, + 70.41409090909087, 118.37045454545455, 0.0, 83.01681818181817, - 75.86045454545456, 0.0, 0.0, + 69.12409090909085, 0.0, 109.96227272727276, - 0.0, + 47.952272727272714, 16.01263877609336, - 38.52740325013451, + 55.946263193163475, 161.62968357967037, - 239.20999074022512, - 436.85356388568886, - 0.5004782113116364, - 0.0, - 36.109951963721926, + 14.209990740225123, + 538.2984000000038, + 227.42215349036655, + 10.13011689299087, 0.0, + 44.377460775206174, 0.0, 0.0, 0.0, @@ -477,33 +477,35 @@ ], "akku_soc_pro_stunde": [ 80.0, - 79.91107093663912, - 79.91107093663912, - 79.97759406541806, - 96.1614273987495, + 79.4714617768595, + 79.4714617768595, + 78.55109331955923, + 78.57585051614844, + 94.75968384947988, 100.0, 100.0, 100.0, 100.0, 100.0, 96.85214359504131, - 92.63089703856748, - 88.7036415289256, - 88.7036415289256, - 88.7036415289256, - 84.96720041322313, - 84.96720041322313, - 82.34672004132229, - 79.95213498622587, - 79.95213498622587, - 79.95213498622587, - 79.95213498622587, - 76.48110365013771, - 76.48110365013771, - 76.64231728537023, - 77.71252293120729, - 81.22045681594867, - 81.61517878095492, + 96.85214359504131, + 92.92488808539943, + 89.89195936639118, + 87.6692923553719, + 83.93285123966942, + 83.93285123966942, + 81.31237086776858, + 81.31237086776858, + 81.31237086776858, + 79.13042355371898, + 79.13042355371898, + 75.65939221763084, + 74.14574724517905, + 74.30696088041155, + 74.82732877552169, + 78.33526266026307, + 78.72998462526934, + 93.68271795860093, 100.0, 100.0, 100.0, @@ -511,8 +513,6 @@ 100.0, 100.0, 100.0, - 100.0, - 96.84060778236915, 96.84060778236915 ], "Electricity_price": [ @@ -668,53 +668,105 @@ }, "start_solution": [ 1.0, - 5.0, - 19.0, - 10.0, - 19.0, - 7.0, - 17.0, - 18.0, - 3.0, - 15.0, - 4.0, - 10.0, - 2.0, - 3.0, - 11.0, - 10.0, - 5.0, - 20.0, - 2.0, - 20.0, - 11.0, - 13.0, - 11.0, + 1.0, + 1.0, + 1.0, 0.0, 1.0, - 8.0, - 4.0, - 11.0, - 8.0, - 3.0, 0.0, 1.0, - 12.0, - 14.0, - 13.0, + 2.0, + 1.0, + 1.0, 0.0, - 13.0, - 15.0, - 12.0, - 11.0, - 17.0, - 12.0, - 3.0, - 15.0, - 18.0, - 20.0, - 7.0, - 5.0 + 1.0, + 1.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 2.0, + 1.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 ], "washingstart": null } \ No newline at end of file diff --git a/tests/testdata/optimize_result_1_be.json b/tests/testdata/optimize_result_1_be.json index a1ddb9a..971025f 100644 --- a/tests/testdata/optimize_result_1_be.json +++ b/tests/testdata/optimize_result_1_be.json @@ -110,42 +110,42 @@ 0, 0, 0, - 0, - 1, 1, 0, 1, - 1, - 1, - 0, - 0, 0, 1, - 1, - 1, - 1, - 1, - 1, - 0, - 0, - 0, - 0, 0, 1, - 1, - 1, - 0, 0, 1, 0, 1, + 0, + 1, + 0, + 0, + 1, 1, 1, 1, 1, 0, 1, + 0, + 0, + 0, + 0, 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, 1, 0 ], @@ -237,10 +237,10 @@ 0.0, 0.0, 0.0, - 0.20401973777039792, + 0.19478794541504615, 0.18681973047764083, 0.12880892587597292, - 0.04260510586128589, + 0.02404700392596282, 0.0, 0.0, 0.0, @@ -261,9 +261,9 @@ 0.0, 0.0, 0.0, - 0.07946910594375262, + 0.17104472158211628, 0.14608958812480227, - 0.07926913850394514, + 0.09047346757070289, 0.010404817872487553, 0.0, 0.0, @@ -271,10 +271,10 @@ 0.0, 0.0 ], - "Gesamt_Verluste": 3181.0071533862283, - "Gesamtbilanz_Euro": 0.5201969277249601, - "Gesamteinnahmen_Euro": 0.8774861504302851, - "Gesamtkosten_Euro": 1.3976830781552452, + "Gesamt_Verluste": 2804.7326610375394, + "Gesamtbilanz_Euro": 0.9004618481798127, + "Gesamteinnahmen_Euro": 0.9524762008447317, + "Gesamtkosten_Euro": 1.8529380490245444, "Home_appliance_wh_per_hour": [ 0.0, 0.0, @@ -316,82 +316,82 @@ 0.0 ], "Kosten_Euro_pro_Stunde": [ - 0.027996119999999992, 0.0, + 0.004569992000000018, 0.0, 0.0018232052307313393, 0.0, - 0.0, + 4.482711108977355e-14, 0.0, 0.016809914659344942, - 0.061530097476751734, + 0.0, 0.05480703000000003, 0.0, + 0.291163892, + 0.0, + 0.19588158, + 0.174739608, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.22802125600000003, - 0.199865757, - 0.182970359, - 0.162995926, 0.16677339, 0.0, - 0.0, - 0.0, + 0.24530383800000005, + 0.08545095, 0.007989913613567745, 0.028255713342252034, 0.0, 0.010682755832597498, 0.0, + 0.0003442778967139274, 0.0, - 0.0, - 0.0, + 0.028137079449292023, 0.0, 0.08231598, 0.0, - 0.0, + 0.293043269, 0.0, 0.16484566 ], "Netzbezug_Wh_pro_Stunde": [ - 122.78999999999996, 0.0, + 20.660000000000082, 0.0, 9.703061366318996, 0.0, - 0.0, + 2.236881790906864e-10, 0.0, 74.05248748610107, - 205.30563055305882, + 0.0, 171.54000000000008, 0.0, + 980.68, + 0.0, + 704.61, + 516.37, 0.0, 0.0, 0.0, 0.0, 0.0, - 694.34, - 608.79, - 556.31, - 488.89, 506.91, 0.0, - 0.0, - 0.0, + 806.3900000000001, + 351.65, 35.04348076126204, 127.73830624887898, 0.0, 56.853410498124, 0.0, + 1.7179535764168035, 0.0, - 0.0, - 0.0, + 123.95189184710142, 0.0, 257.64, 0.0, - 0.0, + 987.01, 0.0, 592.97 ], @@ -401,10 +401,10 @@ 0.0, 0.0, 0.0, - 2914.5676824342563, + 2782.6849345006594, 2668.8532925377262, 1840.127512513899, - 608.6443694469413, + 343.5286275137546, 0.0, 0.0, 0.0, @@ -425,9 +425,9 @@ 0.0, 0.0, 0.0, - 1135.2729420536089, + 2443.4960226016615, 2086.994116068604, - 1132.4162643420734, + 1292.4781081528986, 148.64025532125078, 0.0, 0.0, @@ -436,84 +436,84 @@ 0.0 ], "Verluste_Pro_Stunde": [ + 16.744090909090914, 0.0, - 2.817272727272737, 29.157272727272726, 2.3948326360417305, 582.6180000000041, - 171.3218781078929, + 187.1478078598941, 10.782457846871594, 0.0, - 0.0, + 59.810111380126784, 0.0, 99.72409090909093, - 133.72909090909081, + 0.0, 124.41545454545451, - 96.08318181818186, - 70.41409090909087, + 0.0, + 0.0, 118.37045454545455, - 0.0, - 0.0, - 0.0, - 0.0, + 94.68272727272722, + 83.01681818181817, + 75.86045454545456, + 66.66681818181814, 0.0, 109.0704545454546, - 109.96227272727276, - 47.952272727272714, + 0.0, + 0.0, 11.233982308648535, 38.52740325013451, 161.62968357967037, 14.209990740225123, 538.2984000000038, - 305.7193589211809, + 148.49832285863067, 10.13011689299087, - 36.109951963721926, + 0.0, 44.377460775206174, 0.0, 77.27590909090907, - 134.59227272727276, + 0.0, 100.08954545454549, 0.0 ], "akku_soc_pro_stunde": [ 80.0, - 79.91107093663912, - 78.99070247933885, - 79.05722560811779, - 95.24105894144923, + 79.4714617768595, + 79.4714617768595, + 78.55109331955923, + 78.61761644833817, + 94.80144978166962, 100.0, 100.0, 100.0, 100.0, 100.0, 96.85214359504131, - 92.63089703856748, - 88.7036415289256, - 85.67071280991735, - 83.44804579889806, - 79.71160468319557, - 79.71160468319557, - 79.71160468319557, - 79.71160468319557, - 79.71160468319557, - 79.71160468319557, - 76.26872417355371, - 72.79769283746555, - 71.28404786501376, - 71.59610292914289, - 72.66630857497995, - 76.17424245972133, - 76.56896442472758, - 91.52169775805919, + 96.85214359504131, + 92.92488808539943, + 92.92488808539943, + 92.92488808539943, + 89.18844696969695, + 86.19972451790632, + 83.57924414600548, + 81.18465909090907, + 79.08027720385672, + 79.08027720385672, + 75.63739669421484, + 75.63739669421484, + 75.63739669421484, + 75.94945175834397, + 77.01965740418103, + 80.52759128892241, + 80.92231325392866, + 95.87504658726026, 100.0, 100.0, 100.0, 100.0, 100.0, 97.56073519283747, - 93.3122417355372, - 90.15284951790635, - 90.15284951790635 + 97.56073519283747, + 94.40134297520663 ], "Electricity_price": [ 0.000228, @@ -667,53 +667,105 @@ "initial_soc_percentage": 54 }, "start_solution": [ - 15.0, - 5.0, - 12.0, - 19.0, - 7.0, - 17.0, - 15.0, - 20.0, - 3.0, - 7.0, - 3.0, - 9.0, - 13.0, - 14.0, - 10.0, - 7.0, - 13.0, - 3.0, - 5.0, - 4.0, - 9.0, - 11.0, - 11.0, - 12.0, - 13.0, - 7.0, - 14.0, - 4.0, - 5.0, - 5.0, - 5.0, - 13.0, - 10.0, - 8.0, - 4.0, - 6.0, - 10.0, - 3.0, - 10.0, - 8.0, - 10.0, - 13.0, - 12.0, - 14.0, - 11.0, - 12.0, - 8.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 1.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, 1.0 ], "washingstart": null diff --git a/tests/testdata/optimize_result_2.json b/tests/testdata/optimize_result_2.json index e28ec7e..d00a3d7 100644 --- a/tests/testdata/optimize_result_2.json +++ b/tests/testdata/optimize_result_2.json @@ -10,12 +10,22 @@ 0.0, 0.0, 0.0, - 0.375, 0.0, 0.0, - 0.75, + 1.0, 0.0, - 0.75, + 1.0, + 0.0, + 1.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 0.0, + 1.0, + 1.0, + 1.0, 0.0, 0.0, 0.0, @@ -33,19 +43,9 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.75, - 0.0, - 0.0, - 0.0, - 0.0, + 1.0, 0.0, 0.0 ], @@ -110,31 +110,11 @@ 0, 0, 0, - 0, - 1, 1, 0, 0, 0, 0, - 1, - 0, - 1, - 1, - 1, - 1, - 1, - 0, - 1, - 1, - 0, - 0, - 0, - 1, - 1, - 1, - 0, - 0, 0, 0, 0, @@ -147,74 +127,94 @@ 0, 0, 1, - 0 + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 1 ], "eautocharge_hours_float": [ - 0.0, - 0.5, - 0.0, + 1.0, 0.5, 0.375, - 1.0, - 0.875, 0.375, - 0.5, 1.0, + 0.75, + 1.0, + 0.75, + 0.5, 0.875, - 0.875, + 0.0, 0.875, 0.75, + 1.0, + 0.625, + 0.375, + 0.75, + 0.875, + 0.625, + 1.0, + 0.75, + 0.375, + 0.75, + 0.5, 0.5, 0.625, 0.875, + 0.5, + 0.0, + 0.0, 0.75, - 0.5, - 0.0, - 0.625, - 0.5, - 0.0, - 1.0, - 0.625, - 0.0, - 1.0, - 0.625, 0.875, - 0.375, + 0.0, + 0.0, 1.0, 0.375, + 0.375, + 1.0, + 0.0, + 0.875, + 0.5, + 1.0, 0.625, 0.75, - 0.75, - 0.0, - 0.5, - 0.875, - 0.875, - 0.75, - 0.875, - 0.5, - 0.875, - 0.0, - 0.375, 0.875, 1.0, + 0.5, 0.5 ], "result": { "Last_Wh_pro_Stunde": [ - 12105.07, + 1053.07, 10240.91, - 10497.56, - 12748.03, - 8907.67, - 13981.82, - 10393.22, - 1103.78, - 1129.12, + 14186.56, + 11620.03, + 11218.67, + 7609.82, + 9082.22, + 10280.78, + 2177.92, 1178.71, 1050.98, - 988.56, + 1988.56, 912.38, - 704.61, + 1704.6100000000001, 516.37, 868.05, 694.34, @@ -232,7 +232,7 @@ 1232.67, 871.26, 860.88, - 2658.0299999999997, + 1158.03, 1222.72, 1221.04, 949.99, @@ -241,44 +241,44 @@ 592.97 ], "EAuto_SoC_pro_Stunde": [ + 5.0, 5.0, 20.294999999999998, - 35.589999999999996, + 33.405, 50.885000000000005, - 63.995000000000005, - 72.735, - 83.66, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955, - 98.955 + 61.809999999999995, + 68.365, + 81.475, + 96.77, + 98.518, + 98.518, + 98.518, + 98.518, + 98.518, + 98.518, + 98.518, + 98.518, + 98.518, + 98.518, + 98.518, + 98.518, + 98.518, + 98.518, + 98.518, + 98.518, + 98.518, + 98.518, + 98.518, + 98.518, + 98.518, + 98.518, + 98.518, + 98.518, + 98.518, + 98.518, + 98.518, + 98.518, + 98.518 ], "Einnahmen_Euro_pro_Stunde": [ 0.0, @@ -309,21 +309,21 @@ 0.0, 0.0, 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0024471948828359577, + 0.010924611164505103, + 0.25751345302450973, + 0.14608958812480227, + 0.07926913850394514, + 0.010404817872487553, 0.0, 0.0, 0.0, 0.0, 0.0 ], - "Gesamt_Verluste": 8517.353033733361, - "Gesamtbilanz_Euro": 12.490712506647688, - "Gesamteinnahmen_Euro": 0.0024471948828359577, - "Gesamtkosten_Euro": 12.493159701530523, + "Gesamt_Verluste": 5766.286846118221, + "Gesamtbilanz_Euro": 12.78299149726557, + "Gesamteinnahmen_Euro": 0.5042016086902498, + "Gesamtkosten_Euro": 13.28719310595582, "Home_appliance_wh_per_hour": [ 0.0, 0.0, @@ -365,84 +365,84 @@ 0.0 ], "Kosten_Euro_pro_Stunde": [ - 2.54785212, - 1.061242392, - 1.0445786259999998, - 2.1770732859999997, - 0.53097063, - 1.6959351, - 1.4118501319999999, - 0.0, - 0.061530097476751734, - 0.0, - 0.0, 0.0, + 2.034522392, + 2.737606326, + 1.9651220859999998, + 0.9557324300000001, + 0.4189863, + 1.1236923319999998, + 1.64866014, + 0.07038454500000005, + 0.05480703000000003, 0.0, + 0.588063892, 0.0, + 0.47388158, 0.174739608, - 0.0, - 0.0, - 0.199865757, - 0.182970359, - 0.162995926, + 0.28801899, + 0.0, + 0.0, + 0.0, + 0.0, + 0.16677339, 0.0, 0.0, 0.0, - 0.08545095, 0.007989913613567745, 0.028255713342252034, - 0.025392879919306634, - 0.010682755832597498, - 4.174095896658514e-14, - 0.0003442778967139274, 0.0, - 0.368637079449292, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, 0.0, 0.08231598, 0.174597189, 0.293043269, 0.0, - 0.16484566 + 0.0 ], "Netzbezug_Wh_pro_Stunde": [ - 11174.789999999999, - 4797.66, - 4990.82, - 11586.34, - 2888.8500000000004, - 8462.75, - 6423.339999999999, - 0.0, - 205.30563055305882, - 0.0, - 0.0, 0.0, + 9197.66, + 13079.82, + 10458.34, + 5199.85, + 2090.75, + 5112.339999999999, + 7262.820000000001, + 234.85000000000014, + 171.54000000000008, 0.0, + 1980.6799999999998, 0.0, + 1704.6100000000001, 516.37, - 0.0, - 0.0, - 608.79, - 556.31, - 488.89, + 868.05, + 0.0, + 0.0, + 0.0, + 0.0, + 506.91, 0.0, 0.0, 0.0, - 351.65, 35.04348076126204, 127.73830624887898, - 121.32288542430308, - 56.853410498124, - 2.270998855635753e-10, - 1.7179535764168035, 0.0, - 1623.9518918471015, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, 0.0, 257.64, 566.69, 987.01, 0.0, - 592.97 + 0.0 ], "Netzeinspeisung_Wh_pro_Stunde": [ 0.0, @@ -473,11 +473,11 @@ 0.0, 0.0, 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 34.959926897656544, + 156.06587377864435, + 3678.7636146358536, + 2086.994116068604, + 1132.4162643420734, + 148.64025532125078, 0.0, 0.0, 0.0, @@ -485,83 +485,83 @@ 0.0 ], "Verluste_Pro_Stunde": [ - 708.0, - 1083.0, - 1083.0, - 864.0, - 276.0, - 795.0, + 16.744090909090914, 483.0, - 230.91336797704525, - 73.03732433363291, - 23.391818181818195, + 1014.0, + 552.0, + 465.0, + 207.0, + 414.0, + 483.0, + 55.200000000000045, + 0.0, 99.72409090909093, - 133.72909090909081, + 120.0, 124.41545454545451, - 96.08318181818186, + 120.0, + 0.0, 0.0, - 118.37045454545455, 94.68272727272722, + 83.01681818181817, + 75.86045454545456, + 66.66681818181814, 0.0, - 0.0, - 0.0, - 69.12409090909085, 109.0704545454546, 109.96227272727276, - 0.0, + 47.952272727272714, 11.233982308648535, 38.52740325013451, - 145.08565374908358, - 14.209990740225123, - 538.2983999999728, - 441.7178455708299, - 260.56941082122324, - 335.0973729783477, - 58.01910018603749, + 161.62968357967037, + 21.962728535423857, + 519.5704951465664, + 0.5004782113116364, + 10.13011689299087, + 36.109951963721926, + 44.377460775206174, 0.0, 0.0, 0.0, 100.08954545454549, - 0.0 + 80.85954545454547 ], "akku_soc_pro_stunde": [ 80.0, - 67.31060606060606, - 48.37121212121212, - 48.37121212121212, - 60.871212121212125, - 60.871212121212125, - 73.37121212121212, - 79.18621839791953, - 81.21503296274267, - 80.47665486356911, - 77.32879845861042, - 73.10755190213659, - 69.18029639249471, - 66.14736767348646, - 66.14736767348646, - 62.41092655778397, - 59.42220410599334, - 59.42220410599334, - 59.42220410599334, - 59.42220410599334, - 57.24025679194374, - 53.797376282301876, - 50.32634494621373, - 50.32634494621373, - 50.63840001034284, - 51.70860565617992, - 55.73876270476556, - 56.133484669771825, - 71.08621800310439, - 83.35615815784968, - 90.3128052114117, - 94.62106557192135, + 79.4714617768595, + 79.4714617768595, + 96.13812844352617, + 96.13812844352617, + 99.4714617768595, + 99.4714617768595, + 99.4714617768595, + 99.4714617768595, + 99.4714617768595, + 99.4714617768595, + 96.32360537190083, + 99.65693870523415, + 95.72968319559227, + 99.0630165289256, + 99.0630165289256, + 99.0630165289256, + 96.07429407713497, + 93.45381370523414, + 91.05922865013771, + 88.95484676308537, + 88.95484676308537, + 85.51196625344349, + 82.04093491735533, + 80.52728994490354, + 80.83934500903268, + 81.90955065486975, + 85.41748453961112, + 85.56748624593055, + 100.0, + 100.0, + 100.0, + 100.0, 100.0, 100.0, 100.0, 100.0, - 96.84060778236915, 96.84060778236915 ], "Electricity_price": [ @@ -619,15 +619,15 @@ 0.0, 0.0, 0.0, - 0.875, - 0.875, + 0.0, 0.875, 0.75, - 0.5, + 1.0, 0.625, + 0.375, + 0.75, 0.875, - 0.0, - 0.0, + 0.1, 0.0, 0.0, 0.0, @@ -712,106 +712,106 @@ "capacity_wh": 60000, "charging_efficiency": 0.95, "max_charge_power_w": 11040, - "soc_wh": 59373.0, + "soc_wh": 59110.8, "initial_soc_percentage": 5 }, "start_solution": [ 0.0, - 4.0, - 13.0, - 17.0, - 14.0, - 12.0, - 9.0, - 9.0, - 17.0, - 13.0, - 15.0, - 12.0, - 9.0, - 18.0, - 14.0, - 18.0, - 14.0, - 9.0, - 2.0, - 8.0, - 10.0, - 12.0, - 10.0, - 10.0, - 14.0, - 8.0, - 7.0, - 2.0, - 6.0, - 4.0, - 7.0, - 10.0, - 8.0, - 2.0, - 5.0, 0.0, 2.0, - 4.0, - 5.0, - 14.0, - 10.0, - 18.0, - 11.0, + 0.0, + 1.0, 1.0, 0.0, - 5.0, - 13.0, + 2.0, + 1.0, + 1.0, 1.0, 0.0, 2.0, 0.0, 2.0, + 0.0, + 2.0, + 2.0, + 0.0, + 2.0, + 1.0, + 2.0, + 1.0, + 2.0, + 2.0, + 2.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 1.0, + 1.0, + 1.0, + 0.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 2.0, + 0.0, + 2.0, + 1.0, 1.0, 6.0, - 5.0, - 1.0, 2.0, + 1.0, + 1.0, 6.0, + 4.0, + 6.0, + 4.0, + 2.0, 5.0, - 5.0, + 0.0, 5.0, 4.0, + 6.0, + 3.0, + 1.0, + 4.0, + 5.0, + 3.0, + 6.0, + 4.0, + 1.0, + 4.0, + 2.0, 2.0, 3.0, 5.0, + 2.0, + 0.0, + 0.0, 4.0, - 2.0, - 0.0, - 3.0, - 2.0, - 0.0, - 6.0, - 3.0, - 0.0, - 6.0, - 3.0, 5.0, - 1.0, + 0.0, + 0.0, 6.0, 1.0, + 1.0, + 6.0, + 0.0, + 5.0, + 2.0, + 6.0, 3.0, 4.0, - 4.0, - 0.0, - 2.0, - 5.0, - 5.0, - 4.0, - 5.0, - 2.0, - 5.0, - 0.0, - 1.0, 5.0, 6.0, 2.0, + 2.0, 14.0 ], "washingstart": 14 diff --git a/tests/testdata/optimize_result_2_be.json b/tests/testdata/optimize_result_2_be.json index 0f751c5..11781a0 100644 --- a/tests/testdata/optimize_result_2_be.json +++ b/tests/testdata/optimize_result_2_be.json @@ -10,12 +10,6 @@ 0.0, 0.0, 0.0, - 0.375, - 0.0, - 0.0, - 0.75, - 0.0, - 0.75, 0.0, 0.0, 0.0, @@ -25,20 +19,26 @@ 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, 0.0, 0.0, - 0.5, 0.0, 0.0, 0.0, @@ -110,23 +110,31 @@ 0, 0, 0, - 0, + 1, + 1, + 1, + 1, + 1, 1, 1, 0, 0, 0, - 0, 1, + 1, + 0, 0, 1, 1, - 1, + 0, + 0, 1, 1, 0, 1, - 1, + 0, + 0, + 0, 0, 0, 0, @@ -136,100 +144,92 @@ 1, 0, 1, - 0, 1, 0, 0, - 1, - 0, - 0, - 0, - 1, - 1, - 1, - 0 + 1 ], "eautocharge_hours_float": [ + 0.625, 0.375, 0.5, - 0.625, 1.0, - 0.0, - 0.5, - 0.5, - 0.75, - 0.625, - 0.5, - 1.0, - 0.0, - 0.0, - 0.5, 1.0, 0.75, + 0.5, + 0.375, + 0.375, + 0.625, + 0.75, + 0.875, + 0.625, 0.625, 0.625, - 0.0, 1.0, + 0.375, 0.625, - 0.625, - 0.625, + 0.875, 0.0, - 0.375, - 0.375, - 0.625, - 0.375, + 0.5, + 0.0, + 0.0, + 0.5, 0.875, 0.625, 0.75, - 0.0, - 0.875, 0.5, - 0.0, + 0.375, + 0.375, 0.75, - 1.0, - 0.5, 0.625, + 1.0, 0.375, 0.625, - 1.0, - 0.5, - 0.0, - 1.0, - 0.875, 0.625, - 0.5 + 0.0, + 0.5, + 0.875, + 0.375, + 0.5, + 0.875, + 0.5, + 0.875, + 0.75, + 0.625, + 0.75, + 0.0 ], "result": { "Last_Wh_pro_Stunde": [ - 13416.07, - 1063.91, - 1320.56, - 10126.029999999999, - 14151.67, - 12042.82, - 7771.22, - 7658.78, + 8919.07, + 10240.91, + 7875.5599999999995, + 7687.03, + 7718.67, + 11664.82, + 5149.22, + 6347.78, 1129.12, - 10617.91, - 1050.98, + 8678.71, + 3550.98, 988.56, 912.38, 704.61, 516.37, 868.05, - 694.34, + 5694.34, 608.79, 556.31, 488.89, 506.91, 804.89, - 1141.98, + 6141.98, 1056.97, 992.46, - 1155.99, + 6155.99, 827.01, 1257.98, - 3732.67, + 1232.67, 871.26, 860.88, 1158.03, @@ -242,43 +242,43 @@ ], "EAuto_SoC_pro_Stunde": [ 5.0, - 22.48, - 22.48, - 22.48, - 31.22, - 48.699999999999996, - 61.809999999999995, - 72.735, + 18.11, + 33.405, + 44.330000000000005, + 55.254999999999995, + 66.18, 83.66, - 83.66, - 99.392, - 99.392, - 99.392, - 99.392, - 99.392, - 99.392, - 99.392, - 99.392, - 99.392, - 99.392, - 99.392, - 99.392, - 99.392, - 99.392, - 99.392, - 99.392, - 99.392, - 99.392, - 99.392, - 99.392, - 99.392, - 99.392, - 99.392, - 99.392, - 99.392, - 99.392, - 99.392, - 99.392 + 90.215, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955 ], "Einnahmen_Euro_pro_Stunde": [ 0.0, @@ -320,11 +320,16 @@ 0.0, 0.0 ], - "Gesamt_Verluste": 8129.042662637932, - "Gesamtbilanz_Euro": 11.91553407959862, + "Gesamt_Verluste": 10674.660531928814, + "Gesamtbilanz_Euro": 14.366070195145795, "Gesamteinnahmen_Euro": 0.0, - "Gesamtkosten_Euro": 11.91553407959862, + "Gesamtkosten_Euro": 14.366070195145795, "Home_appliance_wh_per_hour": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, 0.0, 0.0, 0.0, @@ -357,92 +362,87 @@ 0.0, 0.0, 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, 0.0 ], "Kosten_Euro_pro_Stunde": [ - 2.84676012, - 0.0, - 0.0, - 1.684399486, - 1.4948178300000001, - 1.3073595, - 0.835534532, - 0.05466613999999993, + 0.81824412, + 1.061242392, + 0.49579402599999994, + 0.399351386, + 0.13127915000000007, + 1.2316083, + 0.259218932, + 0.7558691399999999, 0.061530097476751734, - 1.66483143, - 0.0, - 0.0, - 0.0, - 0.0, - 0.174739608, + 2.4510570300000003, 0.0, 0.0, + 0.26650619799999997, + 0.19588158, + 0.13029273082161758, + 0.28801899, + 1.870021256, 0.199865757, - 0.182970359, - 0.162995926, + 0.0, + 0.0, 0.16677339, - 0.26411047, - 0.0, 0.0, + 1.7663038380000002, + 0.08545095, 0.007989913613567745, - 0.0, + 1.134255713342252, 0.025392879919306634, - 0.0, - 0.4595000000000417, + 0.010682755832597498, + 4.174095896658514e-14, 0.0003442778967139274, 0.0, - 0.028137079449292023, + 0.0, 0.04565364324294593, - 0.08231598, 0.0, 0.0, - 0.0, - 0.16484566 + 0.293043269, + 0.214398479, + 0.0 ], "Netzbezug_Wh_pro_Stunde": [ - 12485.789999999999, - 0.0, - 0.0, - 8964.34, - 8132.85, - 6523.75, - 3801.34, - 240.8199999999997, + 3588.79, + 4797.66, + 2368.8199999999997, + 2125.34, + 714.2500000000003, + 6145.75, + 1179.3400000000001, + 3329.8199999999997, 205.30563055305882, - 5210.74, - 0.0, - 0.0, - 0.0, - 0.0, - 516.37, + 7671.54, 0.0, 0.0, + 912.38, + 704.61, + 385.0258003002884, + 868.05, + 5694.34, 608.79, - 556.31, - 488.89, + 0.0, + 0.0, 506.91, - 799.85, - 0.0, 0.0, + 5806.39, + 351.65, 35.04348076126204, - 0.0, + 5127.738306248879, 121.32288542430308, - 0.0, - 2500.000000000227, + 56.853410498124, + 2.270998855635753e-10, 1.7179535764168035, 0.0, - 123.95189184710142, + 0.0, 152.3311419517715, - 257.64, 0.0, 0.0, - 0.0, - 592.97 + 987.01, + 733.99, + 0.0 ], "Netzeinspeisung_Wh_pro_Stunde": [ 0.0, @@ -485,84 +485,84 @@ 0.0 ], "Verluste_Pro_Stunde": [ - 777.0, - 2.817272727272737, - 29.157272727272726, - 726.0, - 552.0, - 474.0, - 345.0, + 1014.0, + 1083.0, 945.0, + 945.0, + 479.4, + 552.0, + 207.0, + 276.0, 73.03732433363291, - 1096.800000000001, - 99.72409090909093, + 600.0, + 440.6331818181816, 133.72909090909081, - 124.41545454545451, - 96.08318181818186, - 0.0, - 118.37045454545455, - 94.68272727272722, 0.0, 0.0, + 17.910572686324315, 0.0, + 600.0, 0.0, + 75.86045454545456, + 66.66681818181814, + 0.0, + 109.0704545454546, + 600.0, 0.0, - 109.96227272727276, - 47.952272727272714, 11.233982308648535, - 55.946263193163475, + 638.5274032501345, 145.08565374908358, - 21.962728535423857, - 838.2983999999728, + 14.209990740225123, + 538.2983999999728, 441.7178455708299, 260.56941082122324, - 155.09737297834772, + 171.99990368477063, 41.441862965787436, - 0.0, + 35.132727272727266, 77.27590909090907, - 134.59227272727276, - 100.08954545454549, - 0.0 + 0.0, + 0.0, + 80.85954545454547 ], "akku_soc_pro_stunde": [ 80.0, - 86.16107093663912, - 85.24070247933885, - 85.24070247933885, - 97.74070247933885, - 97.74070247933885, - 99.40736914600552, - 80.46797520661157, - 82.49678977143472, - 63.557395832040775, - 60.4095394270821, - 56.18829287060828, - 52.2610373609664, - 49.22810864195814, - 49.22810864195814, - 45.49166752625566, - 42.502945074465025, - 42.502945074465025, - 42.502945074465025, - 42.502945074465025, - 42.502945074465025, - 42.502945074465025, - 39.03191373837687, - 37.518268765925086, - 37.830323830054205, - 38.35069172516435, - 42.38084877375001, - 42.53085048006944, - 57.48358381340202, - 78.08685730148063, - 85.04350435504266, - 89.35176471555232, - 90.50292757571307, - 90.50292757571307, - 88.06366276855056, - 83.81516931125029, - 80.65577709361943, - 80.65577709361943 + 61.06060606060606, + 42.12121212121212, + 23.18181818181818, + 4.242424242424243, + 0.0, + 0.0, + 0.0, + 0.0, + 2.0288145648231377, + 18.695481231489804, + 4.786605542784571, + 0.5653589863107422, + 0.5653589863107422, + 0.5653589863107422, + 0.0, + 0.0, + 16.666666666666664, + 16.666666666666664, + 14.272081611570247, + 12.167699724517906, + 12.167699724517906, + 8.724819214876034, + 25.391485881542703, + 25.391485881542703, + 25.703540945671826, + 43.44041325817556, + 47.47057030676122, + 47.86529227176747, + 62.81802560510005, + 75.08796575984533, + 82.04461281340734, + 85.81933369454761, + 86.97049655470836, + 85.86150895140257, + 83.42224414424004, + 83.42224414424004, + 83.42224414424004 ], "Electricity_price": [ 0.000228, @@ -619,16 +619,16 @@ 0.0, 0.0, 0.0, - 1.0, - 0.0, - 0.0, - 0.5, - 1.0, 0.75, + 0.875, 0.625, 0.625, + 0.625, + 1.0, + 0.375, + 0.5, + 0.0, 0.0, - 0.9, 0.0, 0.0, 0.0, @@ -712,107 +712,107 @@ "capacity_wh": 60000, "charging_efficiency": 0.95, "max_charge_power_w": 11040, - "soc_wh": 59635.2, + "soc_wh": 59373.0, "initial_soc_percentage": 5 }, "start_solution": [ + 2.0, + 2.0, + 0.0, 0.0, - 4.0, - 13.0, - 17.0, - 14.0, - 12.0, - 9.0, - 9.0, - 17.0, - 13.0, - 15.0, - 12.0, - 9.0, - 18.0, - 14.0, - 18.0, - 14.0, - 9.0, 2.0, - 8.0, - 10.0, - 12.0, - 10.0, - 10.0, - 14.0, - 8.0, - 7.0, + 0.0, + 0.0, + 2.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 0.0, + 2.0, + 1.0, + 1.0, + 0.0, + 0.0, + 1.0, + 1.0, + 2.0, + 0.0, + 1.0, + 1.0, + 0.0, + 1.0, + 2.0, + 0.0, + 0.0, + 2.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 1.0, + 0.0, + 1.0, + 1.0, + 0.0, + 0.0, + 1.0, + 3.0, + 1.0, 2.0, 6.0, - 4.0, - 4.0, - 2.0, - 8.0, - 12.0, - 2.0, - 9.0, - 14.0, - 13.0, - 16.0, 6.0, - 8.0, + 4.0, + 2.0, + 1.0, + 1.0, + 3.0, + 4.0, 5.0, + 3.0, + 3.0, + 3.0, + 6.0, 1.0, - 2.0, - 13.0, - 10.0, - 9.0, + 3.0, 5.0, - 1.0, - 2.0, - 3.0, - 6.0, 0.0, 2.0, - 2.0, - 4.0, - 3.0, - 2.0, - 6.0, 0.0, 0.0, 2.0, - 6.0, - 4.0, - 3.0, - 3.0, - 0.0, - 6.0, - 3.0, - 3.0, - 3.0, - 0.0, - 1.0, - 1.0, - 3.0, - 1.0, 5.0, 3.0, 4.0, - 0.0, - 5.0, 2.0, - 0.0, + 1.0, + 1.0, 4.0, - 6.0, - 2.0, 3.0, + 6.0, 1.0, 3.0, - 6.0, - 2.0, - 0.0, - 6.0, - 5.0, 3.0, + 0.0, 2.0, - 14.0 + 5.0, + 1.0, + 2.0, + 5.0, + 2.0, + 5.0, + 4.0, + 3.0, + 4.0, + 0.0, + 19.0 ], - "washingstart": 14 + "washingstart": 19 } \ No newline at end of file diff --git a/tests/testdata/optimize_result_2_full.json b/tests/testdata/optimize_result_2_full.json index 959f91b..357757c 100644 --- a/tests/testdata/optimize_result_2_full.json +++ b/tests/testdata/optimize_result_2_full.json @@ -110,7 +110,7 @@ 0, 0, 0, - 1, + 0, 1, 0, 0, @@ -118,6 +118,11 @@ 0, 1, 0, + 1, + 1, + 1, + 1, + 1, 0, 1, 1, @@ -142,74 +147,69 @@ 1, 1, 1, - 1, - 1, - 1, - 1, - 1, 1 ], "eautocharge_hours_float": [ + 0.875, + 0.75, 0.5, 1.0, 0.625, - 0.0, - 1.0, - 0.375, - 0.375, + 0.625, + 0.875, + 0.625, + 0.875, 0.875, 0.0, - 0.0, - 0.375, + 1.0, + 0.5, + 0.625, + 1.0, + 0.75, + 0.5, 0.625, 0.375, - 0.875, + 0.5, + 0.625, + 0.625, + 0.5, + 0.625, + 0.625, + 0.0, + 0.625, + 0.5, + 0.5, 1.0, - 0.875, 0.375, + 0.625, + 0.875, + 0.5, + 0.5, + 0.75, + 0.75, + 0.75, + 0.0, + 0.875, 0.75, 1.0, - 0.625, - 0.625, + 1.0, 0.75, - 0.375, - 1.0, - 0.375, - 0.375, - 1.0, - 1.0, - 0.0, - 0.0, - 0.375, - 0.625, - 0.375, - 1.0, - 0.875, - 0.625, - 0.625, - 0.0, - 0.0, - 0.75, - 0.375, - 0.75, - 0.375, - 0.0, - 1.0, 0.625, 0.875, - 1.0 + 0.5, + 0.875 ], "result": { "Last_Wh_pro_Stunde": [ - 4986.07, - 7618.91, - 5253.5599999999995, - 12809.029999999999, + 1053.07, + 11551.91, + 6564.5599999999995, + 7687.03, 14151.67, - 10353.82, - 5149.22, - 8969.78, - 2177.92, + 11542.82, + 6460.22, + 7658.78, + 5062.12, 1178.71, 1050.98, 988.56, @@ -242,43 +242,43 @@ ], "EAuto_SoC_pro_Stunde": [ 5.0, - 11.555, + 5.0, 22.48, - 29.035, - 44.330000000000005, - 61.809999999999995, - 77.105, - 83.66, - 96.77, - 98.518, - 98.518, - 98.518, - 98.518, - 98.518, - 98.518, - 98.518, - 98.518, - 98.518, - 98.518, - 98.518, - 98.518, - 98.518, - 98.518, - 98.518, - 98.518, - 98.518, - 98.518, - 98.518, - 98.518, - 98.518, - 98.518, - 98.518, - 98.518, - 98.518, - 98.518, - 98.518, - 98.518, - 98.518 + 31.22, + 42.144999999999996, + 59.62499999999999, + 72.735, + 81.475, + 92.4, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955, + 98.955 ], "Einnahmen_Euro_pro_Stunde": [ 0.0, @@ -320,17 +320,17 @@ 0.0, 0.0 ], - "Gesamt_Verluste": 7633.823819992856, - "Gesamtbilanz_Euro": 7.648978330847156, + "Gesamt_Verluste": 7647.623819992857, + "Gesamtbilanz_Euro": 7.824605715847156, "Gesamteinnahmen_Euro": 0.0, - "Gesamtkosten_Euro": 7.648978330847156, + "Gesamtkosten_Euro": 7.824605715847156, "Home_appliance_wh_per_hour": [ 0.0, 0.0, 0.0, - 2500.0, - 2500.0, 0.0, + 2500.0, + 2500.0, 0.0, 0.0, 0.0, @@ -365,15 +365,20 @@ 0.0 ], "Kosten_Euro_pro_Stunde": [ - 0.0, - 0.48125599199999997, - 0.8679294259999999, - 2.1885351859999997, + 0.027996119999999992, + 1.351235592, + 1.1423217259999998, + 1.226111386, 1.4948178300000001, - 0.9688838999999999, + 1.2071595, 0.0, - 1.3510631400000002, - 0.07038454500000005, + 1.0534661399999998, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.19588158, 0.0, 0.0, 0.0, @@ -382,12 +387,7 @@ 0.0, 0.0, 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.12044799000000005, + 0.01995551999999987, 0.08545095, 0.007989913613567745, 0.012219458233588571, @@ -405,15 +405,20 @@ 0.0 ], "Netzbezug_Wh_pro_Stunde": [ - 0.0, - 2175.66, - 4146.82, - 11647.339999999998, + 122.78999999999996, + 6108.66, + 5457.82, + 6525.34, 8132.85, - 4834.75, + 6023.75, 0.0, - 5951.820000000001, - 234.85000000000014, + 4640.82, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 704.61, 0.0, 0.0, 0.0, @@ -422,12 +427,7 @@ 0.0, 0.0, 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 395.9500000000001, + 65.59999999999957, 351.65, 35.04348076126204, 55.24167375040041, @@ -485,20 +485,20 @@ 0.0 ], "Verluste_Pro_Stunde": [ - 760.062272727273, - 945.0, - 207.0, - 483.0, + 0.0, + 1152.0, + 276.0, + 345.0, 552.0, - 483.0, - 367.81909090909085, 414.0, - 55.200000000000045, + 615.5918181818183, + 345.0, + 632.3249999999998, 23.391818181818195, 99.72409090909093, 133.72909090909081, 124.41545454545451, - 96.08318181818186, + 0.0, 70.41409090909087, 118.37045454545455, 94.68272727272722, @@ -507,7 +507,7 @@ 66.66681818181814, 69.12409090909085, 109.0704545454546, - 55.96909090909088, + 101.01681818181828, 0.0, 11.233982308648535, 48.41330768174522, @@ -525,28 +525,29 @@ 80.85954545454547 ], "akku_soc_pro_stunde": [ - 62.54222623966943, - 43.60283230027549, - 43.60283230027549, - 43.60283230027549, - 43.60283230027549, - 43.60283230027549, - 38.52647210743802, - 38.52647210743802, - 38.52647210743802, - 37.78809400826446, - 34.64023760330579, - 30.418991046831955, - 26.49173553719008, - 23.458806818181817, - 21.236139807162534, - 17.499698691460054, - 14.510976239669422, - 11.890495867768596, - 9.495910812672175, - 7.391528925619835, - 5.209581611570248, - 1.7667011019283745, + 80.0, + 80.0, + 61.06060606060606, + 61.06060606060606, + 61.06060606060606, + 61.06060606060606, + 61.06060606060606, + 50.341167355371894, + 50.341167355371894, + 36.91550447658402, + 36.17712637741047, + 33.0292699724518, + 28.808023415977967, + 24.88076790633609, + 24.88076790633609, + 22.658100895316807, + 18.921659779614323, + 15.932937327823693, + 13.312456955922865, + 10.917871900826448, + 8.813490013774107, + 6.63154269972452, + 3.1886621900826473, 0.0, 0.0, 0.3120550641291261, @@ -561,8 +562,7 @@ 42.06126780148296, 39.622002994320425, 35.373509537020155, - 32.214117319389295, - 29.661732677516017 + 32.214117319389295 ], "Electricity_price": [ 0.000228, @@ -619,15 +619,15 @@ 0.0, 0.0, 0.0, - 0.375, + 0.0, + 1.0, + 0.5, + 0.625, + 1.0, + 0.75, + 0.5, 0.625, 0.375, - 0.875, - 1.0, - 0.875, - 0.375, - 0.75, - 0.1, 0.0, 0.0, 0.0, @@ -712,107 +712,107 @@ "capacity_wh": 60000, "charging_efficiency": 0.95, "max_charge_power_w": 11040, - "soc_wh": 59110.8, + "soc_wh": 59373.0, "initial_soc_percentage": 5 }, "start_solution": [ - 19.0, - 18.0, - 18.0, - 7.0, - 5.0, - 20.0, - 17.0, - 15.0, - 4.0, - 12.0, - 13.0, - 8.0, - 5.0, - 1.0, - 1.0, - 4.0, - 9.0, + 0.0, + 0.0, 2.0, + 1.0, + 0.0, + 1.0, + 2.0, + 2.0, + 1.0, + 1.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, 5.0, - 8.0, - 10.0, - 12.0, - 10.0, - 9.0, - 13.0, - 7.0, - 8.0, - 7.0, - 9.0, - 13.0, - 7.0, - 10.0, - 8.0, - 8.0, - 12.0, - 12.0, - 7.0, - 10.0, - 13.0, - 11.0, - 11.0, - 10.0, - 11.0, - 10.0, - 13.0, - 10.0, - 10.0, - 12.0, + 4.0, 2.0, 6.0, 3.0, - 0.0, - 6.0, - 1.0, - 1.0, + 3.0, + 5.0, + 3.0, + 5.0, 5.0, 0.0, - 0.0, - 1.0, + 6.0, + 2.0, + 3.0, + 6.0, + 4.0, + 2.0, 3.0, 1.0, - 5.0, + 2.0, + 3.0, + 3.0, + 2.0, + 3.0, + 3.0, + 0.0, + 3.0, + 2.0, + 2.0, 6.0, - 5.0, 1.0, + 3.0, + 5.0, + 2.0, + 2.0, + 4.0, + 4.0, + 4.0, + 0.0, + 5.0, 4.0, 6.0, - 3.0, - 3.0, + 6.0, 4.0, - 1.0, - 6.0, - 1.0, - 1.0, - 6.0, - 6.0, - 0.0, - 0.0, - 1.0, - 3.0, - 1.0, - 6.0, - 5.0, - 3.0, - 3.0, - 0.0, - 0.0, - 4.0, - 1.0, - 4.0, - 1.0, - 0.0, - 6.0, 3.0, 5.0, - 6.0, - 13.0 + 2.0, + 5.0, + 14.0 ], - "washingstart": 13 + "washingstart": 14 } \ No newline at end of file