Repository navigation
Releases: keithjlee/AsapOptim.jl
Releases · keithjlee/AsapOptim.jl
Release list
v1.1.0
AsapOptim v1.1.0
v1.0.0
AsapOptim v1.0.0
This is a major release to a Version 1.0 of AsapOptim, consisting of a in-depth redesign of the package to match the new architecture of Asap v.1.+. In short, we have now have extreme flexibility in the choice of backend, and over 100x speed improvements for large, constrained optimization problems.
Highlights
- Like
TrussModelandModelbeing merged into a single data structure, optimization parameters are merged into a singleOptParamsstructure. - Type strictness is replaced in favour of parametricism, enabling the use of all popular AD backends (Zygote, Enzyme, Mooncake, ForwardDiff).
- The majority of hand-written differentiation rules using ChainRulesCore are now redundant, and the few remaining adjoint definitions are placed as package extensions in Asap, resulting in a significant lightweighting and robustness of this repository.
- Significant testing and comparison was performed to ensure correctness with known analytic gradients and matches to published work.
- ForwardDiff becomes the AD engine of choice for any problem with large constraints. Testing shows that a combination of reverse-mode for objectives and forward-mode for constraints yields the fastest iterations. a
CachedSolverdata structure enables efficient reuse of known values during both forward and reverse passes.
Breaking Changes
This is a clean break from v0.1.x, tracking Asap's own v1.0 break. The legacy implementation is preserved (unloaded) in legacy_v0/ for reference. Requires Asap ≥ 1.1; ForwardDiff is now a direct dependency.
| v0.1.x | v1.0 |
|---|---|
TrussOptParams / FrameOptParams (separate types, separate pipelines) |
one OptParams (the old names still work as aliases) |
TrussVariable element type |
AbstractVariable |
SpatialVariable(node, vector, val, lb, ub) directional "rail" |
axis form only: SpatialVariable(node, val, lb, ub, :X/:Y/:Z) |
res.U with 3 DOFs/node (U[2:3:end] vertical) |
full 6 DOFs/node — y-displacements U[2:6:end], z U[3:6:end] |
res.X, res.Y, res.Z vectors |
res.X is a 3 × n matrix |
res.K, res.R (element stiffness/transformation matrices) |
gone — pure results only (U, X, A, L, sections, EA) |
params.P load vector |
params.F (or just compliance(res, params)) |
GeometricProperties with X/Y/Z/evecs |
X (3 × n), L, A |
NetworkResults |
NetworkOptResults (Asap owns the NetworkResults name) |
| hand-written rrules throughout | none — Asap's rule extension covers everything |
See example files, and docs/releases/v1.0.0.md for more details.
v0.1.3
v0.1.2
v0.1.1
v0.1.0
AsapOptim v0.1.0
Merged pull requests:
- Update README.md (#1) (@keithjlee)
- Create LICENSE (#2) (@keithjlee)
AsapOptim: General structural optimization
Initial release of AsapOptim.