I’m trying to build a simple model and I’m experiencing some errors that I’m unable to debug. Here’s the code I’m running:
using Agents
using AgentsPlots
using Distributions
using LightGraphs
mutable struct EmployerAgent <: AbstractAgent
    id::Int
    pos::Int
    compliant::Bool
end
function initialize(
        num_agents = 100,
        graph_edges = 50,
        p_compliance = 0.9,
        p_inv_net = 0.03,
        p_inv_solo = 0.01
)
    space = GraphSpace(SimpleGraph(num_agents, graph_edges))
    properties = Dict(
        :p_compliance => Bernoulli(p_compliance),
        :p_inv_net => Bernoulli(p_inv_net),
        :p_inv_solo => Bernoulli(p_inv_solo)
    )
    model = ABM(EmployerAgent, space; properties = properties)
    for n in 1:num_agents
        agent = EmployerAgent(n, n, rand(model.properties[:p_compliance]))
        add_agent_single!(agent, model)
    end
    return model
end;
agent_color(x) = x[1].compliant == 0 ? :red : :green
model = initialize()
plotabm(model; ac=agent_color)
Most of the time that I call plotabm it works, but every 4th or 5th call (seemingly at random) it returns this:
AssertionError: length(node_weights) == n
Stacktrace:
 [1] macro expansion at C:\Users\mthel\.julia\packages\GraphRecipes\kYXc4\src\graphs.jl:378 [inlined]
 [2] apply_recipe(::Dict{Symbol,Any}, ::GraphRecipes.GraphPlot) at C:\Users\mthel\.julia\packages\RecipesBase\jcXIg\src\RecipesBase.jl:281
 [3] _process_userrecipes!(::Plots.Plot{Plots.GRBackend}, ::Dict{Symbol,Any}, ::Tuple{GraphRecipes.GraphPlot}) at C:\Users\mthel\.julia\packages\RecipesPipeline\5RD7m\src\user_recipe.jl:35
 [4] recipe_pipeline!(::Plots.Plot{Plots.GRBackend}, ::Dict{Symbol,Any}, ::Tuple{GraphRecipes.GraphPlot}) at C:\Users\mthel\.julia\packages\RecipesPipeline\5RD7m\src\RecipesPipeline.jl:68
 [5] _plot!(::Plots.Plot{Plots.GRBackend}, ::Dict{Symbol,Any}, ::Tuple{GraphRecipes.GraphPlot}) at C:\Users\mthel\.julia\packages\Plots\jpF9l\src\plot.jl:167
 [6] plot(::GraphRecipes.GraphPlot; kw::Base.Iterators.Pairs{Symbol,Any,NTuple{6,Symbol},NamedTuple{(:node_weights, :nodeshape, :nodecolor, :color, :markerstrokecolor, :markerstrokewidth),Tuple{Array{Float64,1},Array{Any,1},Array{Any,1},String,String,Float64}}}) at C:\Users\mthel\.julia\packages\Plots\jpF9l\src\plot.jl:57
 [7] #graphplot#82 at C:\Users\mthel\.julia\packages\RecipesBase\jcXIg\src\RecipesBase.jl:356 [inlined]
 [8] plotabm(::AgentBasedModel{EmployerAgent,GraphSpace{SimpleGraph{Int64}},typeof(fastest),Dict{Symbol,Bernoulli{Float64}}}; ac::typeof(agent_color), as::typeof(length), am::AgentsPlots.var"#16#20", kwargs::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at C:\Users\mthel\.julia\packages\AgentsPlots\XAIQ4\src\graph.jl:29
 [9] top-level scope at In[11]:2
It appears that the error is in the plot generation so I’m not sure if this is an AgentsPlots.jl issue or if my code would be expected to randomly break like this for some reason (due to my own error).
Furthermore, after loading InteractiveChaos I don’t have access to the interactive_abm function:
using InteractiveChaos
?interactive_abm()
search: interactive_poincaresos interactive_orbitdiagram InteractiveChaos
Couldn't find interactive_abm
Perhaps you meant InteractiveChaos