Releases: QuantEcon/ContinuousDPs.jl
Releases · QuantEcon/ContinuousDPs.jl
Release list
v0.3.0
ContinuousDPs v0.3.0
New features
- Solver types
CollocationSolver(basis; algorithm=PFI/VFI, inner_solver, tol, max_iter)andLQASolver(basis; point): the solution methodology is specified separately from the model and passed tosolveassolve(cdp, solver)(#109)
Breaking changes
ContinuousDPholds the model primitives only: the basis-endowed constructors, thebasiskeyword of the copy constructor, andsolve(cdp, PFI/VFI/LQA; ...)are removed; the removed forms raise errors stating the replacement (construct withoutbasisand passCollocationSolver(basis)orLQASolver(basis; point)tosolve) (#109, #114)ndims(::ContinuousDP)is removed; the state dimension is a property of the solution: usendims(res)(#114)
Merged pull requests:
- ENH: Add CollocationSolver/LQASolver; make ContinuousDP primitives-only (#109) (@oyamad)
- DOC: Present ContinuousDP keywords in the conceptual order (#112) (@oyamad)
- ENH, FIX: Add ValueFunction/PolicyFunction; clamp the simulated policy into the action bounds (#113) (@oyamad)
- MAINT: Remove the v0.2 API; thread interp explicitly through the internals (#114) (@oyamad)
- MAINT: Split cdp.jl: extract inner_solvers.jl and policy_system.jl (#115) (@oyamad)
- ENH, DOC: Validate the weights length at construction; document g-totality for discrete actions (#116) (@oyamad)
Closed issues:
Interp(#8)
v0.2.1
ContinuousDPs v0.2.1
Merged pull requests:
- CompatHelper: bump compat for QuantEcon to 0.18, (keep existing compat) (#108) (@github-actions[bot])
v0.2.0
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:
v0.1.0
ContinuousDPs v0.1.0
Merged pull requests:
- First version (#1) (@oyamad)
- Fix types (#9) (@oyamad)
- Add test (#12) (@oyamad)
- Change type parameter (#13) (@oyamad)
- Change set_eval_nodes! to accept s_nodes_coord (#14) (@oyamad)
- Extend
simulateto multidimensional states (#15) (@oyamad) - ENH: performance boost by vectorizing call to funeval (#18) (@sglyon)
- Update for Julia 1.0 (#20) (@oyamad)
- add docs for Methods and Solve methods (#21) (@tokuma09)
- COMPAT:
warn->@warn(#22) (@oyamad) - FIX: Branch for max_iter <= 0 (#23) (@oyamad)
- Update for julia 1.4: add {Project,Manifest}.toml, rm require (#27) (@greimel)
- Setup CI (#29) (@oyamad)
- Update Project.toml (#32) (@oyamad)
- [FEAT] Initial guess for the value function (#33) (@QBatista)
- Setup Github Actions for testing (#35) (@QBatista)
- [FEAT] Add LQ approximation functionality (#36) (@QBatista)
- Separate nightly as ci-nightly.yml (#37) (@oyamad)
- FEAT: Add
LQAsolution method (#38) (@QBatista) - CompatHelper: add new compat entry for "Optim" at version "1" (#39) (@github-actions[bot])
- CompatHelper: add new compat entry for "BasisMatrices" at version "0.7" (#40) (@github-actions[bot])
- CompatHelper: add new compat entry for "QuantEcon" at version "0.16" (#41) (@github-actions[bot])
- CompatHelper: add new compat entry for "FiniteDiff" at version "2" (#42) (@github-actions[bot])
- Update CompatHelper.yml (#43) (@oyamad)
- CI: Update
actions/cache(#44) (@oyamad) - Setup Documenter.jl with GitHub Actions for automated documentation (#45) (@Copilot)
- Add comprehensive GitHub Copilot instructions for ContinuousDPs.jl (#47) (@Copilot)
- Fix documentation badge URL to point to development documentation (#49) (@Copilot)
- Update GitHub Action workflows to latest versions and fix codecov authentication (#51) (@Copilot)
- MAINT: Migrate default branch references from
mastertomain(#53) (@Copilot) - CompatHelper: bump compat for QuantEcon to 0.17, (keep existing compat) (#54) (@github-actions[bot])
- Bump actions/cache from 4 to 5 (#55) (@dependabot[bot])
- Bump julia-actions/cache from 1 to 2 (#56) (@dependabot[bot])
- Bump actions/checkout from 4 to 6 (#57) (@dependabot[bot])
- Remove arch from CI workflow matrices (#59) (@Copilot)
- CI: Fix key name for Codecov action in CI workflow (#60) (@oyamad)
- CompatHelper: bump compat for Optim to 2, (keep existing compat) (#61) (@github-actions[bot])
- TEST: Add Santos (1999) Section 7.3 stochastic growth benchmark tests (#62) (@mnshkw)
- TEST: Fix existing tests (#64) (@mnshkw)
- Bump julia-actions/cache from 2 to 3 (#65) (@dependabot[bot])
- FIX: Re-design type parameterization (#66) (@oyamad)
- TEST: Improve test coverage (#67) (@oyamad)
- RFC: Reduce intermediate memory allocation (#68) (@oyamad)
- DOC: Revise docstrings in cdp.jl and lq_approx.jl (#69) (@oyamad)
- MAINT: Add
solve,VFI,PFIto export (#70) (@oyamad) - MAINT: Add
simulate!and removeevaluate_policy!in export (#71) (@oyamad) - MAINT: Remove unused imports from QuantEcon (#72) (@oyamad)
- DOC: Revise
api.md(#76) (@oyamad) - MAINT: Update
.github/copilot-instructions.md(#77) (@oyamad) - CI: Update
ci.ymlandci-nightly.yml(#78) (@oyamad) - RFC: Use
maximizein place ofoptimize(#79) (@oyamad) - Revise cdp_ex_optgrowth_jl (#80) (@oyamad)
- DOC: Revise README and sync documentation home with README (#81) (@mnshkw)
- Bump codecov/codecov-action from 5 to 6 (#82) (@dependabot[bot])
- CI: Create TagBot.yml (#83) (@oyamad)
- DOC: Revise README (#84) (@oyamad)
Closed issues:
- Add tests (#2)
- Add documentation (#3)
- Extend
simulateto multidimensional states (#4) - Add option to supply initial value function (#11)
InterpwithRange(#19)- Setup Documenter (#30)
- Setup GitHub Actions for testing (#34)
- ✨ Set up Copilot instructions (#46)
- Add doc badge to README.md (#48)
- Update ci.yml and ci-nightly.yml workflows (#50)
- MAINT: Migrate default branch references from
mastertomain(#52) - CI: Remove
archfrom CI matrices (#58)