Skip to content

There should be a single connection to the "outside" #162

@abelsiqueira

Description

@abelsiqueira

The pipeline should be clearer.

We should have a single "final" function, i.e., the last function in the pipeline, that will call solve!. This solve! call should resolve to the specific solver definition, while all others should dispatch to internal calls.
Right now there are at least three places that call external functions:

  • minimize in solve.jl
  • solve! in solve-model.jl
  • minimize in ipopt_solve.jl

To simplify argument passing, we should focus on a simpler pipeline. Something like

  1. minimize(args...; kwargs...) # Maybe some variants
  2. minimize(solver, nlp; kwargs...) with no variants
  3. solve!(solver, nlp, ...) external call

Then internally, we can a new function _create_problem that dispatches on the arguments, instead of minimize.

Then we have function 1 to create nlp, call select_optimizers, define the solver, and call function 2.
Function 2 serves mainly to define our interface to call solve! (function 3).

Maybe we'll need an intermediary function.

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