Add mizer 3.3 announcement blog post - #6
Conversation
Announces the 3.3 release around four features that can be demonstrated, each with a figure generated from the current mizer source tree: - Checking whether a model is at its steady state: isSteady(), the biomass drift line in summary(), the new message from the match...() functions, and plot(getSteadyResidual(params)). - Steady states that cannot be reached by projecting: steadyNewton() and getStability() on the North Sea model past its Hopf bifurcation, and the limit cycle that projectToSteady() then detects. - Scanning a model with scanModel(), shown through plotYieldVsF() with F_MSY marked. - Array types and the length axis, which now carries the resource and the total line. The last section covers the twelve guides, the skills they are generated from, and the fact that mizerAgents now installs those skills from the installed mizer, so an agent's guidance tracks the version the project runs. make-figures.R in the post directory regenerates all four figures. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BwrX4RLY5Fc7d6cu3fnJAQ
getStability()'s continuous eigenvalues are not independent of `dt`, as its documentation claims, and the default `dt = 1` is far outside the range where the discrete-to-continuous mapping has converged (sizespectrum/mizer#556). The post quoted the default-`dt` values, which overstate the growth rate by a factor of about 17 and put the predicted period at 7.4 years. Recomputed at `dt = 0.1`, where both branches of the analysis have converged: max_real_part 0.072, leading eigenvalue 0.0721+1.2165i, predicted period 5.16 years. That also fixes the explanation. The post attributed the gap between the predicted 7.4 years and the observed 5.4-year limit cycle to nonlinearity, following the dynamic_stability vignette. Most of that gap was the discretisation error: the converged prediction of 5.2 years is close to the cycle the model actually settles on, so the linear analysis does considerably better than the post gave it credit for. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BwrX4RLY5Fc7d6cu3fnJAQ
|
Pushed a correction to the stability section (923e3c6). Investigating the The post had been quoting the default-
That also changes the story for the better. The post explained the gap between the predicted 7.4 years and the observed 5.4-year limit cycle as nonlinearity reshaping the cycle, following The code block passes |
Draft announcement for the mizer 3.3 release, built around four features that can be demonstrated rather than just described. Every number, message and figure in the post was produced by running the code against the current mizer source tree — nothing is invented output.
Structure
isSteady(), the new biomass drift line insummary()(0.014/year → 4.6/year aftermatchGrowth()), the message thematch…()functions now emit, andplot(getSteadyResidual(params)).steadyNewton()finds the steady state,getStability()returns a complex leading eigenvalue1.2359+0.847932ipredicting a 7.4-year oscillation, andprojectToSteady()settles onto a 5.4-year limit cycle. The gap between the linear and nonlinear period is explained rather than glossed over.plotYieldVsF(NS_params, species = "Cod")withMizerScansummary.The final section covers the twelve guides and the skills they are generated from, and makes the point that matters for mizerAgents:
setup_mizer_agent()now reads skills from the installed mizer, so upgrading mizer upgrades an agent's guidance with no mizerAgents release needed. The upgrading skill gets particular attention, since vignettes are not installed and that is exactly what an agent needs when a script breaks after an upgrade.make-figures.Rin the post directory regenerates all four figures.Notes for review
install.packages("mizer").DESCRIPTIONin the mizer repo is still at a development version, so both want settling before this goes live.filters/inline-code-links.luaresolves inline code against the installed mizer, which is still 3.2.x here, so the new names (scanModel(),isSteady(),getSteadyResidual(),plotYieldVsF()) are currently left unlinked. They will resolve once 3.3 is installed and the site is re-rendered.quarto renderon this machine also deleteddocs/CNAMEand the*_files/figure-html/images of several older posts, whose regenerated HTML still references them — the same breakage that commit 7b83761 had to undo. All of that collateral was restored; this PR touches only the new post plus the site-levelindex.html,index.xml,listings.json,search.jsonandsitemap.xml, matching the file set of the 3.2 announcement PR (Add mizer 3.2 announcement blog post #5). Worth knowing that the render is not currently reproducible on a clean checkout.get-prefixed accessors superseded) is only a bullet in "Also in 3.3", since it does not demo well and the upgrading article covers it properly. Happy to give it more room.🤖 Generated with Claude Code
https://claude.ai/code/session_01BwrX4RLY5Fc7d6cu3fnJAQ