Welcome to IWOPY

Fraunhofer IWES optimization tools in Python

The iwopy package is in fact mainly a meta package that provides interfaces to other open-source Python optimization packages out there. Currently this includes

iwopy can thus be understood as an attempt to provide the best of all worlds when it comes to solving optimization problems with Python. This has not yet been achieved, since above list of accessable optimization packages is obviously incomplete, but it’s a start. All the credit for implementing the invoked optimizers goes to the original package providers.

The basic idea of iwopy is to provide abstract base classes, that can be concretized for any kind of problem by the users, and the corresponding solver interfaces. However, also some helpful problem wrappers and an original optimizer are provided in addition:

  • Problem wrapper LocalFD: Calculates derivatives by finite differences

  • Problem wrapper RegularDiscretizationGrid: Puts the problem on a Grid

  • Optimizer GG: Greedy Gradient optimization with constraints

All calculations support vectorized evaluation of a complete population of parameters. This is useful for heuristic approaches like genetic algorithms, but also for evaluating gradients. It can lead to a vast speed-up and should be invoked whenever possible. Check the examples (or the API) for details.

Source code repository (and issue tracker):


Please report code issues under the github link above.





  1. Fork iwopy on github.

  2. Create a branch (git checkout -b new_branch)

  3. Commit your changes (git commit -am “your awesome message”)

  4. Push to the branch (git push origin new_branch)

  5. Create a pull request here