Skip to content

Releases: harmoniqs/DirectTrajOpt.jl

v0.6.0

19 Dec 10:07
6aeceee

Choose a tag to compare

DirectTrajOpt v0.6.0

Diff since v0.5.0

This release introduces a massive refactor of the internal API, standardizing how constraints, integrators, and objectives interact via a new Common Interface. It also brings compatibility with NamedTrajectories v0.7, shifting from index-based logic to symbolic component-based logic.

Breaking Changes

  • Common Interface Adoption: All Constraints, Integrators, and Objectives now implement the CommonInterface. Direct calls to internal evaluation functions must be updated to use the unified evaluate!, jacobian!, and hessian_of_lagrangian API.
  • Variable-Based Constraints: Constraints now use variable names (symbols) instead of raw integer indices for improved readability and robustness.
  • Problem Structure: DirectTrajOptProblem now stores integrators directly; the standalone dynamics.jl and its associated structures have been removed.
  • Trajectory Handling: Updated to NamedTrajectories v0.7. Functions that previously took raw vectors/indices now expect NamedTrajectory objects or symbolic references.

Added

  • CommonInterface Module: A unified dispatch system for evaluate!, jacobian_structure, jacobian!, hessian_structure, and hessian_of_lagrangian.
  • New Constraint Types:
  • Linear/Equality: AllEqualConstraint, TimeStepsAllEqualConstraint, EqualityConstraint, GlobalEqualityConstraint.
  • Boundary/Symmetry: BoundsConstraint, GlobalBoundsConstraint, SymmetricConstraint, SymmetricControlConstraint.
  • Aggregates: TotalConstraint, DurationConstraint (helper for time-summation).
  • Nonlinear Constraints: Added NonlinearKnotPointConstraint and NonlinearGlobalKnotPointConstraint for complex, non-linear trajectory requirements on knot-points.
  • Testing Utilities: Added test_constraint for validating nonlinear constraints against finite-difference approximations with detailed diff reporting.

Changes

  • Performance Optimization: Constraint and objective functions now compute component indices once at construction rather than at evaluation time.
  • Integrator Refactor: BilinearIntegrator, DerivativeIntegrator, and others now utilize NamedTrajectory for state dimension retrieval and symbolic component mapping.
  • Refined QuadraticRegularizer and MinimumTimeObjective for more efficient gradient and Hessian computations.
  • DirectTrajOptProblem now utilizes AbstractObjective for better extensibility.
  • IpoptEvaluator was updated to align with new dynamics creation and objective evaluation at runtime making it a bit more modular

Removed

  • src/dynamics.jl: Obsolete following the integration of dynamics directly into the problem and integrator structures.
  • Deprecated index-based constructors for constraints and objectives.
  • Certain objectives pre-allocated hessian matrices in various objective types that are being tested for internal use

Merged pull requests:

v0.5.0

27 Oct 04:45

Choose a tag to compare

DirectTrajOpt v0.5.0

Diff since v0.4.4

DirectTrajOpt.jl v0.5.0

Major documentation improvements and variable naming refactor for consistency.

Breaking Changes:

  • Trajectory time step variables renamed from T to N throughout (now consistent with standard notation for number of knot points)
  • Updated NamedTrajectories.jl dependency to v0.6

New Features:

  • Complete example added: time-optimal bilinear control with multiple inputs and free time steps
  • Visualization support via CairoMakie.jl integration in documentation
  • Enhanced quickstart guide with plotting examples

Documentation:

  • Comprehensive refactoring of all mathematical formulations to use N (knot points) convention
  • New detailed tutorials: linear system control, bilinear control, minimum time optimization
  • Enhanced concept guides for trajectories, integrators, objectives, and constraints

Improvements:

  • Julia 1.12 support
  • Refactored TimeDependentBilinearIntegrator to use OrdinaryDiffEqTsit5
  • Better alignment with mathematical optimization conventions

v0.4.4

25 Oct 05:33
753c6bb

Choose a tag to compare

DirectTrajOpt v0.4.4

Diff since v0.4.3

Added

  • support and CI for Julia 1.12
  • support for running nightly 'pre' for early testing

Merged pull requests:

v0.4.3

24 Oct 18:44
910d9d0

Choose a tag to compare

DirectTrajOpt v0.4.3

Diff since v0.4.2

Changes

  • New feature: DirectTrajOpt.Callbacks (reexported from DirectTrajOpt.IpoptSolverExt) implements i) an interface for generating and forwarding optimizer state to a callback, once per iteration of an Ipopt NLP, and ii) a handful of useful default factory routines for generating callbacks compatible with the foregoing interface.
    • Note: Previous IpoptSolverExt implementations decoupled optimizer variables and NamedTrajectory state, with the consequence that early termination of solves resulted in loss of solver progress. Among the default factory routines implemented in Callbacks is a routine enforcing updates of NamedTrajectory state once per iteration, ameliorating this issue.

Merged pull requests:

  • Adding Ipopt callbacks to DTO (previously implemented in QC) (#30) (@gennadiryan)

v0.4.2

17 Oct 20:29

Choose a tag to compare

DirectTrajOpt v0.4.2

Diff since v0.4.1

Merged pull requests:

v0.4.1

30 Aug 22:54
a0252b8

Choose a tag to compare

DirectTrajOpt v0.4.1

Diff since v0.4.0

Merged pull requests:

v0.4.0

04 Jul 20:16
47cfef0

Choose a tag to compare

DirectTrajOpt v0.4.0

Diff since v0.3.0

  • "refine" updates to ipopt options
  • objectives print generic struct string

Breaking changes:

  • integrators receive the knot point index as an arg
  • NT update to 0.5

Merged pull requests:

v0.3.0

19 Jun 15:47
9b49c18

Choose a tag to compare

DirectTrajOpt v0.3.0

Diff since v0.2.7

Breaking changes

  • updates to parametric NT

New features

  • global nonlinear constraints
  • global objectives
  • adds global_data option to knot point nonlinear constraints and objectives
  • adds duration and symmetry constraint

Merged pull requests:

v0.2.7

27 May 12:38

Choose a tag to compare

DirectTrajOpt v0.2.7

Diff since v0.2.6

v0.2.6

21 May 15:50

Choose a tag to compare

DirectTrajOpt v0.2.6

Diff since v0.2.5