Skip to content

v0.2.0

Latest

Choose a tag to compare

@github-actions github-actions released this 06 Jul 01:58
5077574

ContinuousDPs v0.2.0

Diff since v0.1.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 as n x M matrices (#105).
  • PkgBenchmark-compatible benchmark suite in benchmark/ (#92).

Bug fixes

  • Diverged iterations are no longer reported as converged (#96).

Breaking changes

  • The x_lb and x_ub fields of ContinuousDP are replaced by a single actions field holding an ActionSpace; code accessing cdp.x_lb/cdp.x_ub should use cdp.actions.x_lb/cdp.actions.x_ub. All constructor signatures are unchanged.

Merged pull requests:

  • DOC: Update README.md and docs/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:

  • Allow discrete actions (#5)
  • set_eval_nodes! (#10)
  • CI and registration (#28)
  • Optimize _s_wise_max! (#73)
  • Reduce allocations in evaluate! and set_eval_nodes! (#74)
  • Reduce allocations in evaluate_policy! (#75)
  • Allow multidimensional actions (#88)