JuliaSmoothOptimizers / JuliaSmoothOptimizers/JSOSuite.jl

There should be a single connection to the "outside"

Open
#162 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Julia
Stars
22
Forks
9
PR merge metrics
No merged PRs in 30d

Description

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.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.