Testing on empirical networks I noticed that past around 7 communities the constrained optimization will fail sometimes,
Warning: Problem status NUMERICAL_ERROR; solution may be inaccurate.
Also that the optimization succeeded is never checked. I think spurious solutions can be accepted. Tweaking it to just ignore those cases in eval_relocate is easy enough
solve!(problem, ECOS.Optimizer(verbose=false))
# println("Optval = ", -problem.optval)
return problem.status, -problem.optval
problem_status, sbm_cost = solve_convex(sol.data, m_, kappa_, omega)
if sbm_cost < sol.ll && problem_status == Convex.MOI.OPTIMAL
I'm not sure if there is some ECOS setting that can be tweaked to solve these problematic cases or not. Around the same number of communities (7~) (and above) the algorithm slows down considerably. When I flip the CONSTRAINED flag the algorithm doesn't slow down noticeably at the same point. I wonder now if these optimization errors can be worked around will the algorithm scale more closely with the unconstrained case?
Thanks for any thoughts
Testing on empirical networks I noticed that past around 7 communities the constrained optimization will fail sometimes,
Also that the optimization succeeded is never checked. I think spurious solutions can be accepted. Tweaking it to just ignore those cases in
eval_relocateis easy enoughI'm not sure if there is some ECOS setting that can be tweaked to solve these problematic cases or not. Around the same number of communities (7~) (and above) the algorithm slows down considerably. When I flip the
CONSTRAINEDflag the algorithm doesn't slow down noticeably at the same point. I wonder now if these optimization errors can be worked around will the algorithm scale more closely with the unconstrained case?Thanks for any thoughts