ContinuousDPs v0.2.0
New features
- Major performance improvements to
solve(PFI/VFI): non-allocating point evaluation of interpolants, sparse policy-evaluation assembly, and in-place evaluation buffers (#93, #95, #100, #101) — roughly an order of magnitude faster with orders-of-magnitude fewer allocations. - New default inner solver for the maximization over actions, based on the first-order condition with automatic Brent fallback; select with
solve(...; inner_solver=:foc)(default) or:brent(#99, #105). - Discrete action spaces:
DiscreteActions(vals), with optimal actions exposed as values (res.X) and indices (res.X_ind) (#104). - Multi-dimensional continuous action spaces:
ContinuousActions{M}(x_lb, x_ub), with policies stored asn x Mmatrices (#105). - PkgBenchmark-compatible benchmark suite in
benchmark/(#92).
Bug fixes
- Diverged iterations are no longer reported as converged (#96).
Breaking changes
- The
x_lbandx_ubfields ofContinuousDPare replaced by a singleactionsfield holding anActionSpace; code accessingcdp.x_lb/cdp.x_ubshould usecdp.actions.x_lb/cdp.actions.x_ub. All constructor signatures are unchanged.
Merged pull requests:
- DOC: Update
README.mdanddocs/src/index.md(#86) (@oyamad) - Bump julia-actions/setup-julia from 2 to 3 (#87) (@dependabot[bot])
- Bump codecov/codecov-action from 6 to 7 (#90) (@dependabot[bot])
- Bump actions/checkout from 6 to 7 (#91) (@dependabot[bot])
- ENH: Add benchmark suite (#92) (@oyamad)
- PERF: Add non-allocating point-evaluation kernel (#93) (@oyamad)
- ENH: Add CDPWorkspace consolidating solver buffers (#95) (@oyamad)
- BUG: Make _max_abs_diff NaN-safe to prevent false convergence (#96) (@oyamad)
- TST: Keep next states within the interpolation domain in test and benchmark models (#97) (@oyamad)
- ENH: Add derivative point evaluation via coefficient differentiation (#98) (@oyamad)
- PERF: Solve the inner maximization via the first-order condition (#99) (@oyamad)
- PERF: Assemble the policy-evaluation system with point kernels, sparse when possible (#100) (@oyamad)
- PERF: Reuse result buffers and kernel-based residuals in evaluate! (#101) (@oyamad)
- MAINT: Update agent instructions and add AGENTS.md/CLAUDE.md pointers (#103) (@oyamad)
- ENH: Add action-space types and discrete actions (#104) (@oyamad)
- ENH: Add multi-dimensional continuous actions (#105) (@oyamad)
- DOC: Document action spaces in README, docs index, and example notebook (#106) (@oyamad)
Closed issues: