def opf(self, start_, end_, remote=False, batteries_energy_0=None): """ Run a power flow for every circuit :param start_: start index :param end_: end index :param remote: is this function being called from the time series? :param batteries_energy_0: initial state of the batteries, if None the default values are taken :return: OptimalPowerFlowResults object """ if not remote: self.progress_signal.emit(0.0) self.progress_text.emit('Formulating problem...') if self.options.solver == SolverType.DC_OPF: # DC optimal power flow problem = OpfDcTimeSeries(numerical_circuit=self.numerical_circuit, start_idx=start_, end_idx=end_, solver=self.options.mip_solver, batteries_energy_0=batteries_energy_0) elif self.options.solver == SolverType.AC_OPF: # AC optimal power flow problem = OpfAcTimeSeries(numerical_circuit=self.numerical_circuit, start_idx=start_, end_idx=end_, solver=self.options.mip_solver, batteries_energy_0=batteries_energy_0) elif self.options.solver == SolverType.Simple_OPF: # AC optimal power flow problem = OpfSimpleTimeSeries( numerical_circuit=self.numerical_circuit, start_idx=start_, end_idx=end_, solver=self.options.mip_solver, batteries_energy_0=batteries_energy_0, text_prog=self.progress_text.emit, prog_func=self.progress_signal.emit) else: self.logger.append('Solver not supported in this mode: ' + str(self.options.solver)) return if not remote: self.progress_signal.emit(0.0) self.progress_text.emit( 'Running all in an external solver, this may take a while...') # solve the problem status = problem.solve() print("Status:", status) a = start_ b = end_ self.results.voltage[a:b, :] = problem.get_voltage() self.results.load_shedding[a:b, :] = problem.get_load_shedding() self.results.battery_power[a:b, :] = problem.get_battery_power() self.results.battery_energy[a:b, :] = problem.get_battery_energy() self.results.generator_power[a:b, :] = problem.get_generator_power() self.results.Sf[a:b, :] = problem.get_branch_power() self.results.overloads[a:b, :] = problem.get_overloads() self.results.loading[a:b, :] = problem.get_loading() self.results.shadow_prices[a:b, :] = problem.get_shadow_prices() return self.results
def opf(self, start_, end_, remote=False): """ Run a power flow for every circuit @return: OptimalPowerFlowResults object """ if not remote: self.progress_signal.emit(0.0) self.progress_text.emit('Running all in an external solver, this may take a while...') if self.options.solver == SolverType.DC_OPF: # DC optimal power flow problem = OpfDcTimeSeries(numerical_circuit=self.numerical_circuit, start_idx=start_, end_idx=end_) elif self.options.solver == SolverType.AC_OPF: # DC optimal power flow problem = OpfAcTimeSeries(numerical_circuit=self.numerical_circuit, start_idx=start_, end_idx=end_) else: self.logger.append('Solver not supported in this mode: ' + str(self.options.solver)) return status = problem.solve() print("Status:", status) a = start_ b = end_ self.results.voltage[a:b, :] = problem.get_voltage() self.results.load_shedding[a:b, :] = problem.get_load_shedding() self.results.battery_power[a:b, :] = problem.get_battery_power() self.results.battery_energy[a:b, :] = problem.get_battery_energy() self.results.controlled_generator_power[a:b, :] = problem.get_generator_power() self.results.Sbranch[a:b, :] = problem.get_branch_power() self.results.overloads[a:b, :] = problem.get_overloads() self.results.loading[a:b, :] = problem.get_loading() self.results.shadow_prices[a:b, :] = problem.get_shadow_prices() return self.results