Public API

This page lists exported symbols of CTModelsJSON, CTModelsJLD, CTModels.Serialization.


From CTModels.Serialization

CTModels.Serialization

CTModels.SerializationModule
Serialization

Serialization module for CTModels.

This module provides functions for importing and exporting optimal control solutions to various formats (JLD2, JSON).

Public API

The following functions are exported and accessible as CTModels.function_name():

  • export_ocp_solution: Export a solution to file
  • import_ocp_solution: Import a solution from file

Supported Formats

  • JLD2: Binary format (requires JLD2.jl package)
  • JSON: Text format (requires JSON3.jl package)

Private API

The following are internal utilities (accessible via Serialization.function_name):

  • __format: Get default format
  • __filename_export_import: Get default filename

See also: CTModels, export_ocp_solution, import_ocp_solution

AbstractTag

JLD2Tag

JSON3Tag

export_ocp_solution

CTModels.Serialization.export_ocp_solutionFunction
export_ocp_solution(sol; format=:JLD, filename="solution")

Export an optimal control solution to a file.

Arguments

  • sol::AbstractSolution: The solution to export.

Keyword Arguments

  • format::Symbol=:JLD: Export format, either :JLD or :JSON.
  • filename::String="solution": Base filename (extension added automatically).

Notes

Requires loading the appropriate package (JLD2 or JSON3) before use.

See also: import_ocp_solution

export_ocp_solution(
    ::CTModels.Serialization.JSON3Tag,
    sol::CTModels.OCP.Solution;
    filename
)

Export an optimal control solution to a .json file using the JSON3 format.

This function serializes a CTModels.Solution into a structured JSON dictionary, including all primal and dual information, which can be read by external tools.

Arguments

  • ::CTModels.JSON3Tag: A tag used to dispatch the export method for JSON3.
  • sol::CTModels.Solution: The solution to be saved.

Keyword Arguments

  • filename::String = "solution": Base filename. The .json extension is automatically appended.

Notes

The exported JSON includes the time grid, state, control, costate, objective, solver info, and all constraint duals (if available).

Example

julia> using JSON3
julia> export_ocp_solution(JSON3Tag(), sol; filename="mysolution")
# → creates "mysolution.json"
export_ocp_solution(
    ::CTModels.Serialization.JLD2Tag,
    sol::CTModels.OCP.Solution;
    filename
)

Export an optimal control solution to a .jld2 file using the JLD2 format.

This function serializes and saves a CTModels.Solution object to disk, allowing it to be reloaded later. The solution is discretized to avoid serialization warnings for function objects.

Arguments

  • ::CTModels.JLD2Tag: A tag used to dispatch the export method for JLD2.
  • sol::CTModels.Solution: The optimal control solution to be saved.

Keyword Arguments

  • filename::String = "solution": Base name of the file. The .jld2 extension is automatically appended.

Example

julia> using JLD2
julia> export_ocp_solution(JLD2Tag(), sol; filename="mysolution")
# → creates "mysolution.jld2"

Notes

  • Functions are discretized on the time grid to avoid JLD2 serialization warnings
  • The solution can be perfectly reconstructed via import_ocp_solution
  • Uses the same discretization logic as JSON export for consistency

import_ocp_solution

CTModels.Serialization.import_ocp_solutionFunction
import_ocp_solution(ocp; format=:JLD, filename="solution")

Import an optimal control solution from a file.

Arguments

  • ocp::AbstractModel: The model associated with the solution.

Keyword Arguments

  • format::Symbol=:JLD: Import format, either :JLD or :JSON.
  • filename::String="solution": Base filename (extension added automatically).

Returns

  • Solution: The imported solution.

Notes

Requires loading the appropriate package (JLD2 or JSON3) before use.

See also: export_ocp_solution

import_ocp_solution(
    ::CTModels.Serialization.JSON3Tag,
    ocp::CTModels.OCP.Model;
    filename
)

Import an optimal control solution from a .json file exported with export_ocp_solution.

This function reads the JSON contents and reconstructs a CTModels.Solution object, including the discretized primal and dual trajectories.

Arguments

  • ::CTModels.JSON3Tag: A tag used to dispatch the import method for JSON3.
  • ocp::CTModels.Model: The model associated with the optimal control problem. Used to rebuild the full solution.

Keyword Arguments

  • filename::String = "solution": Base filename. The .json extension is automatically appended.

Returns

  • CTModels.Solution: A reconstructed solution instance.

Notes

Handles both vector and matrix encodings of signals. If dual fields are missing or null, the corresponding attributes are set to nothing.

Example

julia> using JSON3
julia> sol = import_ocp_solution(JSON3Tag(), model; filename="mysolution")
import_ocp_solution(
    ::CTModels.Serialization.JLD2Tag,
    ocp::CTModels.OCP.Model;
    filename
)

Import an optimal control solution from a .jld2 file.

This function loads a previously saved CTModels.Solution from disk and reconstructs it using build_solution from the discretized data.

Arguments

  • ::CTModels.JLD2Tag: A tag used to dispatch the import method for JLD2.
  • ocp::CTModels.Model: The associated optimal control problem model.

Keyword Arguments

  • filename::String = "solution": Base name of the file. The .jld2 extension is automatically appended.

Returns

  • CTModels.Solution: The reconstructed solution object.

Example

julia> using JLD2
julia> sol = import_ocp_solution(JLD2Tag(), model; filename="mysolution")

Notes

  • The solution is reconstructed from discretized data via build_solution
  • This ensures perfect round-trip consistency with the export
  • The OCP model from the file is used if the provided one is not compatible