Repository navigation
Releases
v0.4.0
Breaking changes
-
plot_evolutionno longer acceptsnum_initial_guesses,solver_tol,
equilibrium_tol,validity_tolorstability_toldirectly. These were pure
pass-throughs tofind_equilibriaand are now bundled into a single
equilibria_kwargsNamedTuple:# before plot_evolution(payoffs, x0_list, tspan; solver_tol = 1e-12, equilibrium_tol = 1e-3) # after plot_evolution(payoffs, x0_list, tspan; equilibria_kwargs = (solver_tol = 1e-12, equilibrium_tol = 1e-3))
-
contour_levelsremoved fromplot_evolution. It was documented but never read
anywhere in the package. Passing it now raises aMethodErrorinstead of being
silently ignored. -
markerstrokewidthdefault changed from2to1.0, giving thinner equilibrium
and neutral-edge markers. Passmarkerstrokewidth = 2to restore the old appearance. -
Dependency change:
DifferentialEquationsreplaced byOrdinaryDiffEq+
SciMLBase. The package used onlyODEProblem,solve,DiscreteCallbackand
terminate!, so the meta-package was dragging in the stochastic, DAE, jump-process
and boundary-value solver stacks. Drops 43 transitive dependencies. -
Minimum Julia version raised from 1.6 to 1.10, matching what current
OrdinaryDiffEq and SciMLBase require.
Not breaking: find_equilibria and generate_simplex_grid both retain working
positional forms.
Added
- Basins of attraction.
plot_evolution(...; plot_basins = true)classifies every
point of the simplex by which stable equilibrium it flows to, optionally shades the
basins, and draws the separatrices between them. inverse_ternary_coordsis now exported, alongsideternary_coords.- Numeric arguments accept any real type convertible to a float, so
markersize = 10,tspan = (0, 100)andsteady_state_tol = 1//1000000all work.
Fixed
classify_basinnow normalises its initial condition, checks the solver return code
before using the trajectory endpoint, and no longer swallows genuine errors in a bare
catch.- Neutral edge indices were documented backwards in
identify_neutral_edgesand
plot_simplex. Correct mapping is1= {1,2},2= {1,3},3= {2,3}. - Several docstring defaults corrected to match the real signatures.
v0.3.1
Changelog
Re-releasing with updated dependencies and compatibilty requirements that were not updated in the previous breaking release. Existing changes from 0.3.0:
Breaking Changes
-
Renamed Keyword Arguments in
plot_evolutioncontourf→contourcbar→colorbar
These renames break any code that still usescontourf = ...orcbar = .... The new parameter names must be used.
-
Corner Labeling and Edge Index Changes
- In
plot_simplex, the bottom edge now goes from “Strategy 2” on the left to “Strategy 1” on the right, reversing the typical approach some users may have assumed. Code that specifically relied on corner labeling or coordinate mappings may need updating.
- In
-
Equilibria Plot Filtering
- The updated logic in
plot_evolutionfor plotting equilibria on “neutral edges” can skip plotting some equilibria that were previously shown (e.g., unstable equilibria on neutral edges). Existing scripts relying on the older behavior may see fewer plotted points if those equilibria fall under the new filtering rule.
- The updated logic in
Other Enhancements and Additions
-
New Imports & Dependencies
- Added
using LaTeXStringsto support LaTeX-based text rendering in plots.
- Added
-
New Utility Functions
get_vertices()
Returns a list of the simplex vertices (pure strategies):[ [1,0,0], [0,1,0], [0,0,1] ].arrow0!
A custom function for drawing arrows on plots (replaces the old manualquiver!approach).
-
Enhancements to
plot_simplex- New argument
neutral_edges::Vector{Int}lets you specify which edges are highlighted as “neutral.” - Optional
plot_neutral_dots::Booladds dotted markers along any declared neutral edges. - The corner labeling now matches the updated coordinate mapping, with “Strategy 2” at the bottom left, “Strategy 1” at the bottom right, and “Strategy 3” at the top.
- New argument
-
Neutral Edges Detection
identify_neutral_edges(params::ReplicatorParams)systematically checks payoff differences along each boundary edge to determine if it's neutral.- Used internally by
plot_evolutionto highlight edges in a “dotted” style whenplot_neutral_dotsis enabled.
-
plot_evolutionOverhaul- Renamed certain keyword arguments (as per Breaking Changes).
- Plot customization:
markersize::Int = 9andmarkerstrokewidth::Int = 2for equilibria.contour_color::Symbol = :romafor the contour color gradient.
- Trajectory arrows are now drawn with
arrow0!, giving a smoother appearance and more flexible arrow sizing. - Neutral edges are identified automatically (via
identify_neutral_edges) and can be overlayed with dotted markers after trajectories are plotted by callingplot_simplexagain withplot_neutral_dots = true.
-
Updated
find_equilibriaLogic- Automatically includes simplex vertices (
get_vertices()) among initial guesses, ensuring pure-strategy equilibria aren’t missed. - Will skip plotting certain equilibria if they are on unstable neutral edges or effectively coincide with a corner already accounted for.
- Automatically includes simplex vertices (
-
Other Adjustments
- Improved docstrings across multiple functions (e.g.,
plot_simplex,plot_evolution,identify_neutral_edges) with updated keywords and usage notes. - Minor code cleanup (e.g., reversing the bottom-edge labeling, removing some older quiver-based arrow code, etc.).
- Improved docstrings across multiple functions (e.g.,
Overall Impact
- These changes add convenient neutral edge detection and highlighting, enhanced arrow visuals, and better equilibrium detection at vertices.
- However, the keyword argument renaming and revised corner labeling constitute breaking changes that may require users to update their scripts.
v0.3.0
Changelog
Breaking Changes
-
Renamed Keyword Arguments in
plot_evolutioncontourf→contourcbar→colorbar
These renames break any code that still usescontourf = ...orcbar = .... The new parameter names must be used.
-
Corner Labeling and Edge Index Changes
- In
plot_simplex, the bottom edge now goes from “Strategy 2” on the left to “Strategy 1” on the right, reversing the typical approach some users may have assumed. Code that specifically relied on corner labeling or coordinate mappings may need updating.
- In
-
Equilibria Plot Filtering
- The updated logic in
plot_evolutionfor plotting equilibria on “neutral edges” can skip plotting some equilibria that were previously shown (e.g., unstable equilibria on neutral edges). Existing scripts relying on the older behavior may see fewer plotted points if those equilibria fall under the new filtering rule.
- The updated logic in
Other Enhancements and Additions
-
New Imports & Dependencies
- Added
using LaTeXStringsto support LaTeX-based text rendering in plots.
- Added
-
New Utility Functions
get_vertices()
Returns a list of the simplex vertices (pure strategies):[ [1,0,0], [0,1,0], [0,0,1] ].arrow0!
A custom function for drawing arrows on plots (replaces the old manualquiver!approach).
-
Enhancements to
plot_simplex- New argument
neutral_edges::Vector{Int}lets you specify which edges are highlighted as “neutral.” - Optional
plot_neutral_dots::Booladds dotted markers along any declared neutral edges. - The corner labeling now matches the updated coordinate mapping, with “Strategy 2” at the bottom left, “Strategy 1” at the bottom right, and “Strategy 3” at the top.
- New argument
-
Neutral Edges Detection
identify_neutral_edges(params::ReplicatorParams)systematically checks payoff differences along each boundary edge to determine if it's neutral.- Used internally by
plot_evolutionto highlight edges in a “dotted” style whenplot_neutral_dotsis enabled.
-
plot_evolutionOverhaul- Renamed certain keyword arguments (as per Breaking Changes).
- Plot customization:
markersize::Int = 9andmarkerstrokewidth::Int = 2for equilibria.contour_color::Symbol = :romafor the contour color gradient.
- Trajectory arrows are now drawn with
arrow0!, giving a smoother appearance and more flexible arrow sizing. - Neutral edges are identified automatically (via
identify_neutral_edges) and can be overlayed with dotted markers after trajectories are plotted by callingplot_simplexagain withplot_neutral_dots = true.
-
Updated
find_equilibriaLogic- Automatically includes simplex vertices (
get_vertices()) among initial guesses, ensuring pure-strategy equilibria aren’t missed. - Will skip plotting certain equilibria if they are on unstable neutral edges or effectively coincide with a corner already accounted for.
- Automatically includes simplex vertices (
-
Other Adjustments
- Improved docstrings across multiple functions (e.g.,
plot_simplex,plot_evolution,identify_neutral_edges) with updated keywords and usage notes. - Minor code cleanup (e.g., reversing the bottom-edge labeling, removing some older quiver-based arrow code, etc.).
- Improved docstrings across multiple functions (e.g.,
Overall Impact
- These changes add convenient neutral edge detection and highlighting, enhanced arrow visuals, and better equilibrium detection at vertices.
- However, the keyword argument renaming and revised corner labeling constitute breaking changes that may require users to update their scripts.
0.2.0
- Added contour plotting within the simplex. Adjust the resolution, levels, color maps, and include color bars to enhance the visualization.
- Added options for different tolerances, aiding the correct plotting of equilibria.