History¶
v0.0.11-alpha¶
This is the initial release of iwopy - ready for testing.
So far not many models have been transferred from the Fraunhofer IWES in-house predecessor iwes-opt, they will be added in the following versions. We are just getting started here!
Enjoy - we are awaiting comments and issues, thanks for testing.
Full Changelog: https://github.com/FraunhoferIWES/iwopy/commits/v0.0.11
v0.0.12-alpha¶
Benchmarks:
New benchmark
rosenbrockadded
Tests:
Extended tests for pygmo and pymoo
Fixes:
Bugs fixed with discretization
Full Changelog: https://github.com/FraunhoferIWES/iwopy/commits/v0.0.12
v0.0.13-alpha¶
Wrappers:
Introducing
SimpleObjectiveandSimpleConstraint, for functions of simple numeric types likef(x, y, ...)
Examples:
New example:
electrostatics, solvable with IPOPT, GA, PSO
Notebooks:
Work on
examples.ipynb: Adding section on simple function minimization
Full Changelog: https://github.com/FraunhoferIWES/iwopy/commits/v0.0.13
v0.0.14-alpha¶
Notebooks:
Work on
examples.ipynb: Adding electrostatics example
Core:
OptResultscan now be printed
Full Changelog: https://github.com/FraunhoferIWES/iwopy/commits/v0.0.14
v0.0.15-alpha¶
Utils:
RegularDiscretizationGridnow with interpolation parameter: None, nearest or linear
Wrappers:
New wrapper:
LocalFD, Local Finite Difference. Calculates function derivatives by applying local finite difference rules. Currently orders 1 and 2 are implemented, more could be added later.
Optimizers:
New optimizer:
GG, Greedy Gradient. A pretty straight forward gradient based local optimizer that projects out (or reverses) directions of constraint violation. Mostly implemented for the purpose of testing gradients, but maybe worth a try also for problem solving.
Examples:
electrostatics: New optional constraintMinDist, forcing charges to keep a minimal distance. Also adding a script that demonstrates how to solve this problem usingNLOPTviapygmo, and another for solving the problem using theGGalgorithm.
Full Changelog: https://github.com/FraunhoferIWES/iwopy/commits/v0.0.15
v0.1.0-alpha¶
Bug fixes
Updated documentation
Full Changelog: https://github.com/FraunhoferIWES/iwopy/commits/v0.1.0
v0.1.1-alpha¶
Tests:
pygmo: Increased ngen and npop, intended for osx systems to pass tests
Full Changelog: https://github.com/FraunhoferIWES/iwopy/commits/v0.1.
v0.1.2-alpha¶
Tests:
pygmo: Fixing test such that it passes on all systems
Full Changelog: https://github.com/FraunhoferIWES/iwopy/commits/v0.1.2
v0.1.3-alpha¶
Core:
Support for multi objective optimizations
Splitting
OptResultsintoSingleObjOptResultsandMultiObjOptResults
Interfaces:
pymoo: Addingnsga2
Examples:
New:
multi_obj_chain, demonstrating multi objective optimization using pymoo’s NSGA2
Notebooks:
New:
multi_obj_chain.ipynb, demonstrating multi objective optimization using pymoo’s NSGA2
Full Changelog: https://github.com/FraunhoferIWES/iwopy/commits/v0.1.3
v0.1.4-alpha¶
Interfaces:
Improved:
pymoonow supports mixed int/float problems and algorithmMixedVariableGAChanged:
pymooalgorithms now selectable via same name as in package, i.e., GA, PSO, NSGA2, MixedVariableGA
Examples:
New:
mixed, demonstrating how to solve a mixed int/float problem with pymoo
Notebook:
New:
mixed, demonstrating how to solve a mixed int/float problem with pymoo
Full Changelog: https://github.com/FraunhoferIWES/iwopy/commits/v0.1.4
v0.1.5-alpha¶
Small bug fixes
Full Changelog: https://github.com/FraunhoferIWES/iwopy/commits/v0.1.5
v0.1.6-alpha¶
Interfaces
New interface to
scipy: Calling thescipy.optimize.minimizefunction
Full Changelog: https://github.com/FraunhoferIWES/iwopy/commits/v0.1.6
v0.1.7-beta¶
Utils
New
import_moduleutility, dynamically loading packages and modules
Interfaces
Improved dynamic imports of
pygmoandpymoo
Full Changelog: https://github.com/FraunhoferIWES/iwopy/commits/v0.1.7
v0.1.8-beta¶
Bug fixed in setup.cfg
Full Changelog: https://github.com/FraunhoferIWES/iwopy/commits/v0.1.8
v0.1.9-beta¶
Bug fixes
Fixes for bugs in tests for Python 3.7 and 3.11
Full Changelog: https://github.com/FraunhoferIWES/iwopy/commits/v0.1.9
v0.2-beta¶
Interfaces:
Improved
pymoo: Dynamical derivation from classes from optional package import
Documentation:
Completely new sphinx style
Full Changelog: https://github.com/FraunhoferIWES/iwopy/commits/v0.2
v0.2.1¶
Documentation improvements
Full Changelog: https://github.com/FraunhoferIWES/iwopy/commits/v0.2.1
v0.2.2¶
Restricting numpy to <2, due to dependencies
Full Changelog: https://github.com/FraunhoferIWES/iwopy/commits/v0.2.2
v0.2.3¶
Recovering support for Python 3.7
Full Changelog: https://github.com/FraunhoferIWES/iwopy/commits/v0.2.3
v0.3¶
removing restriction numpy <2, since now latest numpy is supported again by indirect dependency
autograd
Full Changelog: https://github.com/FraunhoferIWES/iwopy/commits/v0.3
v0.3.1¶
Added factories for allowing automatized setups
Full Changelog: https://github.com/FraunhoferIWES/iwopy/commits/v0.3.1
v0.4.0¶
Dropping support for Python 3.8
Full Changelog: https://github.com/FraunhoferIWES/iwopy/commits/v0.4.0
v0.5.0¶
Core:
Added optimization pipelines through the new abstract
Pipelinebase class.Added native optimizer callbacks with normalized intermediate states for
GG,SLSQP, SciPy, pymoo, and PyGMO. Callback validation and finalization are now consistent, callback-free runs avoid adapter overhead, and unsupported PyGMO IPOPT callbacks fail explicitly.Unified problem summaries across optimizer output.
Optimizers:
Added
SLSQPfor constrained single-objective problems, with automatic dimensionless scaling, vectorized iwopy Jacobians, evaluation-free progress output, and reuse of cached function values inLocalFD.Hardened
GGfor zero and non-finite gradients, general constraint bounds, stalled constraints, hard iteration limits, and convergence edge cases.
Interfaces:
Extended pymoo factories with
DE,NSGA3, andCMAES, and improved integer offspring handling, reusable configurations, and bounded single-objective termination.Expanded PyGMO algorithm support and made IPOPT option handling more robust.
Problems:
Added
DiscreteLocalMoveOptProblemfor applying one small discrete move per wind turbine.
Examples:
Added runnable SLSQP and pymoo examples for general constraints and callbacks, including live progress and objective-history plots.
Bugs:
Fixed lower-bound second-order finite differences in
LocalFD, maximization gradient orientation in PyGMO, and callback leakage after PyGMO solves.Fixed regular-grid index and interpolation error handling, SciPy mixed-variable bounds and cache eviction, disabled pymoo problem-result storage access, and empty PyGMO gradient sparsity handling.
Rejected boolean values for integer-only
GGiteration settings andGGorSLSQPmemory sizes.Fixed package-version fallback lookup on Python versions without
tomllib.
Dependencies:
Added the
iwopy[scipy],iwopy[pymoo],iwopy[pygmo], andiwopy[opt]extras; dropped Python 3.9 and raised runtime, PyGMO, test, and documentation dependency floors.
Development:
Added package-wide type annotations and strict mypy checking, enforced by pre-commit.
Standardized API docstrings and Sphinx configuration on the foxes NumPyDoc style, with a Python 3.10 TOML fallback for documentation builds.
Full Changelog: https://github.com/FraunhoferIWES/iwopy/commits/v0.5.0
v1.0.0¶
Python versions:
Added Python 3.14 support; Python 3.10 remains the minimum supported version.
Core:
Jacobian assembly and optimizer caches now use SciPy CSR matrices instead of dense arrays. Use
Problem.get_jacobian()andcalc_jacobian()for matrix derivatives; scalar gradients and backend-required native names retain their meaning.Added
iwopy.create_optimizerto select a backend family and algorithm, including a PyGMO-backednloptfamily. The root and core exports are the same function; public optimizer class names are unchanged.Pipelines support restart result seeding for selected stage ranges and clear running state before finalization after stage-reported failures.
Wrappers:
LocalFDsupports bounded vectorized finite-difference batches throughmax_population_sizeand avoids evaluating analytically differentiated components during numerical Jacobian completion.
Optimizers:
GGcaps fresh finite-difference steps without extra backtracking evaluations, aligns progress output with completed-iteration callbacks, and keeps a feasible iterate when every trial violates constraints.SLSQPretains its best fully feasible point independently of convergence, supports inward margins and bounded restoration with explicit positiverestoration_scales, and starts objective-progress patience only after feasibility. Restoration merit and derivatives use consistent normalization; bound-certified row reduction preserves full feasibility checks.
Interfaces:
Gradient-capable SciPy minimizers use cached, population-vectorized Jacobians and grouped general constraints for continuous variables.
Added SciPy differential evolution with mixed integer/float variables, cached nonlinear constraint evaluations, callbacks, and per-dimension population sizing.
Added lazy optional Nevergrad, Optuna, and DEAP interfaces for bounded single-objective problems, general constraints, and evaluated-candidate results. The evolutionary adapter exposes generation limits.
Added the lazy optional
cmainterface for pycma CMA-ES with native augmented-Lagrangian constraints, callbacks, finalized results, and termination diagnostics; it supports scalar and population evaluation.pymoo run limits compose with custom termination criteria
pygmo reads sparse fitness-Jacobian entries without densification.
Benchmarks:
Published
QuadraticProblem,ParetoProblem, andMixedProblemthroughiwopy.benchmarks, replacing the optimizer examples’ local shared-case module.
Examples and documentation:
Added an optimizer catalog with 81 runnable, main-guarded factory-call scripts using installed-package imports without path setup. Entries are grouped by objective, constraint, and local/global capabilities, with practical recommendations and links to class APIs.
Added constrained NSGA2/NSGA3 Pareto examples with explicit weighted selection. All maintained examples and notebooks use the root optimizer factory and current constructor and run-limit controls; maintained FOXES Optimization callers were migrated too.
Reworked optimizer setups with individually annotated controls, short demo budgets, and production starting suggestions. Local PyGMO solvers use one starting point; native iwopy optimizers are identified as such.
Expanded the Vectorized Interfaces overview to cover all adapters and distinguish search, Jacobian, and batch-fitness vectorization. Added shared parameter and termination support tables.
Corrected chain constraint counts, callback failure semantics, and the gradient optimizer architecture link; aligned token-review guidance with the policy keeping documentation checks outside pytest.
Consolidated these release notes by area, separating user-facing changes and breaking APIs from contributor workflow details.
Full Changelog: https://github.com/FraunhoferIWES/iwopy/commits/v1.0.0