From 5f07d3c284b013534e73e8ffffb61ae176558409 Mon Sep 17 00:00:00 2001 From: Olivier Cots Date: Sat, 7 Nov 2026 22:58:35 +0100 Subject: [PATCH 1/2] feat: references say how they were obtained, as typed values (#409) tools/references: each known solution keeps the solve that represents it (strict before acceptable, then the smallest violation, then the smallest objective) with its modeling, modeler, solver and every option, status, iterations, time, violation, and the environment of its run. The results must hold the columns and the environment file of #412. References: AbstractReference, NumericalReference (a known solution and how it was obtained), AnalyticReference (the solution of the continuous problem); references, best_reference, analytic_reference, and objective(ref). A reference file written before #409 still loads, without references, so that the tool can write it again; the consistency tests fail on it. Co-Authored-By: Claude Opus 5.5 --- src/README.md | 2 +- src/References/References.jl | 12 +- src/References/objectives.jl | 75 +++++++++- src/References/types.jl | 180 ++++++++++++++++++++++++ test/suite/core/test_consistency.jl | 9 ++ test/suite/core/test_references.jl | 210 +++++++++++++++++++++++++--- tools/references/README.md | 45 +++++- tools/references/references.jl | 101 +++++++++++-- 8 files changed, 595 insertions(+), 39 deletions(-) create mode 100644 src/References/types.jl diff --git a/src/README.md b/src/README.md index 36f784f7..a818c9bb 100644 --- a/src/README.md +++ b/src/README.md @@ -13,7 +13,7 @@ In dependency order: a submodule uses only those above it (`MOD7`). | --- | --- | | `Modelings` | the backend types and the modeling table `MODELING_SPECS`, the single place where a modeling is declared | | `Metadata` | the list of the problems (the files of `ext/MetaData/`), the schema `METADATA_SCHEMA`, loading and checking the metadata, reading it (`problem_metadata`, `parameters_data`, `initial_guess_data`…), the analytic solutions used by the metadata files | -| `References` | the reference objectives and known solutions (`ext/MetaData/references/`), `reference_objective`, `solution_kind`, `reference_solution_data`, `SAME_SOLUTION` | +| `References` | the reference objectives and known solutions (`ext/MetaData/references/`), `reference_objective`, `solution_kind`, `reference_solution_data`, `SAME_SOLUTION`; the references as values (#409): `AbstractReference`, `NumericalReference` (a known solution and how it was obtained), `AnalyticReference`, `references`, `best_reference`, `analytic_reference`, `objective(ref)` | | `Catalogue` | one function per problem (`beam`…), whose methods the extensions define, `problems`, `status` | | `Problems` | `Problem`, `features`, `solution`, and the accessors shared with OptimalControl (`state`, `objective`…) | diff --git a/src/References/References.jl b/src/References/References.jl index a72e4d17..ee5b721d 100644 --- a/src/References/References.jl +++ b/src/References/References.jl @@ -2,19 +2,27 @@ The references of the problems: the reference objectives and the known solutions of each problem, read from `ext/MetaData/references/.toml` (generated by `tools/references/update.jl`), and the analytic solutions of the continuous problems: -`reference_objective`, `solution_kind`, `reference_solution_data`, `SAME_SOLUTION`. +`reference_objective`, `solution_kind`, `reference_solution_data`, `SAME_SOLUTION`. Each +known solution says how it was obtained, as a `NumericalReference`; an analytic solution is +an `AnalyticReference` (#409): `references`, `best_reference`, `analytic_reference`, and +`objective(ref)`. Depends on `Metadata`, whose metadata it completes with the field `:reference_objective`. """ module References -using DocStringExtensions: TYPEDSIGNATURES +using CTBase: CTBase +using CTModels: CTModels +using DocStringExtensions: TYPEDEF, TYPEDFIELDS, TYPEDSIGNATURES using TOML: TOML using ..Metadata: Metadata +include(joinpath(@__DIR__, "types.jl")) include(joinpath(@__DIR__, "objectives.jl")) export reference_objective, reference_solution_data, solution_kind, SAME_SOLUTION +export AbstractReference, AnalyticReference, NumericalReference +export references, best_reference, analytic_reference end # module References diff --git a/src/References/objectives.jl b/src/References/objectives.jl index cc320a62..c39ef90c 100644 --- a/src/References/objectives.jl +++ b/src/References/objectives.jl @@ -45,7 +45,20 @@ function _references( ) return REFERENCE_FIELDS[key](table[string(key)]) end - push!(entries, Symbol(scheme) => NamedTuple{keys(REFERENCE_FIELDS)}(values)) + # the known solutions with how they were obtained (#409), best first; none for a + # file written before #409 + found = [ + _numerical_reference(problem, Symbol(scheme), Int(table["grid_size"]), s) for + s in table["solutions"] + ] + references = NumericalReference[r for r in found if !isnothing(r)] + length(references) == length(found) || empty!(references) + push!( + entries, + Symbol(scheme) => NamedTuple{(keys(REFERENCE_FIELDS)..., :references)}(( + values..., references + )), + ) end return NamedTuple(entries) end @@ -133,3 +146,63 @@ function solution_kind( any(s -> _relative_gap(objective, s) <= SAME_SOLUTION, solutions) && return :local return :new end + +""" +$(TYPEDSIGNATURES) + +The known solutions of `problem` discretized on `grid_size` steps with `scheme`, best first, +each with how it was obtained (#409); empty when the problem has no reference for this +discretization. The first one is the reference objective. + +# Example + +```julia-repl +julia> ref = first(OptimalControlProblems.references(:beam)) +julia> ref.solver, ref.options.tol, ref.status +``` +""" +function references( + problem::Symbol; + grid_size::Int=Metadata.grid_size_data(problem), + scheme::Symbol=:trapeze, +) + tables = get(Metadata.problem_metadata(problem), :reference_objective, nothing) + isnothing(tables) && return NumericalReference[] + entry = get(tables, scheme, nothing) + (isnothing(entry) || entry.grid_size != grid_size) && return NumericalReference[] + return entry.references +end + +""" +$(TYPEDSIGNATURES) + +The best known solution of `problem` discretized on `grid_size` steps with `scheme`, with +how it was obtained, or `nothing`: its objective is `reference_objective(problem)`. +""" +function best_reference( + problem::Symbol; + grid_size::Int=Metadata.grid_size_data(problem), + scheme::Symbol=:trapeze, +) + found = references(problem; grid_size, scheme) + return isempty(found) ? nothing : first(found) +end + +""" +$(TYPEDSIGNATURES) + +The analytic solution of the continuous `problem` for `parameters` (merged with the default +ones) as an [`AnalyticReference`](@ref), or `nothing` when none is known for them. +""" +function analytic_reference(problem::Symbol, parameters::Union{Nothing,NamedTuple}=nothing) + solution = reference_solution_data(problem, parameters) + isnothing(solution) && return nothing + return AnalyticReference( + problem, + Metadata.parameters_data(problem, parameters), + Float64(solution.objective), + solution.state, + solution.control, + solution.source, + ) +end diff --git a/src/References/types.jl b/src/References/types.jl new file mode 100644 index 00000000..9b5a49ed --- /dev/null +++ b/src/References/types.jl @@ -0,0 +1,180 @@ +# The references of a problem as values (#409): an analytic solution of the continuous +# problem, or a solve of the discretized problem with how it was obtained. Built from the +# metadata and from the generated reference files, never written by hand. + +""" +$(TYPEDEF) + +A reference solution of a problem: its objective, read with `objective(ref)`. + +Two kinds, with different data: [`AnalyticReference`](@ref), the solution of the continuous +problem, and [`NumericalReference`](@ref), a solve of the discretized problem. +""" +abstract type AbstractReference end + +""" +$(TYPEDSIGNATURES) + +The objective of the reference `ref`. Every subtype of `AbstractReference` implements it. +""" +function CTModels.Components.objective(ref::AbstractReference) + return throw( + CTBase.Exceptions.NotImplemented( + "objective is not implemented for $(typeof(ref))"; + required_method="objective(::$(typeof(ref)))", + suggestion="define it for every subtype of AbstractReference", + ), + ) +end + +""" +$(TYPEDEF) + +The analytic solution of the continuous problem `problem` for `parameters` (#379): `state` +and `control`, functions of the time, the `objective`, and the `source` it comes from. The +objective of a discretized problem differs from it by the discretization error. + +# Fields + +$(TYPEDFIELDS) +""" +struct AnalyticReference{S,U} <: AbstractReference + "Name of the problem." + problem::Symbol + "Parameters of the problem the solution is for." + parameters::Union{Nothing,NamedTuple} + "Objective of the continuous problem." + objective::Float64 + "State, a function of the time." + state::S + "Control, a function of the time." + control::U + "Where the solution comes from (a publication)." + source::String +end + +CTModels.Components.objective(ref::AnalyticReference) = ref.objective + +""" +$(TYPEDEF) + +A known solution of the problem `problem` discretized on `grid_size` steps with `scheme` +(#378), and how it was obtained (#409): one of the solves that reached it, chosen to +represent it (a strict convergence before an acceptable one, then the smallest constraint +violation), with its modeling, modeler, solver and every option of the solver, its exit +status, iterations, time and constraint violation, and the environment of its run. + +Generated by `tools/references/update.jl` from the convergence and robustness tests. The +trajectories are not kept: the configuration is enough to solve again. + +# Fields + +$(TYPEDFIELDS) +""" +struct NumericalReference <: AbstractReference + "Name of the problem." + problem::Symbol + "Discretization scheme, e.g. `:trapeze`." + scheme::Symbol + "Number of steps of the grid." + grid_size::Int + "Objective of the solve." + objective::Float64 + "Number of solves, every modeling, configuration and platform, that reached the solution." + solves::Int + "The configurations that reached it, `\" \"`." + configurations::Vector{String} + "Modeling of the solve, e.g. `:OptimalControl`." + modeling::Symbol + "Configuration of the solve, as the tests name it." + configuration::String + "Modeler of the solve (`:adnlp`, `:exa`), `nothing` for JuMP." + modeler::Union{Nothing,Symbol} + "Solver of the solve, e.g. `:ipopt`." + solver::Symbol + "Every option given to the solver, defaults included." + options::NamedTuple + "Exit status of the solver, e.g. `:first_order`, `:LOCALLY_SOLVED`, `:acceptable`." + status::Symbol + "Number of iterations." + iterations::Int + "Solve time in seconds, on `platform`." + time::Float64 + "Largest violation of the constraints, as the modeling measures it." + violation::Float64 + "Platform of the run, e.g. `cron-OptimalControl-1.13-ubuntu-latest`." + platform::String + "The run that solved it (a GitHub Actions run), or `local`." + run::String + "Commit of the package." + commit::String + "Julia version." + julia::VersionNumber + "Operating system, architecture and processor of the platform." + machine::NamedTuple{(:os, :arch, :cpu),Tuple{String,String,String}} + "Versions of the packages that modeled, discretized and solved it." + versions::NamedTuple +end + +CTModels.Components.objective(ref::NumericalReference) = ref.objective + +# A TOML table as a `NamedTuple` with sorted keys, so that two equal tables give equal values. +_namedtuple(table) = (; (Symbol(k) => table[k] for k in sort!(collect(keys(table))))...) + +# The `NumericalReference` of a known solution, from its table in a reference file, or +# `nothing` for a file written before #409. Such a file still loads, so that +# `tools/references/update.jl`, which loads the package, can write it again; the consistency +# tests fail on it. +function _numerical_reference(problem::Symbol, scheme::Symbol, grid_size::Int, solution) + haskey(solution, "reference") || return nothing + r = solution["reference"] + return NumericalReference( + problem, + scheme, + grid_size, + Float64(solution["objective"]), + Int(solution["solves"]), + String.(solution["configurations"]), + Symbol(r["modeling"]), + r["configuration"], + isempty(r["modeler"]) ? nothing : Symbol(r["modeler"]), + Symbol(r["solver"]), + _namedtuple(r["options"]), + Symbol(r["status"]), + Int(r["iterations"]), + Float64(r["time"]), + Float64(r["violation"]), + r["platform"], + r["run"], + r["commit"], + VersionNumber(r["julia"]), + (os=r["os"], arch=r["arch"], cpu=r["cpu"]), + _namedtuple(r["versions"]), + ) +end + +function Base.show(io::IO, ref::NumericalReference) + return print(io, "NumericalReference(:", ref.problem, ", ", ref.objective, ")") +end + +function Base.show(io::IO, ::MIME"text/plain", ref::NumericalReference) + println( + io, + "Known solution of ", + ref.problem, + ", ", + ref.scheme, + " on ", + ref.grid_size, + " steps", + ) + println(io, " objective: ", ref.objective, " (", ref.solves, " solves)") + modeler = isnothing(ref.modeler) ? "" : string(ref.modeler, " + ") + println(io, " solved by: ", ref.modeling, ", ", modeler, ref.solver, ", ", ref.status) + println(io, " iterations: ", ref.iterations, ", violation ", ref.violation) + return print(io, " run: ", ref.run, " (", ref.platform, ")") +end + +function Base.show(io::IO, ref::AnalyticReference) + return print(io, "AnalyticReference(:", ref.problem, ", ", ref.objective, ")") +end diff --git a/test/suite/core/test_consistency.jl b/test/suite/core/test_consistency.jl index a545b1af..d652851b 100644 --- a/test/suite/core/test_consistency.jl +++ b/test/suite/core/test_consistency.jl @@ -87,6 +87,10 @@ is reported, not failed (the comparison rule fails when it has no other referenc """ function test_reference_objectives() Test.@testset "reference objectives" verbose = VERBOSE begin + # generated by tools/references/update.jl, never written by hand: its header (#409) + for file in readdir(OCP.References.REFERENCES_PATH; join=true) + Test.@test startswith(read(file, String), "# Reference objectives of the problem") + end for problem in OCP.problems(; status=:all) data = OCP.problem_metadata(problem) references = get(data, :reference_objective, (;)) @@ -105,6 +109,11 @@ function test_reference_objectives() Test.@test all(s -> kind(s) === :local, entry.solutions[2:end]) far = maximum(abs, entry.solutions) * 10 + 1 Test.@test kind(far) === :new + # each known solution says how it was obtained (#409): a file written before + # has none, compute the references again (tools/references/update.jl) + Test.@test length(entry.references) == length(entry.solutions) + Test.@test [r.objective for r in entry.references] == entry.solutions + Test.@test all(r -> r.grid_size == entry.grid_size && r.scheme === scheme, entry.references) end valid = [name for (name, s) in pairs(OCP.status(problem)) if s === :valid] (isempty(valid) || !isnothing(OCP.reference_objective(problem))) && continue diff --git a/test/suite/core/test_references.jl b/test/suite/core/test_references.jl index bc02ef9a..e709296a 100644 --- a/test/suite/core/test_references.jl +++ b/test/suite/core/test_references.jl @@ -1,5 +1,6 @@ module TestReferences +using CTBase: CTBase using Test: Test using OptimalControlProblems: OptimalControlProblems @@ -7,34 +8,114 @@ const VERBOSE = isdefined(Main, :TestOptions) ? Main.TestOptions.VERBOSE : true const SHOWTIMING = isdefined(Main, :TestOptions) ? Main.TestOptions.SHOWTIMING : true const OCP = OptimalControlProblems -const TOOL = joinpath(pkgdir(OptimalControlProblems), "tools", "references", "references.jl") +const TOOL = joinpath( + pkgdir(OptimalControlProblems), "tools", "references", "references.jl" +) isdefined(@__MODULE__, :ReferenceObjectives) || include(TOOL) +# A reference type that does not implement the contract (TST3: at the top level). +struct FakeReference <: OptimalControlProblems.AbstractReference end + # Fake problems: the tool is tested on its own, apart from the collection. const DEFAULTS = Dict( :alpha => (grid_size=100, parameters="(a = 1,)"), :omega => (grid_size=50, parameters="nothing"), ) -const HEADER = "test\tproblem\tmodeling\tconfiguration\tgrid_size\tscheme\tresult\treason\tobjective\titerations\ttime\tgap" +const HEADER = "test\tproblem\tmodeling\tconfiguration\tgrid_size\tscheme\tresult\treason\tobjective\titerations\ttime\tgap\tmodeler\tsolver\toptions\tviolation" -row(test, problem, modeling, grid, result, objective) = join( - (test, problem, modeling, "c=1", grid, "trapeze", result, "R", objective, "3", "0.1", ""), "\t" +# A row of a results file; `reason` and `violation` choose the representative of a solution +# (#409): a strict convergence before an acceptable one, then the smallest violation. +function row( + test, problem, modeling, grid, result, objective; reason="R", violation="1.0e-9" ) + return join( + ( + test, + problem, + modeling, + "c=1", + grid, + "trapeze", + result, + reason, + objective, + "3", + "0.1", + "", + "adnlp", + "ipopt", + "{tol = 1.0e-8, mu_strategy = \"adaptive\"}", + violation, + ), + "\t", + ) +end + +# The environment of a run, written next to its results file by the tests (#412). +function environment(file; run="https://run/1") + return write( + replace(file, "-results.tsv" => "-environment.toml"), + """ + arch = "x86_64" + commit = "abc" + cpu = "CPU" + julia = "1.13.3" + os = "Linux" + run = "$(run)" + threads = 1 + + [packages] + Ipopt_jll = "300.1400.1902+0" + """, + ) +end function results_dir() dir = mktempdir() mkpath(joinpath(dir, "cron-ubuntu")) + file = joinpath(dir, "cron-ubuntu", "X-cron-results.tsv") + environment(file) write( - joinpath(dir, "cron-ubuntu", "X-cron-results.tsv"), + file, join( [ HEADER, - row("test_convergence c=1", "alpha", "A", "100", "converged", "2.0000000001"), - row("test_convergence c=1", "alpha", "B", "100", "converged", "2.0"), + # the smallest objective and violation, but acceptable: not the representative + row( + "test_convergence c=1", + "alpha", + "A", + "100", + "converged", + "1.99999999"; + reason="acceptable", + violation="1.0e-13", + ), + row( + "test_convergence c=1", + "alpha", + "B", + "100", + "converged", + "2.0"; + violation="1.0e-6", + ), + # strict, the smallest violation: the representative of the solution + row( + "test_convergence c=1", + "alpha", + "G", + "100", + "converged", + "2.0000000001"; + violation="1.0e-12", + ), row("test_convergence c=1", "alpha", "C", "100", "not_converged", "1.0"), # not converged row("test_convergence c=1", "alpha", "D", "10", "converged", "1.5"), # not the default grid row("test_smoke c=1", "alpha", "E", "100", "converged", "1.0"), # not a convergence test - row("test_robustness c=1 mu=1", "alpha", "F", "100", "converged", "2.00001"), # same solution + row( + "test_robustness c=1 mu=1", "alpha", "F", "100", "converged", "2.00001" + ), # same solution row("test_convergence c=1", "omega", "A", "50", "converged", "3.0"), row("test_convergence c=1", "omega", "B", "50", "converged", "3.3"), row("test_convergence c=1", "gamma", "A", "50", "converged", "1.0"), # unknown problem @@ -42,7 +123,14 @@ function results_dir() "\n", ) * "\n", ) - write(joinpath(dir, "local-results.tsv"), HEADER * "\n" * row("test_convergence c=1", "omega", "C", "50", "converged", "3.0") * "\n") + write( + joinpath(dir, "local-results.tsv"), + HEADER * + "\n" * + row("test_convergence c=1", "omega", "C", "50", "converged", "3.0") * + "\n", + ) + environment(joinpath(dir, "local-results.tsv"); run="local") return dir end @@ -50,19 +138,36 @@ function test_references() Test.@testset "reference objectives" verbose = VERBOSE showtiming = SHOWTIMING begin R = ReferenceObjectives rows = R.read_results([results_dir()]) - Test.@test length(rows) == 10 - Test.@test count(r -> r["platform"] == "cron-ubuntu", rows) == 9 + Test.@test length(rows) == 11 + Test.@test count(r -> r["platform"] == "cron-ubuntu", rows) == 10 Test.@test count(r -> r["platform"] == "local", rows) == 1 tables = R.references(rows, DEFAULTS; run="https://run") Test.@test sort!(collect(keys(tables))) == [:alpha, :omega] alpha = tables[:alpha]["trapeze"] - # the best converged objective at the default grid, from convergence and robustness tests - Test.@test alpha["value"] == 2.0 - Test.@test length(alpha["results"]) == 3 + # the objective of the representative of the best solution, at the default grid, from + # convergence and robustness tests (#409): strict, then the smallest violation + Test.@test alpha["value"] == 2.0000000001 + Test.@test length(alpha["results"]) == 4 # within SAME_SOLUTION (1e-5): one solution, the configurations agree Test.@test length(alpha["solutions"]) == 1 - Test.@test alpha["solutions"][1]["solves"] == 3 + Test.@test alpha["solutions"][1]["solves"] == 4 + reference = alpha["solutions"][1]["reference"] + Test.@test reference["modeling"] == "G" + Test.@test reference["objective"] == alpha["value"] + Test.@test reference["violation"] == 1e-12 + Test.@test reference["status"] == "R" + Test.@test reference["options"] == Dict("tol" => 1e-8, "mu_strategy" => "adaptive") + Test.@test (reference["modeler"], reference["solver"]) == ("adnlp", "ipopt") + Test.@test reference["run"] == "https://run/1" && reference["commit"] == "abc" + Test.@test reference["platform"] == "cron-ubuntu" + Test.@test reference["versions"] == Dict("Ipopt_jll" => "300.1400.1902+0") + # without a strict convergence, an acceptable solve represents its solution + acceptable = R.representative([ + merge(r, Dict("reason" => "acceptable")) for + r in rows if r["problem"] == "omega" + ]) + Test.@test acceptable["reason"] == "acceptable" Test.@test alpha["agreement"] Test.@test alpha["grid_size"] == 100 && alpha["parameters"] == "(a = 1,)" omega = tables[:omega]["trapeze"] @@ -80,23 +185,88 @@ function test_references() Test.@test basename.(files) == ["alpha.toml", "omega.toml"] Test.@test startswith(read(files[1], String), "# Reference objectives") read_back = OCP.References._references(:alpha, files[1]) - Test.@test read_back.trapeze.value == 2.0 + Test.@test read_back.trapeze.value == 2.0000000001 Test.@test read_back.trapeze.source === :computed Test.@test read_back.trapeze.run == "https://run" - Test.@test read_back.trapeze.solutions == [2.0] - Test.@test OCP.References._references(:omega, files[2]).trapeze.solutions == [3.0, 3.3] + Test.@test read_back.trapeze.solutions == [2.0000000001] + # the known solution with how it was obtained (#409) + ref = only(read_back.trapeze.references) + Test.@test ref isa OCP.NumericalReference + Test.@test (ref.problem, ref.scheme, ref.grid_size) == (:alpha, :trapeze, 100) + Test.@test OCP.objective(ref) == 2.0000000001 + Test.@test (ref.modeling, ref.modeler, ref.solver, ref.status) == + (:G, :adnlp, :ipopt, :R) + Test.@test ref.options == (mu_strategy="adaptive", tol=1e-8) + Test.@test ref.julia == v"1.13.3" && ref.machine.os == "Linux" + Test.@test ref.versions.Ipopt_jll == "300.1400.1902+0" + Test.@test ref.solves == 4 && ref.violation == 1e-12 + Test.@test OCP.References._references(:omega, files[2]).trapeze.solutions == + [3.0, 3.3] # a scheme not recomputed is kept R.write_references(dir, Dict(:alpha => Dict{String,Any}("midpoint" => alpha))) - Test.@test keys(OCP.References._references(:alpha, files[1])) ⊇ (:trapeze, :midpoint) + Test.@test keys(OCP.References._references(:alpha, files[1])) ⊇ + (:trapeze, :midpoint) # a file that misses a field is an error at load time broken = joinpath(dir, "broken.toml") write(broken, "[trapeze]\nvalue = 1.0\n") Test.@test_throws ErrorException OCP.References._references(:alpha, broken) Test.@test isnothing(OCP.References._references(:alpha, joinpath(dir, "none.toml"))) + + # a file written before #409 loads, without references, so that the tool can write + # it again; the consistency tests fail on it + old = joinpath(dir, "old.toml") + table = deepcopy(alpha) + foreach(s -> delete!(s, "reference"), table["solutions"]) + R.write_references(dir, Dict(:old => Dict{String,Any}("trapeze" => table))) + Test.@test isempty(OCP.References._references(:old, old).trapeze.references) + + # results recorded before #409, or without their environment, cannot say how a + # solution was obtained: an error + stale = mktempdir() + write( + joinpath(stale, "X-results.tsv"), join(split(HEADER, '\t')[1:12], '\t') * "\n" + ) + Test.@test_throws ErrorException R.read_results([stale]) + bare = mktempdir() + write(joinpath(bare, "X-results.tsv"), HEADER * "\n") + Test.@test_throws ErrorException R.read_results([bare]) + end +end + +# The references of the collection as values (#409): known solutions and analytic ones. +function test_reference_api() + Test.@testset "reference values" verbose = VERBOSE showtiming = SHOWTIMING begin + Test.@test_throws CTBase.Exceptions.NotImplemented OCP.objective(FakeReference()) + for problem in OCP.problems(; status=:all) + found = OCP.references(problem) + best = OCP.best_reference(problem) + if isempty(found) + Test.@test isnothing(best) + Test.@test isnothing(OCP.reference_objective(problem)) + else + Test.@test best === first(found) + Test.@test OCP.objective(best) == OCP.reference_objective(problem) + Test.@test issorted(OCP.objective.(found)) + Test.@test all(r -> r.problem === problem, found) + Test.@test all( + r -> OCP.solution_kind(problem, OCP.objective(r)) in (:best, :local), + found, + ) + end + # another discretization has no reference + Test.@test isempty(OCP.references(problem; grid_size=1)) + analytic = OCP.analytic_reference(problem) + data = OCP.reference_solution_data(problem) + Test.@test isnothing(analytic) == isnothing(data) + isnothing(analytic) && continue + Test.@test analytic isa OCP.AnalyticReference + Test.@test OCP.objective(analytic) == data.objective + Test.@test analytic.source == data.source + end end end end # module TestReferences -test_references() = TestReferences.test_references() +test_references() = (TestReferences.test_references(); TestReferences.test_reference_api()) diff --git a/tools/references/README.md b/tools/references/README.md index f48fe526..35be1a9e 100644 --- a/tools/references/README.md +++ b/tools/references/README.md @@ -11,13 +11,41 @@ discretization, or `nothing`. `OptimalControlProblems.solution_kind(p, objective scheme)` says which known solution an objective is: `:best`, `:local` or `:new`. The convergence and robustness reports (`test/README.md`) show both for each solve. +Each known solution also says **how it was obtained** (#409), as a value: +`OptimalControlProblems.references(p; grid_size, scheme)` returns them best first, as +`NumericalReference`s, and `OptimalControlProblems.best_reference(p)` the first one: + +```julia +ref = OptimalControlProblems.best_reference(:moonlander) +ref.modeling, ref.modeler, ref.solver # how it was modeled and solved +ref.options # every option of the solver, defaults included +ref.status, ref.iterations, ref.violation +ref.run, ref.commit, ref.versions # where, and with which packages +OptimalControlProblems.objective(ref) +``` + +An analytic solution of the continuous problem is an `AnalyticReference` +(`OptimalControlProblems.analytic_reference(p, parameters)`), with its state, control, +objective and source. Both are `AbstractReference`s. The trajectories of a numerical +solution are not kept: the configuration is enough to solve again, and the trajectories and +plots of the last runs belong to the results pipeline (#314). + ## What a reference is -- **Value:** the best objective among the solves that converged, over every modeling, - configuration and platform of the convergence and robustness tests, at the default grid. - Every problem of the collection is a minimization. +- **Value:** the objective of the best solution among the solves that converged, over every + modeling, configuration and platform of the convergence and robustness tests, at the + default grid. Every problem of the collection is a minimization. - **`solutions`:** the distinct solutions reached, best first, each with its objective, its - number of solves and the configurations that reached it. Two objectives within a relative + number of solves, the configurations that reached it, and its **`reference`**: the solve + chosen to represent it, whose objective is the solution's. The representative is a strict + convergence before an acceptable one (`acceptable`, `ALMOST_LOCALLY_SOLVED`, + `SOLVED_TO_ACCEPTABLE_LEVEL`), then the solve with the smallest constraint violation, then + the smallest objective. Its table holds the modeling, configuration, modeler, solver and + every option, the exit status, iterations, time and violation, the platform, and the + environment of its run (run, commit, Julia, machine, package versions), read from + `-environment.toml`. The violation is what each modeling measures (JuMP counts the + variable bounds, relaxed by Ipopt): comparing it across modelings favours the + OptimalControl ones when both are strict. Two objectives within a relative `OptimalControlProblems.SAME_SOLUTION` (1e-5) are the same solution. 1e-5 is above the accuracy of the solvers at `tol = 1e-8` (about 1e-6), and below the gap between the two known solutions of `mountain_car` (1.6e-4). @@ -26,11 +54,16 @@ convergence and robustness reports (`test/README.md`) show both for each solve. - **`grid_size`, `parameters`:** the default grid and parameters of the problem when the reference was computed. If either changes, the consistency tests fail. Compute the reference again. -- **`run`:** where the results come from (a cron run, or `local`). The package versions are - in the logs of that run. +- **`run`:** where the results come from (the cron runs, or `local`). Each solution says which + run solved its representative, and the versions of its packages. ## Computing the references +The results must say how each solve was configured (columns `modeler`, `solver`, `options`, +`violation` and the file `-environment.toml`, written by the tests since #412): +older results are refused. A reference file written before #409 still loads, without +`references`, so that this script can write it again; the consistency tests fail on it. + From the cron runs: the weekly convergence runs (one per environment: JuMP, OptimalControl, OptimalControlScalarized) **and** the latest monthly robustness run (`CronRobustness.yml`), on `main` or on a branch with `workflow_dispatch`. Give all of them together: each file is diff --git a/tools/references/references.jl b/tools/references/references.jl index 1f092307..6fe19454 100644 --- a/tools/references/references.jl +++ b/tools/references/references.jl @@ -8,6 +8,11 @@ # within a relative `OptimalControlProblems.SAME_SOLUTION` are the same solution. The # reference objective is the best (smallest: every problem of the collection is a # minimization); the configurations agree when they all reached one solution. +# +# Each solution says how it was obtained (#409): one of the solves that reached it, its +# representative, with its modeling, modeler, solver and every option, its status, iterations, +# time and constraint violation, and the environment of its run (`-environment.toml`: +# Julia, machine, commit, run, versions of the packages). Nothing is written by hand. module ReferenceObjectives using OptimalControlProblems: OptimalControlProblems @@ -18,11 +23,17 @@ const SAME_SOLUTION = OptimalControlProblems.SAME_SOLUTION """The tests whose results count: convergence (#360) and robustness (#378).""" const TESTS = ("test_convergence", "test_robustness") +# The columns that say how a solve was configured (#409), written by the tests since #412. +const SETTINGS_COLUMNS = ("modeler", "solver", "options", "violation") + """ read_results(dirs) -> Vector{Dict{String,String}} Rows of every `*-results.tsv` under `dirs`, read by column name, with the `platform`: the -first directory under the given one (the name of a CI artifact), or `local`. +first directory under the given one (the name of a CI artifact), or `local`; and +`environment`, the file `-environment.toml` written by the same run, read with +`environment`. A results file without the columns of #409 is an error: its solves cannot say +how they were obtained. """ function read_results(dirs) rows = Dict{String,String}[] @@ -33,17 +44,85 @@ function read_results(dirs) lines = readlines(joinpath(root, file)) isempty(lines) && continue header = split(lines[1], '\t') + missing_columns = setdiff(SETTINGS_COLUMNS, header) + isempty(missing_columns) || error( + "$(joinpath(root, file)) has no column $(join(missing_columns, ", ")): " * + "results recorded before #409, solve again", + ) + environment = joinpath(root, replace(file, "-results.tsv" => "-environment.toml")) + isfile(environment) || error("$(environment) is missing: its results cannot say how they were obtained") for line in lines[2:end] cells = split(line, '\t') length(cells) == length(header) || continue row = Dict{String,String}(String(h) => String(c) for (h, c) in zip(header, cells)) row["platform"] = platform + row["environment"] = environment push!(rows, row) end end return rows end +"""The environment of the run of `row` (`-environment.toml`), read once per file.""" +environment(row) = get!(() -> TOML.parsefile(row["environment"]), ENVIRONMENTS, row["environment"]) +const ENVIRONMENTS = Dict{String,Dict{String,Any}}() + +# Statuses of a solve that stopped at an acceptable point, not at the requested tolerance: +# still a solution (#409), ranked after a strict convergence when one represents a solution. +const ACCEPTABLE = ("acceptable", "ALMOST_LOCALLY_SOLVED", "SOLVED_TO_ACCEPTABLE_LEVEL") + +parse_violation(cell) = isempty(cell) ? Inf : (v = parse(Float64, cell); isnan(v) ? Inf : v) + +""" + representative(rows) -> Dict{String,String} + +The solve that represents a solution reached by `rows`: a strict convergence before an +acceptable one, then the smallest constraint violation, then the smallest objective; ties +are broken by modeling, configuration and platform, so that the choice does not depend on +the order of the files. +""" +function representative(rows) + key(r) = ( + r["reason"] in ACCEPTABLE, + parse_violation(r["violation"]), + parse(Float64, r["objective"]), + r["modeling"], + r["configuration"], + r["platform"], + ) + return first(sort(rows; by=key)) +end + +""" + reference(row) -> Dict{String,Any} + +How the solve `row` was obtained, as the table `reference` of a solution: everything the +results and the environment of its run say, so that it can be solved again. +""" +function reference(row) + env = environment(row) + return Dict{String,Any}( + "objective" => parse(Float64, row["objective"]), + "modeling" => row["modeling"], + "configuration" => row["configuration"], + "modeler" => row["modeler"], + "solver" => row["solver"], + "options" => TOML.parse("o = " * row["options"])["o"], + "status" => row["reason"], + "iterations" => parse(Int, row["iterations"]), + "time" => parse(Float64, row["time"]), + "violation" => parse_violation(row["violation"]), + "platform" => row["platform"], + "run" => env["run"], + "commit" => env["commit"], + "julia" => env["julia"], + "os" => env["os"], + "arch" => env["arch"], + "cpu" => env["cpu"], + "versions" => env["packages"], + ) +end + """Relative spread of `values` around the smallest one (absolute when it is zero).""" function spread(values) best = minimum(values) @@ -82,7 +161,9 @@ function references(rows, defaults; run::AbstractString) ) for r in sort(group; by=r -> (r["modeling"], r["configuration"], r["platform"])) ] get!(tables, problem, Dict{String,Any}())[scheme] = Dict{String,Any}( - "value" => minimum(objectives), + # the objective of the representative of the best solution: a solve that can be + # redone (#409), within `SAME_SOLUTION` of the smallest objective + "value" => first(found)["objective"], "grid_size" => defaults[problem].grid_size, "parameters" => defaults[problem].parameters, "source" => "computed", @@ -101,8 +182,8 @@ end The distinct solutions reached by the converged `rows`, best first: consecutive objectives (sorted) within a relative `SAME_SOLUTION` of the first one of a group are the same solution. -Each with its objective (the best of its group), its number of solves and the -configurations that reached it. +Each with the objective of its `representative`, its number of solves, the configurations +that reached it, and how its representative was obtained (`reference`, #409). """ function solutions(rows) objective(r) = parse(Float64, r["objective"]) @@ -116,13 +197,15 @@ function solutions(rows) push!(last(groups), r) end end - return [ - Dict{String,Any}( - "objective" => objective(first(g)), + return map(groups) do g + chosen = representative(g) + return Dict{String,Any}( + "objective" => objective(chosen), "solves" => length(g), "configurations" => sort!(unique(["$(r["modeling"]) $(r["configuration"])" for r in g])), - ) for g in groups - ] + "reference" => reference(chosen), + ) + end end const HEADER = """ From 45f68e653b522b05644786ea533cf824c9d1bb7c Mon Sep 17 00:00:00 2001 From: Olivier Cots Date: Sat, 7 Nov 2026 22:58:35 +0100 Subject: [PATCH 2/2] chore: reference files regenerated with how each solution was obtained (#409) From the crons dispatched on main after #412: https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387108959 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387112175 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100 Co-Authored-By: Claude Opus 5.5 --- ext/MetaData/references/balanced_field.toml | 53 +++- ext/MetaData/references/beam.toml | 65 ++++- ext/MetaData/references/bioreactor.toml | 226 +++++++++++++++++- ext/MetaData/references/brachistochrone.toml | 96 +++++++- ext/MetaData/references/bryson_denham.toml | 63 ++++- ext/MetaData/references/cart_pendulum.toml | 57 ++++- ext/MetaData/references/chain.toml | 57 ++++- .../dielectrophoretic_particle.toml | 55 ++++- .../references/double_oscillator.toml | 53 +++- ext/MetaData/references/ducted_fan.toml | 62 ++++- ext/MetaData/references/electric_vehicle.toml | 47 +++- ext/MetaData/references/glider.toml | 75 ++++-- ext/MetaData/references/insurance.toml | 50 +++- ext/MetaData/references/jackson.toml | 62 ++++- ext/MetaData/references/moonlander.toml | 98 +++++++- ext/MetaData/references/mountain_car.toml | 102 +++++++- ext/MetaData/references/robbins.toml | 59 ++++- ext/MetaData/references/robot.toml | 48 +++- ext/MetaData/references/rocket.toml | 50 +++- ext/MetaData/references/space_shuttle.toml | 73 ++++-- ext/MetaData/references/steering.toml | 60 ++++- ext/MetaData/references/vanderpol.toml | 62 ++++- 22 files changed, 1385 insertions(+), 188 deletions(-) diff --git a/ext/MetaData/references/balanced_field.toml b/ext/MetaData/references/balanced_field.toml index ff504d9c..5b638a26 100644 --- a/ext/MetaData/references/balanced_field.toml +++ b/ext/MetaData/references/balanced_field.toml @@ -6,10 +6,10 @@ agreement = true grid_size = 200 parameters = "(t0 = 0.0, m = 79015.8, g = 9.80665, ρ = 1.225, S = 124.7, CD0 = 0.03, AR = 9.45, e = 0.801, CL0 = 0.5, CL_max = 2.0, h_w = 1.0, span = 35.7, α_max = 0.1745, T = 120102.0, r_t0 = 600.0, v_t0 = 70.0, h_t0 = 0.0, γ_t0 = 0.0, h_tf = 10.668, γ_tf = 0.0873, v_min = 0.0, v_max = 100.0, α_min = -0.1745, α_max_ctrl = 0.2618)" -run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288933404 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288939786 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288946781 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288952545" +run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387108959 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387112175 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" source = "computed" spread = 2.4538248057585183e-9 -value = 771.0114003040649 +value = 771.0114003220631 [[trapeze.results]] configuration = "solver=ipopt" @@ -24,7 +24,7 @@ value = 771.0114003040649 [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" modeling = "JuMP" - objective = 771.0114003040651 + objective = 771.011400304065 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" @@ -34,7 +34,7 @@ value = 771.0114003040649 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" modeling = "JuMP" - objective = 771.0114004838803 + objective = 771.0114004838804 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" @@ -54,7 +54,7 @@ value = 771.0114003040649 [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" modeling = "OptimalControl" - objective = 771.0114003040649 + objective = 771.0114003040652 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" @@ -159,5 +159,46 @@ value = 771.0114003040649 [[trapeze.solutions]] configurations = ["JuMP solver=ipopt", "JuMP solver=ipopt mu_init=0.001", "JuMP solver=ipopt mu_strategy=monotone", "JuMP solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt", "OptimalControl modeler=adnlp solver=ipopt mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=exa solver=madnlp", "OptimalControl modeler=exa solver=madnlp barrier=loqo", "OptimalControl modeler=exa solver=madnlp mu_init=0.001", "OptimalControl modeler=exa solver=madnlp mu_init=1.0e-5", "OptimalControlScalarized modeler=exa solver=madnlp"] - objective = 771.0114003040649 + objective = 771.0114003220631 solves = 29 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "0f6b1ec2b60b46fcc5141592fd08794531e1f519" + configuration = "modeler=exa solver=madnlp mu_init=1.0e-5" + cpu = "AMD EPYC 7763 64-Core Processor" + iterations = 54 + julia = "1.13.3" + modeler = "exa" + modeling = "OptimalControl" + objective = 771.0114003220631 + os = "Linux" + platform = "cron-OptimalControl-robustness-1.13-ubuntu-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" + solver = "madnlp" + status = "SOLVE_SUCCEEDED" + time = 0.13735 + violation = 1.0347278589506459e-13 + + [trapeze.solutions.reference.options] + max_iter = 1000 + max_wall_time = 500.0 + mu_init = 1.0e-5 + print_level = "ERROR" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" diff --git a/ext/MetaData/references/beam.toml b/ext/MetaData/references/beam.toml index 7c400333..6117c329 100644 --- a/ext/MetaData/references/beam.toml +++ b/ext/MetaData/references/beam.toml @@ -6,10 +6,10 @@ agreement = true grid_size = 500 parameters = "(t0 = 0, tf = 1, x₁_l = 0, x₁_u = 0.1, x₁_t0 = 0, x₂_t0 = 1, x₁_tf = 0, x₂_tf = -1)" -run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288933404 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288939786 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288946781 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288952545" +run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387108959 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387112175 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" source = "computed" -spread = 6.880267386757687e-8 -value = 8.88928162026725 +spread = 6.880267366774556e-8 +value = 8.889281808581256 [[trapeze.results]] configuration = "solver=ipopt" @@ -24,7 +24,7 @@ value = 8.88928162026725 [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" modeling = "JuMP" - objective = 8.889281808507887 + objective = 8.88928181017181 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" @@ -34,7 +34,7 @@ value = 8.88928162026725 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" modeling = "JuMP" - objective = 8.889282231873594 + objective = 8.889282231873592 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" @@ -44,7 +44,7 @@ value = 8.88928162026725 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" modeling = "JuMP" - objective = 8.88928184856984 + objective = 8.889281848569889 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" @@ -54,7 +54,7 @@ value = 8.88928162026725 [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" modeling = "OptimalControl" - objective = 8.889281808581273 + objective = 8.88928181130797 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" @@ -99,7 +99,7 @@ value = 8.88928162026725 [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControl" - objective = 8.889281793484152 + objective = 8.889281850493827 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" @@ -144,12 +144,12 @@ value = 8.88928162026725 [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControlScalarized" - objective = 8.889281793484152 + objective = 8.889281850493827 platform = "cron-OptimalControlScalarized-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControlScalarized" - objective = 8.889281793484152 + objective = 8.889281850493827 platform = "cron-OptimalControlScalarized-1.13-windows-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" @@ -159,5 +159,48 @@ value = 8.88928162026725 [[trapeze.solutions]] configurations = ["JuMP solver=ipopt", "JuMP solver=ipopt mu_init=0.001", "JuMP solver=ipopt mu_strategy=monotone", "JuMP solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt", "OptimalControl modeler=adnlp solver=ipopt mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=exa solver=madnlp", "OptimalControl modeler=exa solver=madnlp barrier=loqo", "OptimalControl modeler=exa solver=madnlp mu_init=0.001", "OptimalControl modeler=exa solver=madnlp mu_init=1.0e-5", "OptimalControlScalarized modeler=exa solver=madnlp"] - objective = 8.88928162026725 + objective = 8.889281808581256 solves = 29 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "0f6b1ec2b60b46fcc5141592fd08794531e1f519" + configuration = "modeler=adnlp solver=ipopt mu_init=0.001" + cpu = "Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz" + iterations = 18 + julia = "1.13.3" + modeler = "adnlp" + modeling = "OptimalControl" + objective = 8.889281808581256 + os = "NT" + platform = "cron-OptimalControl-robustness-1.13-windows-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" + solver = "ipopt" + status = "first_order" + time = 0.119083 + violation = 1.1102230246251565e-16 + + [trapeze.solutions.reference.options] + max_iter = 1000 + max_wall_time = 500.0 + mu_init = 0.001 + mu_strategy = "adaptive" + print_level = 0 + sb = "yes" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" diff --git a/ext/MetaData/references/bioreactor.toml b/ext/MetaData/references/bioreactor.toml index 36d854d3..fec85304 100644 --- a/ext/MetaData/references/bioreactor.toml +++ b/ext/MetaData/references/bioreactor.toml @@ -6,9 +6,9 @@ agreement = false grid_size = 600 parameters = "(t0 = 0, tf = 200, β = 1, c = 2, γ = 1, halfperiod = 5, Ks = 0.05, μ2m = 0.1, μbar = 1, r = 0.005, y_l = 0, s_l = 0, b_l = 0.001, u_l = 0, u_u = 1, y_t0_l = 0.05, y_t0_u = 0.25, s_t0_l = 0.5, s_t0_u = 5, b_t0_l = 0.5, b_t0_u = 3)" -run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288933404 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288939786 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288946781 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288952545" +run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387108959 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387112175 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" source = "computed" -spread = 0.000327811483965837 +spread = 0.00032781148396556224 value = -12.929690242620518 [[trapeze.results]] @@ -24,7 +24,7 @@ value = -12.929690242620518 [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" modeling = "JuMP" - objective = -12.925452054145852 + objective = -12.925452054100038 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" @@ -34,7 +34,7 @@ value = -12.929690242620518 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" modeling = "JuMP" - objective = -12.925451741674866 + objective = -12.92545174167487 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" @@ -44,7 +44,7 @@ value = -12.929690242620518 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" modeling = "JuMP" - objective = -12.929690242620518 + objective = -12.929690242620516 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" @@ -54,7 +54,7 @@ value = -12.929690242620518 [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" modeling = "OptimalControl" - objective = -12.925452054391549 + objective = -12.925452054463422 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" @@ -99,7 +99,7 @@ value = -12.929690242620518 [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControl" - objective = -12.925451741674909 + objective = -12.925451741674895 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" @@ -146,19 +146,227 @@ value = -12.929690242620518 configurations = ["JuMP solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001"] objective = -12.929690242620518 solves = 4 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "0f6b1ec2b60b46fcc5141592fd08794531e1f519" + configuration = "modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001" + cpu = "Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz" + iterations = 160 + julia = "1.13.3" + modeler = "adnlp" + modeling = "OptimalControl" + objective = -12.929690242620518 + os = "NT" + platform = "cron-OptimalControl-robustness-1.13-windows-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" + solver = "ipopt" + status = "first_order" + time = 3.55974 + violation = 4.803542869919646e-9 + + [trapeze.solutions.reference.options] + max_iter = 1000 + max_wall_time = 500.0 + mu_init = 0.001 + mu_strategy = "monotone" + print_level = 0 + sb = "yes" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" [[trapeze.solutions]] configurations = ["OptimalControl modeler=exa solver=madnlp mu_init=0.001"] objective = -12.929428880081039 solves = 2 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "0f6b1ec2b60b46fcc5141592fd08794531e1f519" + configuration = "modeler=exa solver=madnlp mu_init=0.001" + cpu = "Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz" + iterations = 165 + julia = "1.13.3" + modeler = "exa" + modeling = "OptimalControl" + objective = -12.929428880081039 + os = "NT" + platform = "cron-OptimalControl-robustness-1.13-windows-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" + solver = "madnlp" + status = "SOLVE_SUCCEEDED" + time = 19.4614 + violation = 2.6848551368252593e-9 + + [trapeze.solutions.reference.options] + max_iter = 1000 + max_wall_time = 500.0 + mu_init = 0.001 + print_level = "ERROR" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" [[trapeze.solutions]] configurations = ["OptimalControl modeler=exa solver=madnlp mu_init=1.0e-5"] objective = -12.926202787514399 solves = 2 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "0f6b1ec2b60b46fcc5141592fd08794531e1f519" + configuration = "modeler=exa solver=madnlp mu_init=1.0e-5" + cpu = "Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz" + iterations = 151 + julia = "1.13.3" + modeler = "exa" + modeling = "OptimalControl" + objective = -12.926202787514399 + os = "NT" + platform = "cron-OptimalControl-robustness-1.13-windows-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" + solver = "madnlp" + status = "SOLVE_SUCCEEDED" + time = 0.767264 + violation = 4.057096091372725e-9 + + [trapeze.solutions.reference.options] + max_iter = 1000 + max_wall_time = 500.0 + mu_init = 1.0e-5 + print_level = "ERROR" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" [[trapeze.solutions]] configurations = ["OptimalControl modeler=exa solver=madnlp barrier=loqo"] - objective = -12.925967426083526 + objective = -12.925946306409168 solves = 2 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "0f6b1ec2b60b46fcc5141592fd08794531e1f519" + configuration = "modeler=exa solver=madnlp barrier=loqo" + cpu = "AMD EPYC 7763 64-Core Processor" + iterations = 129 + julia = "1.13.3" + modeler = "exa" + modeling = "OptimalControl" + objective = -12.925946306409168 + os = "Linux" + platform = "cron-OptimalControl-robustness-1.13-ubuntu-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" + solver = "madnlp" + status = "SOLVE_SUCCEEDED" + time = 1.25292 + violation = 2.71956068775836e-12 + + [trapeze.solutions.reference.options] + barrier = "loqo" + max_iter = 1000 + max_wall_time = 500.0 + print_level = "ERROR" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" [[trapeze.solutions]] configurations = ["JuMP solver=ipopt", "JuMP solver=ipopt mu_init=0.001", "JuMP solver=ipopt mu_strategy=monotone", "OptimalControl modeler=adnlp solver=ipopt", "OptimalControl modeler=adnlp solver=ipopt mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone", "OptimalControl modeler=exa solver=madnlp"] - objective = -12.925452054463422 + objective = -12.925452054150872 solves = 16 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "636fa809ae3e6c4367343be85d25d63fe119b5bd" + configuration = "modeler=adnlp solver=ipopt" + cpu = "AMD EPYC 7763 64-Core Processor" + iterations = 188 + julia = "1.13.3" + modeler = "adnlp" + modeling = "OptimalControl" + objective = -12.925452054150872 + os = "NT" + platform = "cron-OptimalControl-1.13-windows-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573" + solver = "ipopt" + status = "first_order" + time = 3.52422 + violation = 1.1220885332008379e-13 + + [trapeze.solutions.reference.options] + max_iter = 1000 + max_wall_time = 500.0 + mu_strategy = "adaptive" + print_level = 0 + sb = "yes" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" diff --git a/ext/MetaData/references/brachistochrone.toml b/ext/MetaData/references/brachistochrone.toml index 0a69f506..295eb702 100644 --- a/ext/MetaData/references/brachistochrone.toml +++ b/ext/MetaData/references/brachistochrone.toml @@ -6,10 +6,10 @@ agreement = false grid_size = 500 parameters = "(g = 9.80665, t0 = 0.0, x0 = 0.0, y0 = 10.0, v0 = 0.0, xf = 10.0, yf = 5.0, u_min = -3.141592653589793, u_max = π)" -run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288933404 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288939786 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288946781 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288952545" +run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387108959 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387112175 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" source = "computed" spread = 0.02249897337664817 -value = 1.802932006652922 +value = 1.802932061276909 [[trapeze.results]] configuration = "solver=ipopt" @@ -34,7 +34,7 @@ value = 1.802932006652922 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" modeling = "JuMP" - objective = 1.8029321585265314 + objective = 1.8029321585265317 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" @@ -44,7 +44,7 @@ value = 1.802932006652922 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" modeling = "JuMP" - objective = 1.8029320612769097 + objective = 1.802932061276909 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" @@ -54,7 +54,7 @@ value = 1.802932006652922 [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" modeling = "OptimalControl" - objective = 1.8029320066529235 + objective = 1.802932006652922 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" @@ -149,9 +149,93 @@ value = 1.802932006652922 [[trapeze.solutions]] configurations = ["JuMP solver=ipopt", "JuMP solver=ipopt mu_init=0.001", "JuMP solver=ipopt mu_strategy=monotone", "JuMP solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt", "OptimalControl modeler=adnlp solver=ipopt mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=exa solver=madnlp", "OptimalControl modeler=exa solver=madnlp mu_init=0.001", "OptimalControlScalarized modeler=exa solver=madnlp"] - objective = 1.802932006652922 + objective = 1.802932061276909 solves = 25 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "0f6b1ec2b60b46fcc5141592fd08794531e1f519" + configuration = "modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001" + cpu = "AMD EPYC 7763 64-Core Processor" + iterations = 22 + julia = "1.13.3" + modeler = "adnlp" + modeling = "OptimalControl" + objective = 1.802932061276909 + os = "Linux" + platform = "cron-OptimalControl-robustness-1.13-ubuntu-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" + solver = "ipopt" + status = "first_order" + time = 0.25709 + violation = 1.9225225855734607e-9 + + [trapeze.solutions.reference.options] + max_iter = 1000 + max_wall_time = 500.0 + mu_init = 0.001 + mu_strategy = "monotone" + print_level = 0 + sb = "yes" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" [[trapeze.solutions]] configurations = ["OptimalControl modeler=exa solver=madnlp barrier=loqo"] objective = 1.843496125847761 solves = 2 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "0f6b1ec2b60b46fcc5141592fd08794531e1f519" + configuration = "modeler=exa solver=madnlp barrier=loqo" + cpu = "AMD EPYC 7763 64-Core Processor" + iterations = 100 + julia = "1.13.3" + modeler = "exa" + modeling = "OptimalControl" + objective = 1.843496125847761 + os = "Linux" + platform = "cron-OptimalControl-robustness-1.13-ubuntu-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" + solver = "madnlp" + status = "SOLVE_SUCCEEDED" + time = 5.03583 + violation = 3.827424155389281e-9 + + [trapeze.solutions.reference.options] + barrier = "loqo" + max_iter = 1000 + max_wall_time = 500.0 + print_level = "ERROR" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" diff --git a/ext/MetaData/references/bryson_denham.toml b/ext/MetaData/references/bryson_denham.toml index 7ba434f9..b0c5e118 100644 --- a/ext/MetaData/references/bryson_denham.toml +++ b/ext/MetaData/references/bryson_denham.toml @@ -6,10 +6,10 @@ agreement = true grid_size = 500 parameters = "(t0 = 0.0, tf = 1.0, x1_t0 = 0.0, x2_t0 = 1.0, x1_tf = 0.0, x2_tf = -1.0, x1_max = 0.1111111111111111)" -run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288933404 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288939786 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288946781 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288952545" +run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387108959 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387112175 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" source = "computed" spread = 1.4294925612195244e-7 -value = 4.000142925683664 +value = 4.000142996431947 [[trapeze.results]] configuration = "solver=ipopt" @@ -24,7 +24,7 @@ value = 4.000142925683664 [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" modeling = "JuMP" - objective = 4.000143422061431 + objective = 4.000143422061432 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" @@ -34,7 +34,7 @@ value = 4.000142925683664 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" modeling = "JuMP" - objective = 4.000143022023738 + objective = 4.00014302202381 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" @@ -44,7 +44,7 @@ value = 4.000142925683664 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" modeling = "JuMP" - objective = 4.000142996431951 + objective = 4.000142996431947 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" @@ -54,7 +54,7 @@ value = 4.000142925683664 [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" modeling = "OptimalControl" - objective = 4.000143422061428 + objective = 4.000143422061419 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" @@ -99,7 +99,7 @@ value = 4.000142925683664 [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControl" - objective = 4.000143486269368 + objective = 4.00014349750112 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" @@ -144,12 +144,12 @@ value = 4.000142925683664 [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControlScalarized" - objective = 4.000143486269368 + objective = 4.00014349750112 platform = "cron-OptimalControlScalarized-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControlScalarized" - objective = 4.000143486269368 + objective = 4.00014349750112 platform = "cron-OptimalControlScalarized-1.13-windows-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" @@ -159,5 +159,48 @@ value = 4.000142925683664 [[trapeze.solutions]] configurations = ["JuMP solver=ipopt", "JuMP solver=ipopt mu_init=0.001", "JuMP solver=ipopt mu_strategy=monotone", "JuMP solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt", "OptimalControl modeler=adnlp solver=ipopt mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=exa solver=madnlp", "OptimalControl modeler=exa solver=madnlp barrier=loqo", "OptimalControl modeler=exa solver=madnlp mu_init=0.001", "OptimalControl modeler=exa solver=madnlp mu_init=1.0e-5", "OptimalControlScalarized modeler=exa solver=madnlp"] - objective = 4.000142925683664 + objective = 4.000142996431947 solves = 29 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "0f6b1ec2b60b46fcc5141592fd08794531e1f519" + configuration = "modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001" + cpu = "AMD EPYC 7763 64-Core Processor" + iterations = 21 + julia = "1.13.3" + modeler = "adnlp" + modeling = "OptimalControl" + objective = 4.000142996431947 + os = "Linux" + platform = "cron-OptimalControl-robustness-1.13-ubuntu-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" + solver = "ipopt" + status = "first_order" + time = 0.103698 + violation = 1.1102230246251565e-16 + + [trapeze.solutions.reference.options] + max_iter = 1000 + max_wall_time = 500.0 + mu_init = 0.001 + mu_strategy = "monotone" + print_level = 0 + sb = "yes" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" diff --git a/ext/MetaData/references/cart_pendulum.toml b/ext/MetaData/references/cart_pendulum.toml index 129094ad..c156ab4e 100644 --- a/ext/MetaData/references/cart_pendulum.toml +++ b/ext/MetaData/references/cart_pendulum.toml @@ -6,10 +6,10 @@ agreement = true grid_size = 500 parameters = "(t0 = 0, g = 9.81, L = 1, m = 1, mcart = 0.5, Fex_l = -5, Fex_u = 5, x_l = -1, x_u = 1, v_l = -2, v_u = 2, tf_l = 0.1, x_t0 = 0, θ_t0 = 0, ω_t0 = 0, θ_tf = π, ω_tf = 0)" -run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288933404 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288939786 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288946781 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288952545" +run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387108959 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387112175 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" source = "computed" spread = 1.586433868301789e-6 -value = 1.7439655750225398 +value = 1.7439657987471582 [[trapeze.results]] configuration = "solver=ipopt" @@ -24,7 +24,7 @@ value = 1.7439655750225398 [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" modeling = "JuMP" - objective = 1.7439655750325942 + objective = 1.7439655787788408 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" @@ -34,7 +34,7 @@ value = 1.7439655750225398 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" modeling = "JuMP" - objective = 1.7439660133245751 + objective = 1.7439667940820989 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" @@ -44,7 +44,7 @@ value = 1.7439655750225398 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" modeling = "JuMP" - objective = 1.7439660141712428 + objective = 1.7439660142008846 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" @@ -54,7 +54,7 @@ value = 1.7439655750225398 [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" modeling = "OptimalControl" - objective = 1.7439656616964376 + objective = 1.7439655750225398 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" @@ -99,7 +99,7 @@ value = 1.7439655750225398 [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControl" - objective = 1.7439667949771815 + objective = 1.7439667967740533 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" @@ -144,5 +144,46 @@ value = 1.7439655750225398 [[trapeze.solutions]] configurations = ["JuMP solver=ipopt", "JuMP solver=ipopt mu_init=0.001", "JuMP solver=ipopt mu_strategy=monotone", "JuMP solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt", "OptimalControl modeler=adnlp solver=ipopt mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=exa solver=madnlp", "OptimalControl modeler=exa solver=madnlp barrier=loqo", "OptimalControl modeler=exa solver=madnlp mu_init=0.001", "OptimalControl modeler=exa solver=madnlp mu_init=1.0e-5"] - objective = 1.7439655750225398 + objective = 1.7439657987471582 solves = 26 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "0f6b1ec2b60b46fcc5141592fd08794531e1f519" + configuration = "modeler=exa solver=madnlp barrier=loqo" + cpu = "AMD EPYC 7763 64-Core Processor" + iterations = 652 + julia = "1.13.3" + modeler = "exa" + modeling = "OptimalControl" + objective = 1.7439657987471582 + os = "Linux" + platform = "cron-OptimalControl-robustness-1.13-ubuntu-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" + solver = "madnlp" + status = "SOLVE_SUCCEEDED" + time = 4.65478 + violation = 3.077650634342177e-11 + + [trapeze.solutions.reference.options] + barrier = "loqo" + max_iter = 1000 + max_wall_time = 500.0 + print_level = "ERROR" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" diff --git a/ext/MetaData/references/chain.toml b/ext/MetaData/references/chain.toml index 7d1dfd4a..8ff96b1b 100644 --- a/ext/MetaData/references/chain.toml +++ b/ext/MetaData/references/chain.toml @@ -6,10 +6,10 @@ agreement = true grid_size = 500 parameters = "(t0 = 0, tf = 1, L = 4, a = 1, b = 3, x₂_t0 = 0, x₃_t0 = 0)" -run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288933404 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288939786 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288946781 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288952545" +run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387108959 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387112175 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" source = "computed" spread = 5.178113741056605e-13 -value = 5.0685777900242135 +value = 5.068577790026832 [[trapeze.results]] configuration = "solver=ipopt" @@ -24,7 +24,7 @@ value = 5.0685777900242135 [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" modeling = "JuMP" - objective = 5.0685777900268345 + objective = 5.068577790026836 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" @@ -34,7 +34,7 @@ value = 5.0685777900242135 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" modeling = "JuMP" - objective = 5.0685777900268345 + objective = 5.068577790026836 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" @@ -44,7 +44,7 @@ value = 5.0685777900242135 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" modeling = "JuMP" - objective = 5.0685777900268345 + objective = 5.068577790026836 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" @@ -54,7 +54,7 @@ value = 5.0685777900242135 [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" modeling = "OptimalControl" - objective = 5.068577790026838 + objective = 5.0685777900268345 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" @@ -159,5 +159,48 @@ value = 5.0685777900242135 [[trapeze.solutions]] configurations = ["JuMP solver=ipopt", "JuMP solver=ipopt mu_init=0.001", "JuMP solver=ipopt mu_strategy=monotone", "JuMP solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt", "OptimalControl modeler=adnlp solver=ipopt mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=exa solver=madnlp", "OptimalControl modeler=exa solver=madnlp barrier=loqo", "OptimalControl modeler=exa solver=madnlp mu_init=0.001", "OptimalControl modeler=exa solver=madnlp mu_init=1.0e-5", "OptimalControlScalarized modeler=exa solver=madnlp"] - objective = 5.0685777900242135 + objective = 5.068577790026832 solves = 29 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "0f6b1ec2b60b46fcc5141592fd08794531e1f519" + configuration = "modeler=adnlp solver=ipopt mu_init=0.001" + cpu = "Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz" + iterations = 14 + julia = "1.13.3" + modeler = "adnlp" + modeling = "OptimalControl" + objective = 5.068577790026832 + os = "NT" + platform = "cron-OptimalControl-robustness-1.13-windows-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" + solver = "ipopt" + status = "first_order" + time = 0.202702 + violation = 1.8990808925423153e-11 + + [trapeze.solutions.reference.options] + max_iter = 1000 + max_wall_time = 500.0 + mu_init = 0.001 + mu_strategy = "adaptive" + print_level = 0 + sb = "yes" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" diff --git a/ext/MetaData/references/dielectrophoretic_particle.toml b/ext/MetaData/references/dielectrophoretic_particle.toml index 72c7f211..74b74894 100644 --- a/ext/MetaData/references/dielectrophoretic_particle.toml +++ b/ext/MetaData/references/dielectrophoretic_particle.toml @@ -6,10 +6,10 @@ agreement = true grid_size = 500 parameters = "(t0 = 0, x_t0 = 1, y_t0 = 0, x_tf = 2, α = -0.75, c = 1, u_l = -1, u_u = 1, tf_l = 0.1)" -run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288933404 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288939786 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288946781 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288952545" +run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387108959 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387112175 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" source = "computed" -spread = 1.221909871988508e-7 -value = 7.811323680996133 +spread = 1.2219098753996266e-7 +value = 7.811324025977027 [[trapeze.results]] configuration = "solver=ipopt" @@ -24,7 +24,7 @@ value = 7.811323680996133 [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" modeling = "JuMP" - objective = 7.811323680996134 + objective = 7.811323680996133 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" @@ -34,7 +34,7 @@ value = 7.811323680996133 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" modeling = "JuMP" - objective = 7.811324635469484 + objective = 7.811324635469488 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" @@ -159,5 +159,48 @@ value = 7.811323680996133 [[trapeze.solutions]] configurations = ["JuMP solver=ipopt", "JuMP solver=ipopt mu_init=0.001", "JuMP solver=ipopt mu_strategy=monotone", "JuMP solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt", "OptimalControl modeler=adnlp solver=ipopt mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=exa solver=madnlp", "OptimalControl modeler=exa solver=madnlp barrier=loqo", "OptimalControl modeler=exa solver=madnlp mu_init=0.001", "OptimalControl modeler=exa solver=madnlp mu_init=1.0e-5", "OptimalControlScalarized modeler=exa solver=madnlp"] - objective = 7.811323680996133 + objective = 7.811324025977027 solves = 29 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "0f6b1ec2b60b46fcc5141592fd08794531e1f519" + configuration = "modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001" + cpu = "AMD EPYC 7763 64-Core Processor" + iterations = 14 + julia = "1.13.3" + modeler = "adnlp" + modeling = "OptimalControl" + objective = 7.811324025977027 + os = "Linux" + platform = "cron-OptimalControl-robustness-1.13-ubuntu-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" + solver = "ipopt" + status = "first_order" + time = 0.133316 + violation = 3.994393704687127e-11 + + [trapeze.solutions.reference.options] + max_iter = 1000 + max_wall_time = 500.0 + mu_init = 0.001 + mu_strategy = "monotone" + print_level = 0 + sb = "yes" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" diff --git a/ext/MetaData/references/double_oscillator.toml b/ext/MetaData/references/double_oscillator.toml index a660967f..3239c183 100644 --- a/ext/MetaData/references/double_oscillator.toml +++ b/ext/MetaData/references/double_oscillator.toml @@ -6,10 +6,10 @@ agreement = true grid_size = 500 parameters = "(t0 = 0, tf = 6.283185307179586, m1 = 100, m2 = 2, c = 0.5, k1 = 100, k2 = 3, u_l = -1, u_u = 1, x₁_t0 = 0, x₂_t0 = 0)" -run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288933404 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288939786 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288946781 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288952545" +run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387108959 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387112175 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" source = "computed" spread = 6.248912408876316e-12 -value = 0.0009109230332461941 +value = 0.0009109230332461957 [[trapeze.results]] configuration = "solver=ipopt" @@ -24,7 +24,7 @@ value = 0.0009109230332461941 [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" modeling = "JuMP" - objective = 0.0009109230332518861 + objective = 0.0009109230332518862 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" @@ -34,7 +34,7 @@ value = 0.0009109230332461941 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" modeling = "JuMP" - objective = 0.0009109230332461992 + objective = 0.0009109230332461991 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" @@ -54,7 +54,7 @@ value = 0.0009109230332461941 [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" modeling = "OptimalControl" - objective = 0.0009109230332518864 + objective = 0.0009109230332518861 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" @@ -159,5 +159,46 @@ value = 0.0009109230332461941 [[trapeze.solutions]] configurations = ["JuMP solver=ipopt", "JuMP solver=ipopt mu_init=0.001", "JuMP solver=ipopt mu_strategy=monotone", "JuMP solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt", "OptimalControl modeler=adnlp solver=ipopt mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=exa solver=madnlp", "OptimalControl modeler=exa solver=madnlp barrier=loqo", "OptimalControl modeler=exa solver=madnlp mu_init=0.001", "OptimalControl modeler=exa solver=madnlp mu_init=1.0e-5", "OptimalControlScalarized modeler=exa solver=madnlp"] - objective = 0.0009109230332461941 + objective = 0.0009109230332461957 solves = 29 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "0f6b1ec2b60b46fcc5141592fd08794531e1f519" + configuration = "modeler=exa solver=madnlp mu_init=1.0e-5" + cpu = "Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz" + iterations = 5 + julia = "1.13.3" + modeler = "exa" + modeling = "OptimalControl" + objective = 0.0009109230332461957 + os = "NT" + platform = "cron-OptimalControl-robustness-1.13-windows-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" + solver = "madnlp" + status = "SOLVE_SUCCEEDED" + time = 0.028062 + violation = 5.6107462426124854e-18 + + [trapeze.solutions.reference.options] + max_iter = 1000 + max_wall_time = 500.0 + mu_init = 1.0e-5 + print_level = "ERROR" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" diff --git a/ext/MetaData/references/ducted_fan.toml b/ext/MetaData/references/ducted_fan.toml index 8526ccdc..1d1d06f4 100644 --- a/ext/MetaData/references/ducted_fan.toml +++ b/ext/MetaData/references/ducted_fan.toml @@ -6,10 +6,10 @@ agreement = true grid_size = 250 parameters = "(t0 = 0, r = 0.2, J = 0.05, m = 2.2, mg = 4, μ = 1000, α_l = -0.5235987755982988, α_u = 0.5235987755982988, u₁_l = -5, u₁_u = 5, u₂_l = 0, u₂_u = 17, tf_l = 0.1, x₁_t0 = 0, v₁_t0 = 0, x₂_t0 = 0, v₂_t0 = 0, α_t0 = 0, vα_t0 = 0, x₁_tf = 1, v₁_tf = 0, x₂_tf = 0, v₂_tf = 0, α_tf = 0, vα_tf = 0)" -run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288933404 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288939786 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288946781 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288952545" +run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387108959 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387112175 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" source = "computed" -spread = 7.661904466495749e-8 -value = 1831.8277178167814 +spread = 7.661888603456097e-8 +value = 1831.8278581674542 [[trapeze.results]] configuration = "solver=ipopt" @@ -24,7 +24,7 @@ value = 1831.8277178167814 [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" modeling = "JuMP" - objective = 1831.8277178168435 + objective = 1831.8278488713581 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" @@ -34,7 +34,7 @@ value = 1831.8277178167814 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" modeling = "JuMP" - objective = 1831.8278581696711 + objective = 1831.8278581693805 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" @@ -44,7 +44,7 @@ value = 1831.8277178167814 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" modeling = "JuMP" - objective = 1831.8277212767207 + objective = 1831.8277212767446 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" @@ -54,7 +54,7 @@ value = 1831.8277178167814 [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" modeling = "OptimalControl" - objective = 1831.8277178168887 + objective = 1831.8278488312462 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" @@ -99,7 +99,7 @@ value = 1831.8277178167814 [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControl" - objective = 1831.8278581674542 + objective = 1831.827858167453 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" @@ -144,12 +144,12 @@ value = 1831.8277178167814 [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControlScalarized" - objective = 1831.8278581674542 + objective = 1831.827858167453 platform = "cron-OptimalControlScalarized-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControlScalarized" - objective = 1831.8278581674542 + objective = 1831.827858167453 platform = "cron-OptimalControlScalarized-1.13-windows-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" @@ -159,5 +159,45 @@ value = 1831.8277178167814 [[trapeze.solutions]] configurations = ["JuMP solver=ipopt", "JuMP solver=ipopt mu_init=0.001", "JuMP solver=ipopt mu_strategy=monotone", "JuMP solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt", "OptimalControl modeler=adnlp solver=ipopt mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=exa solver=madnlp", "OptimalControl modeler=exa solver=madnlp barrier=loqo", "OptimalControl modeler=exa solver=madnlp mu_init=0.001", "OptimalControl modeler=exa solver=madnlp mu_init=1.0e-5", "OptimalControlScalarized modeler=exa solver=madnlp"] - objective = 1831.8277178167814 + objective = 1831.8278581674542 solves = 29 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "636fa809ae3e6c4367343be85d25d63fe119b5bd" + configuration = "modeler=exa solver=madnlp" + cpu = "AMD EPYC 7763 64-Core Processor" + iterations = 67 + julia = "1.13.3" + modeler = "exa" + modeling = "OptimalControl" + objective = 1831.8278581674542 + os = "NT" + platform = "cron-OptimalControl-1.13-windows-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573" + solver = "madnlp" + status = "SOLVE_SUCCEEDED" + time = 0.367174 + violation = 3.0912772341906702e-15 + + [trapeze.solutions.reference.options] + max_iter = 1000 + max_wall_time = 500.0 + print_level = "ERROR" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" diff --git a/ext/MetaData/references/electric_vehicle.toml b/ext/MetaData/references/electric_vehicle.toml index 08173ef4..62b612b9 100644 --- a/ext/MetaData/references/electric_vehicle.toml +++ b/ext/MetaData/references/electric_vehicle.toml @@ -6,7 +6,7 @@ agreement = true grid_size = 500 parameters = "(t0 = 0, tf = 1, b1 = 1.0, b2 = 1.0, h0 = 0.1, h1 = 1, h2 = 0.001, α0 = 3, α1 = 0.4, α2 = -1, α3 = 0.1, x_t0 = 0, v_t0 = 0, x_tf = 10, v_tf = 0)" -run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288933404 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288939786 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288946781 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288952545" +run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387108959 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387112175 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" source = "computed" spread = 9.253370009051573e-16 value = 1228.599284481313 @@ -54,7 +54,7 @@ value = 1228.599284481313 [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" modeling = "OptimalControl" - objective = 1228.599284481313 + objective = 1228.5992844813134 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" @@ -161,3 +161,46 @@ value = 1228.599284481313 configurations = ["JuMP solver=ipopt", "JuMP solver=ipopt mu_init=0.001", "JuMP solver=ipopt mu_strategy=monotone", "JuMP solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt", "OptimalControl modeler=adnlp solver=ipopt mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=exa solver=madnlp", "OptimalControl modeler=exa solver=madnlp barrier=loqo", "OptimalControl modeler=exa solver=madnlp mu_init=0.001", "OptimalControl modeler=exa solver=madnlp mu_init=1.0e-5", "OptimalControlScalarized modeler=exa solver=madnlp"] objective = 1228.599284481313 solves = 29 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "0f6b1ec2b60b46fcc5141592fd08794531e1f519" + configuration = "modeler=adnlp solver=ipopt mu_init=0.001" + cpu = "AMD EPYC 7763 64-Core Processor" + iterations = 4 + julia = "1.13.3" + modeler = "adnlp" + modeling = "OptimalControl" + objective = 1228.599284481313 + os = "Linux" + platform = "cron-OptimalControl-robustness-1.13-ubuntu-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" + solver = "ipopt" + status = "first_order" + time = 0.119365 + violation = 1.7763568394002505e-15 + + [trapeze.solutions.reference.options] + max_iter = 1000 + max_wall_time = 500.0 + mu_init = 0.001 + mu_strategy = "adaptive" + print_level = 0 + sb = "yes" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" diff --git a/ext/MetaData/references/glider.toml b/ext/MetaData/references/glider.toml index 7492dd77..791dc9f5 100644 --- a/ext/MetaData/references/glider.toml +++ b/ext/MetaData/references/glider.toml @@ -6,55 +6,55 @@ agreement = true grid_size = 500 parameters = "(t0 = 0, x_t0 = 0, y_t0 = 1000, y_tf = 900, vx_t0 = 13.23, vx_tf = 13.23, vy_t0 = -1.288, vy_tf = -1.288, u_c = 2.5, r_t0 = 100, m = 100, g = 9.81, c0 = 0.034, c1 = 0.069662, S = 14, ρ = 1.13, cL_min = 0, cL_max = 1.4, tf_l = 0, x_l = 0, vx_l = 0)" -run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288933404 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288939786 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288946781 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288952545" +run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387108959 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387112175 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" source = "computed" -spread = 1.0147162903589398e-10 -value = -1247.9784300226472 +spread = 1.0235125970780203e-10 +value = -1247.9784300208023 [[trapeze.results]] configuration = "solver=ipopt" modeling = "JuMP" - objective = -1247.9784300215604 + objective = -1247.978430023745 platform = "cron-JuMP-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt" modeling = "JuMP" - objective = -1247.9784300216338 + objective = -1247.9784300226427 platform = "cron-JuMP-1.13-windows-latest" [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" modeling = "JuMP" - objective = -1247.9784300211415 + objective = -1247.978430023745 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" modeling = "JuMP" - objective = -1247.9784300216338 + objective = -1247.9784300226427 platform = "cron-JuMP-robustness-1.13-windows-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" modeling = "JuMP" - objective = -1247.9784298962754 + objective = -1247.978429896315 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" modeling = "JuMP" - objective = -1247.9784298960192 + objective = -1247.97842989603 platform = "cron-JuMP-robustness-1.13-windows-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" modeling = "JuMP" - objective = -1247.978429979796 + objective = -1247.9784299798018 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" modeling = "JuMP" - objective = -1247.9784299798075 + objective = -1247.978429979803 platform = "cron-JuMP-robustness-1.13-windows-latest" [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" modeling = "OptimalControl" - objective = -1247.9784300208023 + objective = -1247.9784300209178 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" @@ -99,7 +99,7 @@ value = -1247.9784300226472 [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControl" - objective = -1247.9784298963027 + objective = -1247.9784298962459 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" @@ -144,12 +144,12 @@ value = -1247.9784300226472 [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControlScalarized" - objective = -1247.9784298963027 + objective = -1247.9784298962459 platform = "cron-OptimalControlScalarized-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControlScalarized" - objective = -1247.9784298962022 + objective = -1247.9784298962459 platform = "cron-OptimalControlScalarized-1.13-windows-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" @@ -159,5 +159,48 @@ value = -1247.9784300226472 [[trapeze.solutions]] configurations = ["JuMP solver=ipopt", "JuMP solver=ipopt mu_init=0.001", "JuMP solver=ipopt mu_strategy=monotone", "JuMP solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt", "OptimalControl modeler=adnlp solver=ipopt mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=exa solver=madnlp", "OptimalControl modeler=exa solver=madnlp barrier=loqo", "OptimalControl modeler=exa solver=madnlp mu_init=0.001", "OptimalControl modeler=exa solver=madnlp mu_init=1.0e-5", "OptimalControlScalarized modeler=exa solver=madnlp"] - objective = -1247.9784300226472 + objective = -1247.9784300208023 solves = 29 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "0f6b1ec2b60b46fcc5141592fd08794531e1f519" + configuration = "modeler=adnlp solver=ipopt mu_init=0.001" + cpu = "AMD EPYC 7763 64-Core Processor" + iterations = 38 + julia = "1.13.3" + modeler = "adnlp" + modeling = "OptimalControl" + objective = -1247.9784300208023 + os = "Linux" + platform = "cron-OptimalControl-robustness-1.13-ubuntu-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" + solver = "ipopt" + status = "first_order" + time = 26.2624 + violation = 4.547473508864641e-13 + + [trapeze.solutions.reference.options] + max_iter = 1000 + max_wall_time = 500.0 + mu_init = 0.001 + mu_strategy = "adaptive" + print_level = 0 + sb = "yes" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" diff --git a/ext/MetaData/references/insurance.toml b/ext/MetaData/references/insurance.toml index 936969df..7176952e 100644 --- a/ext/MetaData/references/insurance.toml +++ b/ext/MetaData/references/insurance.toml @@ -6,10 +6,10 @@ agreement = true grid_size = 500 parameters = "(t0 = 0, tf = 10, γ = 0.2, λ = 0.25, h0 = 1.5, w = 1, s = 10, k = 0, σ = 0, α = 4, I_l = 0, I_u = 1.5, m_l = 0, m_u = 1.5, h_l = 0, h_u = 25, R_l = 0, H_l = 0, U_l = 0, dUdR_l = 0.001, P_l = 0, I_t0 = 0, m_t0 = 0.001, x₃_t0 = 0)" -run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288933404 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288939786 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288946781 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288952545" +run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387108959 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387112175 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" source = "computed" spread = 3.437310685571518e-6 -value = -2.0592143337375415 +value = -2.059213403165573 [[trapeze.results]] configuration = "solver=ipopt" @@ -24,7 +24,7 @@ value = -2.0592143337375415 [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" modeling = "JuMP" - objective = -2.0592143322188674 + objective = -2.0592143337375415 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" @@ -34,7 +34,7 @@ value = -2.0592143337375415 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" modeling = "JuMP" - objective = -2.059213403165573 + objective = -2.0592134031655718 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" @@ -44,7 +44,7 @@ value = -2.0592143337375415 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" modeling = "JuMP" - objective = -2.059213992882103 + objective = -2.0592072555781122 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" @@ -54,7 +54,7 @@ value = -2.0592143337375415 [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" modeling = "OptimalControl" - objective = -2.059214333311406 + objective = -2.0592143333119894 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" @@ -154,5 +154,41 @@ value = -2.0592143337375415 [[trapeze.solutions]] configurations = ["JuMP solver=ipopt", "JuMP solver=ipopt mu_init=0.001", "JuMP solver=ipopt mu_strategy=monotone", "JuMP solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt", "OptimalControl modeler=adnlp solver=ipopt mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=exa solver=madnlp", "OptimalControl modeler=exa solver=madnlp barrier=loqo", "OptimalControl modeler=exa solver=madnlp mu_init=0.001", "OptimalControl modeler=exa solver=madnlp mu_init=1.0e-5", "OptimalControlScalarized modeler=exa solver=madnlp"] - objective = -2.0592143337375415 + objective = -2.059213403165573 solves = 28 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "0f6b1ec2b60b46fcc5141592fd08794531e1f519" + configuration = "solver=ipopt mu_strategy=monotone" + cpu = "AMD EPYC 9V45 96-Core Processor" + iterations = 145 + julia = "1.13.3" + modeler = "" + modeling = "JuMP" + objective = -2.059213403165573 + os = "NT" + platform = "cron-JuMP-robustness-1.13-windows-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" + solver = "ipopt" + status = "LOCALLY_SOLVED" + time = 1.172 + violation = 3.9968028886505635e-15 + + [trapeze.solutions.reference.options] + linear_solver = "mumps" + max_iter = 1000 + max_wall_time = 500.0 + mu_strategy = "monotone" + sb = "yes" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + CTBase = "0.30.13" + CTModels = "0.19.8" + Ipopt = "1.16.0" + Ipopt_jll = "300.1400.1902+0" + JuMP = "1.32.1" + MUMPS_seq_jll = "500.900.100+0" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" diff --git a/ext/MetaData/references/jackson.toml b/ext/MetaData/references/jackson.toml index 6b8f9b2e..00f2bd6f 100644 --- a/ext/MetaData/references/jackson.toml +++ b/ext/MetaData/references/jackson.toml @@ -6,10 +6,10 @@ agreement = true grid_size = 500 parameters = "(t0 = 0, tf = 4, k1 = 1, k2 = 10, k3 = 1, a_l = 0, a_u = 1.1, b_l = 0, b_u = 1.1, x₃_l = 0, x₃_u = 1.1, u_l = 0, u_u = 1, a_t0 = 1, b_t0 = 0, x₃_t0 = 0)" -run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288933404 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288939786 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288946781 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288952545" +run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387108959 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387112175 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" source = "computed" -spread = 1.4915580303995847e-6 -value = -0.19182194736955152 +spread = 1.4915579296923815e-6 +value = -0.19182194736953223 [[trapeze.results]] configuration = "solver=ipopt" @@ -24,7 +24,7 @@ value = -0.19182194736955152 [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" modeling = "JuMP" - objective = -0.19182194736955152 + objective = -0.19182194736952496 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" @@ -34,7 +34,7 @@ value = -0.19182194736955152 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" modeling = "JuMP" - objective = -0.19182166125598551 + objective = -0.19182166125598554 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" @@ -54,7 +54,7 @@ value = -0.19182194736955152 [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" modeling = "OptimalControl" - objective = -0.19182194736953223 + objective = -0.19182194736952915 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" @@ -99,7 +99,7 @@ value = -0.19182194736955152 [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControl" - objective = -0.1918216612568282 + objective = -0.1918216612568496 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" @@ -144,12 +144,12 @@ value = -0.19182194736955152 [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControlScalarized" - objective = -0.1918216612568282 + objective = -0.1918216612568496 platform = "cron-OptimalControlScalarized-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControlScalarized" - objective = -0.1918216612568282 + objective = -0.1918216612568496 platform = "cron-OptimalControlScalarized-1.13-windows-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" @@ -159,5 +159,47 @@ value = -0.19182194736955152 [[trapeze.solutions]] configurations = ["JuMP solver=ipopt", "JuMP solver=ipopt mu_init=0.001", "JuMP solver=ipopt mu_strategy=monotone", "JuMP solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt", "OptimalControl modeler=adnlp solver=ipopt mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=exa solver=madnlp", "OptimalControl modeler=exa solver=madnlp barrier=loqo", "OptimalControl modeler=exa solver=madnlp mu_init=0.001", "OptimalControl modeler=exa solver=madnlp mu_init=1.0e-5", "OptimalControlScalarized modeler=exa solver=madnlp"] - objective = -0.19182194736955152 + objective = -0.19182194736953223 solves = 29 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "636fa809ae3e6c4367343be85d25d63fe119b5bd" + configuration = "modeler=adnlp solver=ipopt" + cpu = "AMD EPYC 7763 64-Core Processor" + iterations = 58 + julia = "1.13.3" + modeler = "adnlp" + modeling = "OptimalControl" + objective = -0.19182194736953223 + os = "NT" + platform = "cron-OptimalControl-1.13-windows-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573" + solver = "ipopt" + status = "first_order" + time = 0.487541 + violation = 1.4210410625992154e-11 + + [trapeze.solutions.reference.options] + max_iter = 1000 + max_wall_time = 500.0 + mu_strategy = "adaptive" + print_level = 0 + sb = "yes" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" diff --git a/ext/MetaData/references/moonlander.toml b/ext/MetaData/references/moonlander.toml index c81705be..b9c7db2e 100644 --- a/ext/MetaData/references/moonlander.toml +++ b/ext/MetaData/references/moonlander.toml @@ -6,10 +6,10 @@ agreement = false grid_size = 500 parameters = "(t0 = 0, m = 1, g = 9.81, I = 0.1, D = 1, max_thrust = 19.62, tf_l = 0.1, tf_u = 1.0, F₁_l = 0, F₂_l = 0, p₁_t0 = 0, p₂_t0 = 0, dp₁_t0 = 0, dp₂_t0 = 0, θ_t0 = 0, dθ_t0 = 0, p₁_tf = 5, p₂_tf = 5, dp₁_tf = 0, dp₂_tf = 0)" -run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288933404 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288939786 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288946781 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288952545" +run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387108959 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387112175 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" source = "computed" spread = 3.505103019045729e-5 -value = 0.9618100531194832 +value = 0.9618109334441546 [[trapeze.results]] configuration = "solver=ipopt" @@ -24,7 +24,7 @@ value = 0.9618100531194832 [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" modeling = "JuMP" - objective = 0.9618100531341298 + objective = 0.9618100542096398 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" @@ -34,17 +34,12 @@ value = 0.9618100531194832 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" modeling = "JuMP" - objective = 0.961810933422959 - platform = "cron-JuMP-robustness-1.13-ubuntu-latest" - [[trapeze.results]] - configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" - modeling = "JuMP" objective = 0.9618109334441546 platform = "cron-JuMP-robustness-1.13-windows-latest" [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" modeling = "OptimalControl" - objective = 0.9618100664989868 + objective = 0.9618100531194832 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" @@ -84,7 +79,7 @@ value = 0.9618100531194832 [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControl" - objective = 0.9618109334084259 + objective = 0.9618109334084258 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" @@ -129,9 +124,88 @@ value = 0.9618100531194832 [[trapeze.solutions]] configurations = ["JuMP solver=ipopt", "JuMP solver=ipopt mu_init=0.001", "JuMP solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt", "OptimalControl modeler=adnlp solver=ipopt mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=exa solver=madnlp", "OptimalControl modeler=exa solver=madnlp barrier=loqo", "OptimalControl modeler=exa solver=madnlp mu_init=0.001", "OptimalControl modeler=exa solver=madnlp mu_init=1.0e-5"] - objective = 0.9618100531194832 - solves = 22 + objective = 0.9618109334441546 + solves = 21 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "0f6b1ec2b60b46fcc5141592fd08794531e1f519" + configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" + cpu = "AMD EPYC 9V45 96-Core Processor" + iterations = 66 + julia = "1.13.3" + modeler = "" + modeling = "JuMP" + objective = 0.9618109334441546 + os = "NT" + platform = "cron-JuMP-robustness-1.13-windows-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" + solver = "ipopt" + status = "LOCALLY_SOLVED" + time = 1.6081 + violation = 3.552713678800501e-15 + + [trapeze.solutions.reference.options] + linear_solver = "mumps" + max_iter = 1000 + max_wall_time = 500.0 + mu_init = 0.001 + mu_strategy = "monotone" + sb = "yes" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + CTBase = "0.30.13" + CTModels = "0.19.8" + Ipopt = "1.16.0" + Ipopt_jll = "300.1400.1902+0" + JuMP = "1.32.1" + MUMPS_seq_jll = "500.900.100+0" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" [[trapeze.solutions]] configurations = ["OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone"] objective = 0.9618437655526926 solves = 1 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "0f6b1ec2b60b46fcc5141592fd08794531e1f519" + configuration = "modeler=adnlp solver=ipopt mu_strategy=monotone" + cpu = "AMD EPYC 7763 64-Core Processor" + iterations = 158 + julia = "1.13.3" + modeler = "adnlp" + modeling = "OptimalControl" + objective = 0.9618437655526926 + os = "Linux" + platform = "cron-OptimalControl-robustness-1.13-ubuntu-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" + solver = "ipopt" + status = "acceptable" + time = 22.5685 + violation = 2.4940405296547397e-9 + + [trapeze.solutions.reference.options] + max_iter = 1000 + max_wall_time = 500.0 + mu_strategy = "monotone" + print_level = 0 + sb = "yes" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" diff --git a/ext/MetaData/references/mountain_car.toml b/ext/MetaData/references/mountain_car.toml index 7d524bd3..e75813a1 100644 --- a/ext/MetaData/references/mountain_car.toml +++ b/ext/MetaData/references/mountain_car.toml @@ -6,10 +6,10 @@ agreement = false grid_size = 200 parameters = "(t0 = 0.0, tf_start = 110.0, tf_min = 0.1, pos_t0 = -0.5, vel_t0 = 0.0, pos_tf = 0.5, vel_tf_min = 0.0, pos_min = -1.2, pos_max = 0.5, vel_min = -0.07, vel_max = 0.07, u_min = -1.0, u_max = 1.0, a = 0.001, b = 0.0025, c = 3.0)" -run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288933404 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288939786 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288946781 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288952545" +run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387108959 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387112175 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" source = "computed" spread = 0.00016189972119547122 -value = 102.38099470172985 +value = 102.3809949692475 [[trapeze.results]] configuration = "solver=ipopt" @@ -24,7 +24,7 @@ value = 102.38099470172985 [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" modeling = "JuMP" - objective = 102.39757015622571 + objective = 102.39757015622777 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" @@ -34,7 +34,7 @@ value = 102.38099470172985 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" modeling = "JuMP" - objective = 102.3809951930234 + objective = 102.38099519302341 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" @@ -44,7 +44,7 @@ value = 102.38099470172985 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" modeling = "JuMP" - objective = 102.3809948643563 + objective = 102.38099486435627 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" @@ -54,7 +54,7 @@ value = 102.38099470172985 [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" modeling = "OptimalControl" - objective = 102.39757015622693 + objective = 102.39757015622659 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" @@ -99,7 +99,7 @@ value = 102.38099470172985 [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControl" - objective = 102.38099519301883 + objective = 102.38099519301736 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" @@ -144,12 +144,12 @@ value = 102.38099470172985 [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControlScalarized" - objective = 102.38099519301883 + objective = 102.38099519301736 platform = "cron-OptimalControlScalarized-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControlScalarized" - objective = 102.38099519301883 + objective = 102.38099519301736 platform = "cron-OptimalControlScalarized-1.13-windows-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" @@ -159,9 +159,91 @@ value = 102.38099470172985 [[trapeze.solutions]] configurations = ["JuMP solver=ipopt mu_strategy=monotone", "JuMP solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=exa solver=madnlp", "OptimalControl modeler=exa solver=madnlp barrier=loqo", "OptimalControl modeler=exa solver=madnlp mu_init=0.001", "OptimalControlScalarized modeler=exa solver=madnlp"] - objective = 102.38099470172985 + objective = 102.3809949692475 solves = 18 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "0f6b1ec2b60b46fcc5141592fd08794531e1f519" + configuration = "modeler=exa solver=madnlp barrier=loqo" + cpu = "Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz" + iterations = 39 + julia = "1.13.3" + modeler = "exa" + modeling = "OptimalControl" + objective = 102.3809949692475 + os = "NT" + platform = "cron-OptimalControl-robustness-1.13-windows-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" + solver = "madnlp" + status = "SOLVE_SUCCEEDED" + time = 0.632883 + violation = 2.09576279941448e-16 + + [trapeze.solutions.reference.options] + barrier = "loqo" + max_iter = 1000 + max_wall_time = 500.0 + print_level = "ERROR" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" [[trapeze.solutions]] configurations = ["JuMP solver=ipopt", "JuMP solver=ipopt mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt", "OptimalControl modeler=adnlp solver=ipopt mu_init=0.001", "OptimalControl modeler=exa solver=madnlp mu_init=1.0e-5"] objective = 102.39756996372448 solves = 11 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "0f6b1ec2b60b46fcc5141592fd08794531e1f519" + configuration = "modeler=exa solver=madnlp mu_init=1.0e-5" + cpu = "AMD EPYC 7763 64-Core Processor" + iterations = 84 + julia = "1.13.3" + modeler = "exa" + modeling = "OptimalControl" + objective = 102.39756996372448 + os = "Linux" + platform = "cron-OptimalControl-robustness-1.13-ubuntu-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" + solver = "madnlp" + status = "SOLVE_SUCCEEDED" + time = 0.0801998 + violation = 5.48172618408671e-16 + + [trapeze.solutions.reference.options] + max_iter = 1000 + max_wall_time = 500.0 + mu_init = 1.0e-5 + print_level = "ERROR" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" diff --git a/ext/MetaData/references/robbins.toml b/ext/MetaData/references/robbins.toml index 628cc8bc..1fd67136 100644 --- a/ext/MetaData/references/robbins.toml +++ b/ext/MetaData/references/robbins.toml @@ -6,10 +6,10 @@ agreement = true grid_size = 500 parameters = "(t0 = 0, tf = 10, α = 3, β = 0, γ = 0.5, x₁_l = 0, x₁_t0 = 1, x₂_t0 = -2, x₃_t0 = 0, x₁_tf = 0, x₂_tf = 0, x₃_tf = 0)" -run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288933404 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288939786 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288946781 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288952545" +run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387108959 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387112175 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" source = "computed" spread = 8.340606134238261e-8 -value = 19.46663273582843 +value = 19.46663292374462 [[trapeze.results]] configuration = "solver=ipopt" @@ -34,7 +34,7 @@ value = 19.46663273582843 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" modeling = "JuMP" - objective = 19.46663332841832 + objective = 19.466633328418318 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" @@ -54,7 +54,7 @@ value = 19.46663273582843 [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" modeling = "OptimalControl" - objective = 19.46663316312533 + objective = 19.466633163125316 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" @@ -99,7 +99,7 @@ value = 19.46663273582843 [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControl" - objective = 19.466633278128064 + objective = 19.466633278184744 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" @@ -144,12 +144,12 @@ value = 19.46663273582843 [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControlScalarized" - objective = 19.466633278128064 + objective = 19.466633278184744 platform = "cron-OptimalControlScalarized-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControlScalarized" - objective = 19.466633278128064 + objective = 19.466633278184744 platform = "cron-OptimalControlScalarized-1.13-windows-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" @@ -159,5 +159,48 @@ value = 19.46663273582843 [[trapeze.solutions]] configurations = ["JuMP solver=ipopt", "JuMP solver=ipopt mu_init=0.001", "JuMP solver=ipopt mu_strategy=monotone", "JuMP solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt", "OptimalControl modeler=adnlp solver=ipopt mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=exa solver=madnlp", "OptimalControl modeler=exa solver=madnlp barrier=loqo", "OptimalControl modeler=exa solver=madnlp mu_init=0.001", "OptimalControl modeler=exa solver=madnlp mu_init=1.0e-5", "OptimalControlScalarized modeler=exa solver=madnlp"] - objective = 19.46663273582843 + objective = 19.46663292374462 solves = 29 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "0f6b1ec2b60b46fcc5141592fd08794531e1f519" + configuration = "modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001" + cpu = "AMD EPYC 7763 64-Core Processor" + iterations = 21 + julia = "1.13.3" + modeler = "adnlp" + modeling = "OptimalControl" + objective = 19.46663292374462 + os = "Linux" + platform = "cron-OptimalControl-robustness-1.13-ubuntu-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" + solver = "ipopt" + status = "first_order" + time = 0.130021 + violation = 4.440892098500626e-16 + + [trapeze.solutions.reference.options] + max_iter = 1000 + max_wall_time = 500.0 + mu_init = 0.001 + mu_strategy = "monotone" + print_level = 0 + sb = "yes" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" diff --git a/ext/MetaData/references/robot.toml b/ext/MetaData/references/robot.toml index b9159381..ebc9e599 100644 --- a/ext/MetaData/references/robot.toml +++ b/ext/MetaData/references/robot.toml @@ -6,10 +6,10 @@ agreement = true grid_size = 250 parameters = "(t0 = 0, L = 5, uρ_l = -1, uρ_u = 1, uθ_l = -1, uθ_u = 1, uϕ_l = -1, uϕ_u = 1, ρ_t0 = 4.5, θ_t0 = 0, ϕ_t0 = 0.7853981633974483, dρ_t0 = 0, dθ_t0 = 0, dϕ_t0 = 0, ρ_tf = 4.5, θ_tf = 2.0943951023931953, ϕ_tf = 0.7853981633974483, dρ_tf = 0, dθ_tf = 0, dϕ_tf = 0, ρ_l = 0, θ_l = -3.141592653589793, θ_u = π, ϕ_l = 0, ϕ_u = π, tf_l = 0.1)" -run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288933404 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288939786 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288946781 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288952545" +run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387108959 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387112175 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" source = "computed" spread = 1.9739063663666287e-7 -value = 9.141125184999305 +value = 9.141126989371825 [[trapeze.results]] configuration = "solver=ipopt" @@ -34,7 +34,7 @@ value = 9.141125184999305 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" modeling = "JuMP" - objective = 9.141126989371822 + objective = 9.141126989371823 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" @@ -159,5 +159,45 @@ value = 9.141125184999305 [[trapeze.solutions]] configurations = ["JuMP solver=ipopt", "JuMP solver=ipopt mu_init=0.001", "JuMP solver=ipopt mu_strategy=monotone", "JuMP solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt", "OptimalControl modeler=adnlp solver=ipopt mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=exa solver=madnlp", "OptimalControl modeler=exa solver=madnlp barrier=loqo", "OptimalControl modeler=exa solver=madnlp mu_init=0.001", "OptimalControl modeler=exa solver=madnlp mu_init=1.0e-5", "OptimalControlScalarized modeler=exa solver=madnlp"] - objective = 9.141125184999305 + objective = 9.141126989371825 solves = 29 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "636fa809ae3e6c4367343be85d25d63fe119b5bd" + configuration = "modeler=exa solver=madnlp" + cpu = "AMD EPYC 9V74 80-Core Processor" + iterations = 19 + julia = "1.13.3" + modeler = "exa" + modeling = "OptimalControl" + objective = 9.141126989371825 + os = "Linux" + platform = "cron-OptimalControl-1.13-ubuntu-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573" + solver = "madnlp" + status = "SOLVE_SUCCEEDED" + time = 0.0655938 + violation = 8.595554823465079e-16 + + [trapeze.solutions.reference.options] + max_iter = 1000 + max_wall_time = 500.0 + print_level = "ERROR" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" diff --git a/ext/MetaData/references/rocket.toml b/ext/MetaData/references/rocket.toml index f12bef2c..417a4684 100644 --- a/ext/MetaData/references/rocket.toml +++ b/ext/MetaData/references/rocket.toml @@ -6,10 +6,10 @@ agreement = true grid_size = 500 parameters = "(t0 = 0, h_t0 = 1, v_t0 = 0, m_t0 = 1, g0 = 1, Tc = 3.5, hc = 500, vc = 620, mc = 0.6, T_l = 0, tf_l = 0)" -run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288933404 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288939786 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288946781 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288952545" +run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387108959 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387112175 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" source = "computed" spread = 1.7106896882633451e-6 -value = -1.0128367166830146 +value = -1.0128349840336874 [[trapeze.results]] configuration = "solver=ipopt" @@ -44,7 +44,7 @@ value = -1.0128367166830146 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" modeling = "JuMP" - objective = -1.012836092453478 + objective = -1.0128360924534778 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" @@ -54,7 +54,7 @@ value = -1.0128367166830146 [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" modeling = "OptimalControl" - objective = -1.0128367166830134 + objective = -1.0128367166830141 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" @@ -159,5 +159,45 @@ value = -1.0128367166830146 [[trapeze.solutions]] configurations = ["JuMP solver=ipopt", "JuMP solver=ipopt mu_init=0.001", "JuMP solver=ipopt mu_strategy=monotone", "JuMP solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt", "OptimalControl modeler=adnlp solver=ipopt mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=exa solver=madnlp", "OptimalControl modeler=exa solver=madnlp barrier=loqo", "OptimalControl modeler=exa solver=madnlp mu_init=0.001", "OptimalControl modeler=exa solver=madnlp mu_init=1.0e-5", "OptimalControlScalarized modeler=exa solver=madnlp"] - objective = -1.0128367166830146 + objective = -1.0128349840336874 solves = 29 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "636fa809ae3e6c4367343be85d25d63fe119b5bd" + configuration = "modeler=exa solver=madnlp" + cpu = "AMD EPYC 7763 64-Core Processor" + iterations = 23 + julia = "1.13.3" + modeler = "exa" + modeling = "OptimalControl" + objective = -1.0128349840336874 + os = "NT" + platform = "cron-OptimalControl-1.13-windows-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573" + solver = "madnlp" + status = "SOLVE_SUCCEEDED" + time = 0.220189 + violation = 2.4907888794035993e-11 + + [trapeze.solutions.reference.options] + max_iter = 1000 + max_wall_time = 500.0 + print_level = "ERROR" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" diff --git a/ext/MetaData/references/space_shuttle.toml b/ext/MetaData/references/space_shuttle.toml index 15598138..69a95156 100644 --- a/ext/MetaData/references/space_shuttle.toml +++ b/ext/MetaData/references/space_shuttle.toml @@ -6,55 +6,55 @@ agreement = true grid_size = 500 parameters = "(t0 = 0, w = 203000.0, g₀ = 32.174, ρ₀ = 0.002378, hᵣ = 23800, Rₑ = 20902900, μ = 1.4076539e16, S = 2690, a₀ = -0.20704, a₁ = 0.029244, b₀ = 0.07854, b₁ = -0.0061592, b₂ = 0.000621408, tf_l = 1500.0, tf_u = 2500.0, h_t0 = 2.6, ϕ_t0 = 0.0, θ_t0 = 0.0, v_t0 = 2.56, γ_t0 = -0.017453292519943295, ψ_t0 = 1.5707963267948966, α_t0 = 0.0, α_s = 0.0, β_s = 0.0, h_tf = 0.8, v_tf = 0.25, γ_tf = -0.08726646259971647, h_l = 0, ϕ_l = -6.283185307179586, ϕ_u = 6.283185307179586, θ_l = -1.5533430342749532, θ_u = 1.5533430342749532, v_l = 0.0001, γ_l = -1.5533430342749532, γ_u = 1.5533430342749532, ψ_l = -6.283185307179586, ψ_u = 6.283185307179586, α_l = -1.5707963267948966, α_u = 1.5707963267948966, β_l = -1.5533430342749532, β_u = 0.017453292519943295)" -run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288933404 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288939786 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288946781 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288952545" +run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387108959 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387112175 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" source = "computed" spread = 6.232111392599022e-10 -value = -0.5958750134583887 +value = -0.5958750133508789 [[trapeze.results]] configuration = "solver=ipopt" modeling = "JuMP" - objective = -0.5958750133605147 + objective = -0.5958750133627942 platform = "cron-JuMP-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt" modeling = "JuMP" - objective = -0.5958750133605122 + objective = -0.5958750133627957 platform = "cron-JuMP-1.13-windows-latest" [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" modeling = "JuMP" - objective = -0.5958750133605153 + objective = -0.5958750133627942 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" modeling = "JuMP" - objective = -0.5958750133605122 + objective = -0.5958750133627957 platform = "cron-JuMP-robustness-1.13-windows-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" modeling = "JuMP" - objective = -0.5958750133130643 + objective = -0.5958750133150453 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" modeling = "JuMP" - objective = -0.5958750133130637 + objective = -0.5958750133150452 platform = "cron-JuMP-robustness-1.13-windows-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" modeling = "JuMP" - objective = -0.5958750133508761 + objective = -0.5958750133508767 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" modeling = "JuMP" - objective = -0.5958750133508751 + objective = -0.595875013350878 platform = "cron-JuMP-robustness-1.13-windows-latest" [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" modeling = "OptimalControl" - objective = -0.5958750133627926 + objective = -0.5958750133627936 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" @@ -99,7 +99,7 @@ value = -0.5958750134583887 [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControl" - objective = -0.5958750133150457 + objective = -0.595875013315046 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" @@ -144,12 +144,12 @@ value = -0.5958750134583887 [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControlScalarized" - objective = -0.5958750133150457 + objective = -0.595875013315046 platform = "cron-OptimalControlScalarized-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControlScalarized" - objective = -0.5958750133150457 + objective = -0.595875013315046 platform = "cron-OptimalControlScalarized-1.13-windows-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" @@ -159,5 +159,48 @@ value = -0.5958750134583887 [[trapeze.solutions]] configurations = ["JuMP solver=ipopt", "JuMP solver=ipopt mu_init=0.001", "JuMP solver=ipopt mu_strategy=monotone", "JuMP solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt", "OptimalControl modeler=adnlp solver=ipopt mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=exa solver=madnlp", "OptimalControl modeler=exa solver=madnlp barrier=loqo", "OptimalControl modeler=exa solver=madnlp mu_init=0.001", "OptimalControl modeler=exa solver=madnlp mu_init=1.0e-5", "OptimalControlScalarized modeler=exa solver=madnlp"] - objective = -0.5958750134583887 + objective = -0.5958750133508789 solves = 29 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "0f6b1ec2b60b46fcc5141592fd08794531e1f519" + configuration = "modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001" + cpu = "AMD EPYC 7763 64-Core Processor" + iterations = 106 + julia = "1.13.3" + modeler = "adnlp" + modeling = "OptimalControl" + objective = -0.5958750133508789 + os = "Linux" + platform = "cron-OptimalControl-robustness-1.13-ubuntu-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" + solver = "ipopt" + status = "first_order" + time = 5.34838 + violation = 3.1283448054253427e-11 + + [trapeze.solutions.reference.options] + max_iter = 1000 + max_wall_time = 500.0 + mu_init = 0.001 + mu_strategy = "monotone" + print_level = 0 + sb = "yes" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" diff --git a/ext/MetaData/references/steering.toml b/ext/MetaData/references/steering.toml index a1b063e4..fbc040e8 100644 --- a/ext/MetaData/references/steering.toml +++ b/ext/MetaData/references/steering.toml @@ -6,10 +6,10 @@ agreement = true grid_size = 500 parameters = "(t0 = 0, a = 100, u_min = -1.5707963267948966, u_max = 1.5707963267948966, tf_l = 0, x₁_t0 = 0, x₂_t0 = 0, x₃_t0 = 0, x₄_t0 = 0, x₂_tf = 5, x₃_tf = 45, x₄_tf = 0)" -run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288933404 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288939786 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288946781 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288952545" +run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387108959 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387112175 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" source = "computed" -spread = 2.3955468295548094e-10 -value = 0.554571860956095 +spread = 2.395548831501e-10 +value = 0.5545718610889453 [[trapeze.results]] configuration = "solver=ipopt" @@ -19,17 +19,17 @@ value = 0.554571860956095 [[trapeze.results]] configuration = "solver=ipopt" modeling = "JuMP" - objective = 0.5545718610889453 + objective = 0.5545718610889454 platform = "cron-JuMP-1.13-windows-latest" [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" modeling = "JuMP" - objective = 0.5545718610889453 + objective = 0.5545718610889452 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" modeling = "JuMP" - objective = 0.5545718610889453 + objective = 0.5545718610889454 platform = "cron-JuMP-robustness-1.13-windows-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" @@ -39,7 +39,7 @@ value = 0.554571860956095 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" modeling = "JuMP" - objective = 0.5545718610887032 + objective = 0.5545718610887033 platform = "cron-JuMP-robustness-1.13-windows-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" @@ -49,7 +49,7 @@ value = 0.554571860956095 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" modeling = "JuMP" - objective = 0.5545718609572946 + objective = 0.5545718609572947 platform = "cron-JuMP-robustness-1.13-windows-latest" [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" @@ -159,5 +159,47 @@ value = 0.554571860956095 [[trapeze.solutions]] configurations = ["JuMP solver=ipopt", "JuMP solver=ipopt mu_init=0.001", "JuMP solver=ipopt mu_strategy=monotone", "JuMP solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt", "OptimalControl modeler=adnlp solver=ipopt mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=exa solver=madnlp", "OptimalControl modeler=exa solver=madnlp barrier=loqo", "OptimalControl modeler=exa solver=madnlp mu_init=0.001", "OptimalControl modeler=exa solver=madnlp mu_init=1.0e-5", "OptimalControlScalarized modeler=exa solver=madnlp"] - objective = 0.554571860956095 + objective = 0.5545718610889453 solves = 29 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "636fa809ae3e6c4367343be85d25d63fe119b5bd" + configuration = "modeler=adnlp solver=ipopt" + cpu = "AMD EPYC 7763 64-Core Processor" + iterations = 8 + julia = "1.13.3" + modeler = "adnlp" + modeling = "OptimalControl" + objective = 0.5545718610889453 + os = "NT" + platform = "cron-OptimalControl-1.13-windows-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573" + solver = "ipopt" + status = "first_order" + time = 0.227696 + violation = 1.6216486486975157e-11 + + [trapeze.solutions.reference.options] + max_iter = 1000 + max_wall_time = 500.0 + mu_strategy = "adaptive" + print_level = 0 + sb = "yes" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0" diff --git a/ext/MetaData/references/vanderpol.toml b/ext/MetaData/references/vanderpol.toml index c0189114..3a8e4bf5 100644 --- a/ext/MetaData/references/vanderpol.toml +++ b/ext/MetaData/references/vanderpol.toml @@ -6,10 +6,10 @@ agreement = true grid_size = 500 parameters = "(t0 = 0, tf = 2, ω = 1, ε = 1, x₁_t0 = 1, x₂_t0 = 0)" -run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288933404 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288939786 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288946781 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42288952545" +run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387108959 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387112175 https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387115100" source = "computed" spread = 4.026341842688888e-15 -value = 1.0478115516287476 +value = 1.0478115516287507 [[trapeze.results]] configuration = "solver=ipopt" @@ -24,7 +24,7 @@ value = 1.0478115516287476 [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" modeling = "JuMP" - objective = 1.0478115516287516 + objective = 1.0478115516287514 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_init=0.001" @@ -34,7 +34,7 @@ value = 1.0478115516287476 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" modeling = "JuMP" - objective = 1.0478115516287516 + objective = 1.0478115516287514 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone" @@ -44,7 +44,7 @@ value = 1.0478115516287476 [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" modeling = "JuMP" - objective = 1.0478115516287516 + objective = 1.0478115516287514 platform = "cron-JuMP-robustness-1.13-ubuntu-latest" [[trapeze.results]] configuration = "solver=ipopt mu_strategy=monotone mu_init=0.001" @@ -54,7 +54,7 @@ value = 1.0478115516287476 [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" modeling = "OptimalControl" - objective = 1.0478115516287518 + objective = 1.0478115516287512 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=adnlp solver=ipopt" @@ -99,7 +99,7 @@ value = 1.0478115516287476 [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControl" - objective = 1.0478115516287503 + objective = 1.0478115516287476 platform = "cron-OptimalControl-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" @@ -144,12 +144,12 @@ value = 1.0478115516287476 [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControlScalarized" - objective = 1.0478115516287503 + objective = 1.0478115516287476 platform = "cron-OptimalControlScalarized-1.13-ubuntu-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" modeling = "OptimalControlScalarized" - objective = 1.0478115516287503 + objective = 1.0478115516287476 platform = "cron-OptimalControlScalarized-1.13-windows-latest" [[trapeze.results]] configuration = "modeler=exa solver=madnlp" @@ -159,5 +159,47 @@ value = 1.0478115516287476 [[trapeze.solutions]] configurations = ["JuMP solver=ipopt", "JuMP solver=ipopt mu_init=0.001", "JuMP solver=ipopt mu_strategy=monotone", "JuMP solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt", "OptimalControl modeler=adnlp solver=ipopt mu_init=0.001", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone", "OptimalControl modeler=adnlp solver=ipopt mu_strategy=monotone mu_init=0.001", "OptimalControl modeler=exa solver=madnlp", "OptimalControl modeler=exa solver=madnlp barrier=loqo", "OptimalControl modeler=exa solver=madnlp mu_init=0.001", "OptimalControl modeler=exa solver=madnlp mu_init=1.0e-5", "OptimalControlScalarized modeler=exa solver=madnlp"] - objective = 1.0478115516287476 + objective = 1.0478115516287507 solves = 29 + + [trapeze.solutions.reference] + arch = "x86_64" + commit = "636fa809ae3e6c4367343be85d25d63fe119b5bd" + configuration = "modeler=adnlp solver=ipopt" + cpu = "AMD EPYC 7763 64-Core Processor" + iterations = 3 + julia = "1.13.3" + modeler = "adnlp" + modeling = "OptimalControl" + objective = 1.0478115516287507 + os = "NT" + platform = "cron-OptimalControl-1.13-windows-latest" + run = "https://github.com/control-toolbox/OptimalControlProblems.jl/actions/runs/42387105573" + solver = "ipopt" + status = "first_order" + time = 0.0753526 + violation = 1.0363609970198695e-10 + + [trapeze.solutions.reference.options] + max_iter = 1000 + max_wall_time = 500.0 + mu_strategy = "adaptive" + print_level = 0 + sb = "yes" + tol = 1.0e-8 + + [trapeze.solutions.reference.versions] + ADNLPModels = "0.8.15" + CTBase = "0.30.13" + CTDirect = "1.1.8-beta" + CTModels = "0.19.8" + CTSolvers = "0.5.8" + ExaModels = "0.12.2" + Ipopt_jll = "300.1400.1902+0" + MUMPS_seq_jll = "500.900.100+0" + MadNLP = "0.10.3" + NLPModels = "0.21.12" + NLPModelsIpopt = "0.11.3" + OptimalControl = "2.2.1-beta" + OptimalControlProblems = "0.5.0" + Test = "1.11.0"