Related to the solverhook method doing dispatch manually over symbols, a simpler design could leverage Julia dispatch and types for methods:
abstract type MultiOptMethod end
"""
multi_solve(mt::MultiOptMethod) solves the multi-objective problem with method mt
"""
function multi_solve end
"""
epsilon-constraint method, parametrized over the epsilon value
"""
struct EpsMethod <: MultiOptMethod
eps::Float64
end
mutable struct MultiData
# ...
mt::MultiOptMethod
end
function solvehook(m::Model,
inequalityconstraint::Bool = false, kwargs...)
# dispatches over method from MultiData
end
Related to the solverhook method doing dispatch manually over symbols, a simpler design could leverage Julia dispatch and types for methods: