breos.optimization.optimize_system_multi_objective#
- breos.optimization.optimize_system_multi_objective(tmy_data, houseload, config, results_dir='results/optimization', pop_size=40, n_gen=100, n_offsprings=None, seed=1, verbose=False)[source]#
Run NSGA-II multi-objective PV/battery sizing.
This is the public wrapper around
SolarDesignProblem. It optimizes module count, battery capacity, tilt, and optionally azimuth. Objectives are grid independence, NPV, and ZEB ratio. Installbreos[optimization]to provide the pymoo dependency.- Parameters:
tmy_data (
DataFrame) – One-year weather DataFrame.houseload (
DataFrame) – One-year load profile.config (
Dict[str,Any]) – Optimization config using the nested keys consumed bySolarDesignProblem(location,constraints,simulation,pv,battery,costs,financials).results_dir (
str) – Directory label retained in the problem object.pop_size (
int) – NSGA-II population size.n_gen (
int) – Number of generations.n_offsprings (
int|None) – Offspring count per generation. Defaults to pymoo’s algorithm default whenNone.seed (
int) – Random seed passed to pymoo.verbose (
bool) – Print pymoo progress.
- Return type:
- Returns:
OptimizationResultwhosedetails["pareto"]is a DataFrame withModules,Battery_kWh,Tilt,Azimuth,Grid_Independence_%,NPV_Eur, andZEB_Ratio.- Raises:
ImportError – If pymoo is not installed.
RuntimeError – If the optimizer returns no feasible solution.