Skip to content

Add wrappers for legacy pyOpt optimizers #472

@saudzahirr

Description

@saudzahirr

Description of feature

pyoptsparse currently supports a subset of the optimizers that were available in the legacy pyOpt package. While pyoptsparse is clearly the modern and actively maintained successor, this gap makes migration from pyOpt more difficult for users with existing optimization workflows.

The following optimizers are available in pyOpt but not currently supported in pyoptsparse:

  • pyALGENCAN
  • pyALHSO
  • pyCOBYLA
  • pyFILTERSD
  • pyFSQP
  • pyGCMMA
  • pyKSOPT
  • pyMIDACO
  • pyMMA
  • pyMMFD
  • pyNLPQL
  • pySDPEN
  • pySOLVOPT

This feature would be particularly useful for:

  • Users migrating legacy pyOpt codebases to pyoptsparse
  • Researchers who rely on specific optimizers (e.g., MMA/GCMMA, COBYLA, MIDACO)
  • Maintaining reproducibility of historical optimization results

Improving optimizer coverage would help establish pyoptsparse as a true drop-in replacement for pyOpt.

Potential solution

Possible implementation approaches include:

  1. Incremental addition of optimizer wrappers

    • Port existing optimizer interfaces from pyOpt where licensing permits
    • Prioritize commonly used optimizers such as pyMMA, pyGCMMA, and pyCOBYLA
  2. Optional / plugin-based optimizer architecture

    • Allow external or community-maintained optimizer wrappers to be registered dynamically
    • Reduce maintenance burden on the core library
  3. Compatibility layer for pyOpt-style APIs

    • Provide a thin wrapper that reuses pyOpt optimizer logic while exposing a pyoptsparse-compatible interface
  4. Documentation and migration guidance

    • Clearly document which optimizers are supported, planned, or deprecated
    • Provide examples mapping pyOpt optimizers to pyoptsparse equivalents where possible

Source: https://github.com/madebr/pyOpt

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions