Skip to content

Releases

v0.4.0

Choose a tag to compare

@datadreamscorp datadreamscorp released this 01 Aug 19:17
2aa9324

Breaking changes

  • plot_evolution no longer accepts num_initial_guesses, solver_tol,
    equilibrium_tol, validity_tol or stability_tol directly.
    These were pure
    pass-throughs to find_equilibria and are now bundled into a single
    equilibria_kwargs NamedTuple:

    # 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_levels removed from plot_evolution. It was documented but never read
    anywhere in the package. Passing it now raises a MethodError instead of being
    silently ignored.

  • markerstrokewidth default changed from 2 to 1.0, giving thinner equilibrium
    and neutral-edge markers. Pass markerstrokewidth = 2 to restore the old appearance.

  • Dependency change: DifferentialEquations replaced by OrdinaryDiffEq +
    SciMLBase.
    The package used only ODEProblem, solve, DiscreteCallback and
    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_coords is now exported, alongside ternary_coords.
  • Numeric arguments accept any real type convertible to a float, so
    markersize = 10, tspan = (0, 100) and steady_state_tol = 1//1000000 all work.

Fixed

  • classify_basin now 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_edges and
    plot_simplex. Correct mapping is 1 = {1,2}, 2 = {1,3}, 3 = {2,3}.
  • Several docstring defaults corrected to match the real signatures.

v0.3.1

Choose a tag to compare

@datadreamscorp datadreamscorp released this 02 Mar 22:26
203691b

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_evolution

    • contourf → contour
    • cbar → colorbar
      These renames break any code that still uses contourf = ... or cbar = .... 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.
  • Equilibria Plot Filtering

    • The updated logic in plot_evolution for 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.

Other Enhancements and Additions

  1. New Imports & Dependencies

    • Added using LaTeXStrings to support LaTeX-based text rendering in plots.
  2. 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 manual quiver! approach).
  3. Enhancements to plot_simplex

    • New argument neutral_edges::Vector{Int} lets you specify which edges are highlighted as “neutral.”
    • Optional plot_neutral_dots::Bool adds 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.
  4. 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_evolution to highlight edges in a “dotted” style when plot_neutral_dots is enabled.
  5. plot_evolution Overhaul

    • Renamed certain keyword arguments (as per Breaking Changes).
    • Plot customization:
      • markersize::Int = 9 and markerstrokewidth::Int = 2 for equilibria.
      • contour_color::Symbol = :roma for 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 calling plot_simplex again with plot_neutral_dots = true.
  6. Updated find_equilibria Logic

    • 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.
  7. 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.).

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

Choose a tag to compare

@datadreamscorp datadreamscorp released this 02 Mar 19:59
7906138

Changelog

Breaking Changes

  • Renamed Keyword Arguments in plot_evolution

    • contourf → contour
    • cbar → colorbar
      These renames break any code that still uses contourf = ... or cbar = .... 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.
  • Equilibria Plot Filtering

    • The updated logic in plot_evolution for 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.

Other Enhancements and Additions

  1. New Imports & Dependencies

    • Added using LaTeXStrings to support LaTeX-based text rendering in plots.
  2. 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 manual quiver! approach).
  3. Enhancements to plot_simplex

    • New argument neutral_edges::Vector{Int} lets you specify which edges are highlighted as “neutral.”
    • Optional plot_neutral_dots::Bool adds 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.
  4. 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_evolution to highlight edges in a “dotted” style when plot_neutral_dots is enabled.
  5. plot_evolution Overhaul

    • Renamed certain keyword arguments (as per Breaking Changes).
    • Plot customization:
      • markersize::Int = 9 and markerstrokewidth::Int = 2 for equilibria.
      • contour_color::Symbol = :roma for 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 calling plot_simplex again with plot_neutral_dots = true.
  6. Updated find_equilibria Logic

    • 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.
  7. 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.).

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

Choose a tag to compare

@datadreamscorp datadreamscorp released this 20 Oct 17:34
  • 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.

0.1.2

Choose a tag to compare

@datadreamscorp datadreamscorp released this 12 Oct 15:49

First release.