Skip to content

Ipopt install path + smoke test for LivePulsePlotCallback (0.2a)#245

Open
Rchari1 wants to merge 1 commit into
mainfrom
rchari/0.2a-ipopt-livepulse
Open

Ipopt install path + smoke test for LivePulsePlotCallback (0.2a)#245
Rchari1 wants to merge 1 commit into
mainfrom
rchari/0.2a-ipopt-livepulse

Conversation

@Rchari1

@Rchari1 Rchari1 commented Jun 29, 2026

Copy link
Copy Markdown
Member

Companion to DirectTrajOpt.jl#114 for harmoniqs/amicode#19 (Phase 0′, task 0.2a).

LivePulsePlotCallback already subtypes DirectTrajOpt.AbstractIntermediateCallback, so once DTO's Ipopt backend accepts an intermediate_callback (DTO#114), the same callback object installs on an Ipopt solve exactly as it does on MadNLP. This PR documents + tests that path.

Change

  • src/visualizations/live_callbacks.jl — docstring now shows the IpoptOptions(intermediate_callback = cb) install path alongside the existing MadNLP one, and notes Ipopt needs no RelaxBound-style treatment (full primal always available).
  • ext/PiccoloMakieExt.jl — new end-to-end @testitem that attaches LivePulsePlotCallback to an Ipopt SmoothPulseProblem solve and asserts per-iter iter_<N>.png frames are emitted through the callback.

No mechanism code changes — LivePulsePlotCallback already reconstructs the trajectory from the primal each iter; this PR proves the Ipopt install path works and pins it with a test.

Validation (gpu-dev-v2)

Ran the new smoke test against this branch with DTO#114 dev-coupled: Piccolo tests passed — the Ipopt solve emits per-iter PNGs through LivePulsePlotCallback end-to-end.

Dependency

Needs DirectTrajOpt with the Ipopt intermediate_callback field (DTO#114). The pin DirectTrajOpt = "0.9.5" already admits the forthcoming patch release (v0.9.7); CI here goes green once that release is registered.

🤖 Generated with Claude Code

…PlotCallback

Companion to DirectTrajOpt.jl 0.2a (the Ipopt `intermediate_callback` field).
`LivePulsePlotCallback` already subtypes `AbstractIntermediateCallback`, so once
DTO's Ipopt backend accepts an `intermediate_callback`, the SAME callback object
installs on an Ipopt solve exactly as it does on MadNLP.

- live_callbacks.jl docstring: add the `IpoptOptions(intermediate_callback=cb)`
  install path alongside the existing MadNLP one; note Ipopt needs no
  RelaxBound-style treatment (full primal always available).
- PiccoloMakieExt: add an end-to-end @testitem that attaches LivePulsePlotCallback
  to an Ipopt SmoothPulseProblem solve and asserts per-iter iter_<N>.png frames
  are emitted through the callback.

Requires DirectTrajOpt with the Ipopt intermediate_callback field (the pin
`DirectTrajOpt = "0.9.5"` admits the forthcoming patch release).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant