Skip to content

5. Scipy integration

Antonio Horta Ribeiro edited this page Aug 25, 2017 · 38 revisions

I intend to work on the solver integration to scipy library along the following week.

Scipy Integration

  1. Create an interface to our solver that could be independently integrated to scipy (minimize_constrained).
    • Implementation of a constraint class.
      • Nonlinear constraints.
      • Linear constraints.
      • Bound constraints.
    • Options for converting from different constraints types.
      • Bound -> Linear
      • Linear -> Nonlinear
      • Nonlinear -> Canonical
      • Concatenate constraints
    • Stop criteria.
    • Change internal structure of my solver so I can use OptimizatonResults class instead of info dictionary.
      • Change it superficially.
      • Use object notation rather than dictionary notation;
        • equality_constrained_sqp
        • tr_interior_point
      • Add number of function calls, gradient calls;
        • equality_constrained_sqp
        • tr_interior_point
      • Add status
        • equality_constrained_sqp
        • tr_interior_point
      • Add number of CG iterations
        • equality_constrained_sqp
        • tr_interior_point
      • Add number of iterations
        • equality_constrained_sqp
        • tr_interior_point
      • Add optimality measures
        • equality_constrained_sqp
        • tr_interior_point
      • Add return all
        • equality_constrained_sqp
        • tr_interior_point
    • Include sparse/dense Jacobian option.
    • Include honorbounds option.
      • Include option
      • Modify x0 accordino to box constraints when needed
      • Check input to see if x0 complies with it
    • Include Verbose option
    • Deal with the case a singular factor appears.
    • Write test functions for the new format.
      • Adapt matlab-like problems to the new format.
      • Adapt cutest Jupyter notebooks to the new format.
    • Write unittests.
    • Documentation
      • Write a comprehensive docstring.
      • Link internal references.
      • Compile and test
      • Add doctests.
    • Write blog post with results.
  2. Create an interface to our solver that can be integrated to minimize without thinking too much about the other solvers. That is, it will probably have a lot of options that are available only to our solver (even for features that could be reused for the other solvers)
  3. Start to unify the options. That is, make the implemented features available for other solvers and try to replace legacy structures by the ones we have implemented.
Clone this wiki locally