diff --git a/src/build_sequences.jl b/src/build_sequences.jl index eb9aa7a3436f9fc493219476b2a4e12da8d0d645..c732fd22e30df26b99cf6d6daff49de9179ea8f6 100644 --- a/src/build_sequences.jl +++ b/src/build_sequences.jl @@ -34,7 +34,7 @@ Wrapper to build a sequence. Use as ```julia -build_sequence(scanner[, optimiser_constructor];) do +build_sequence(scanner;) do ... end ``` @@ -56,7 +56,6 @@ As soon as the code block ends the sequence is optimised (if `optimise=true`) an ## Parameters - `scanner`: Set to a [`Scanner`](@ref) to limit the gradient strength and slew rate. When this call to `build_sequence` is embedded in another, this parameter can be set to `nothing` to indicate that the same scanner should be used. -- `optimiser_constructor`: A `JuMP` solver optimiser as described in the [JuMP documentation](https://jump.dev/JuMP.jl/stable/tutorials/getting_started/getting_started_with_JuMP/#What-is-a-solver?). Defaults to using [Ipopt](https://github.com/jump-dev/Ipopt.jl). - `optimise`: Whether to optimise and fix the sequence as soon as it is returned. This defaults to `true` if a scanner is provided and `false` if no scanner is provided. - `n_attempts`: How many times to restart the optimser (default: 100). - `kwargs...`: Other keywords are passed on as attributes to the `optimiser_constructor` (e.g., set `print_level=3` to make the Ipopt optimiser quieter). @@ -129,10 +128,16 @@ function optimise_with_cost_func(jump_model::Model, cost_func, n_attempts) end end -function build_sequence(f::Function, scanner::Union{Nothing, Scanner}, optimiser_constructor; optimise=true, n_attempts=10, kwargs...) +function build_sequence(f::Function, scanner::Union{Nothing, Scanner}=Default_Scanner; optimise=true, n_attempts=10, print_level=0, mu_strategy="adaptive", max_iter=10000, kwargs...) if optimise || GLOBAL_MODEL[] == IGNORE_MODEL + full_kwargs = Dict( + :print_level => print_level, + :mu_strategy => mu_strategy, + :max_iter => max_iter, + kwargs... + ) model = ( - Model(optimizer_with_attributes(optimiser_constructor, [string(k) => v for (k, v) in kwargs]...)), + Model(optimizer_with_attributes(Ipopt.Optimizer, [string(k) => v for (k, v) in full_kwargs]...)), Tuple{Float64, AbstractJuMPScalar}[] ) else @@ -141,12 +146,6 @@ function build_sequence(f::Function, scanner::Union{Nothing, Scanner}, optimiser build_sequence(f, scanner, model, optimise, n_attempts) end -function build_sequence(f::Function, scanner::Union{Nothing, Scanner}=Default_Scanner; print_level=0, mu_strategy="adaptive", max_iter=10000, kwargs...) - build_sequence(f, scanner, Ipopt.Optimizer; print_level=print_level, mu_strategy=mu_strategy, max_iter=max_iter, kwargs...) -end - -build_sequence(f::Function, optimiser_constructor; kwargs...) = build_sequence(f, Default_Scanner, optimiser_constructor; kwargs...) - """ global_scanner()