Skip to content

OptiWindNet v0.3.2

Latest

Choose a tag to compare

@github-actions github-actions released this 12 Oct 15:59
· 15 commits to main since this release
v0.3.2
cfbc2ce

Commit history since v0.3.1

Breaking Changes

Network–Router API

  • Feeder counts below the minimum: HGSRouter(feeder_limit) and hgs_cvrp(vehicles) below the minimum raise ValueError instead of clamping to it with a warning. a7516ea 28bb367

Advanced API

  • MILP solver details & attributes: solutions record count bounds in solver_details instead of max_feeders, and Solver instances store constraints and bounds instead of model_options. fbe7dd1

Deprecations (removal in v0.4.0)

  • Router options: HGSRouter(feeder_limit, feeder_exact, balanced, ringed), EWRouter(feeder_route), and MILPRouter(model_options) are deprecated in favour of NetworkConstraints. a7516ea
  • ModelOptions: deprecated in favour of NetworkConstraints; ModelOptions.to_constraints() translates existing instances. fbe7dd1 c2b7e4c
  • Advanced API options: count and topology arguments to Solver.set_problem(), make_min_length_model(), hgs_cvrp(), and lkh3() are deprecated in favour of constraints or bounds, and clusterize(capacity) in favour of group_capacity. fbe7dd1 709f315 1867e9e

Features & Improvements

  • Network constraints: NetworkConstraints unifies topology, feeder routing, counts, substation limits, and balance across all routers (WindFarmNetwork(constraints=...)); validated via resolve(). 1ee37bf a7516ea 709f315
  • EWRouter method: defaults to 'rootlust' for branched networks (previously 'biased_EW'), and verifies that a chosen method produces the requested network topology. a7516ea
  • Multi-substation balanced subtrees: HGSRouter and hgs_cvrp() balance loads across the whole wind farm under balanced=True, matching MILP models. 5987f7e
  • Substation limits in solvers: MILP models and HGS-CVRP (hgs_cvrp(), clusterize()) enforce per-substation feeder counts and load bounds. fbe7dd1 5987f7e
  • Maximum link length: NetworkConstraints(max_link_length=...) caps individual cable section lengths, including feeders. f634730 928bc3c aebdc15
  • Network constraints in LKH-3: lkh3(constraints=...) enforces network constraints, including exact counts, balance, and feeder hard caps. 1867e9e
  • LKH-3 rings: searches rings with SPECIAL moves for shorter routes free of rogue links. 1867e9e
  • HGS-CVRP warm starts: hgs_cvrp(warmstart=S) and HGSRouter support warm-starting from previous solution topologies (requires hybgensea >= 0.2.0). 30ef21b 5bbcddb
  • MILP solution pool: pool entries that PathFinder cannot detour are skipped with a warning. f7f19a9
  • Topologist: python -m optiwindnet.topologist interactive editor for drawing network topologies and exporting TerseLinks. 2983460
  • Substation-bound detours: PathFinder(allow_root_change=False) keeps every subtree on its assigned substation. 145e17a

Bug Fixes

  • LKH-3 short time limits: lkh3() raises ValueError instead of hanging when time_limit is shorter than LKH-3 preprocessing. d48e364
  • LKH-3 invalid solutions: lkh3() raises ValueError on rogue links or unserved substations instead of returning corrupt topologies or failing assertions. 1867e9e
  • LKH-3 warm starts: lkh3(warmstart=S) starts from individual routes rather than packing all turbines into a single route. 1867e9e
  • Concurrent SCIP crash: freeing concurrent SCIP models no longer crashes the interpreter. a997f13
  • PathFinder paths: detours avoid unnecessary bends at clear vertices, and wall traversals no longer drop promising paths prematurely. 02f7231 3ee49ef
  • Feeder touches: crossing checks detect feeders touching nodes off-line by numerical rounding errors. ef51186
  • Rogue links: warns when a solution contains links absent from the mesh or when routed feeders cross them. f6f7b35

Refactoring & Maintenance

  • Dependencies: replace condeltri with pythoncdt >=2.0.0 for constrained Delaunay triangulation.