Context: @JiazhengZhu and I are trying to translate (automatically) some problems from a Julia formulation to SDPA-format file in an effort to debug #17. It seems like some of the problem is a choice of parameters (and a SOC problem that snuck in), but I want to check that directly going to the binary (well, Convex -> MOI -> SDPA-formatted file -> binary) gives the same answers as Convex -> MBP -> SDPA.jl (or now Convex -> MOI -> SDPA.jl via https://github.com/ericphanson/Convex.jl/tree/MathOptInterface), to see if the "bad" parameters giving very wrong results is due to something in SDPA.jl or in the binary itself (I'm thinking it's not a bug in Convex.jl because the other solvers are fine). Being able to write SDPA-formatted files will help us later too, because we want to wrap SDPA-GMP, so we can use that for tests there too.
The problem: Trying to use the MOI.write method provided by SemiOptInterface gives MethodError: no method matching getnumberofconstraints(::SDPA.SDOptimizer) and suggests only getnumberofconstraints(::SemidefiniteOptInterface.MockSDOptimizer). Looking through the code, I don't think SDPA provides a method for getnumberofconstraints, which I guess is the problem.
So I think one way for us to resolve this is to write the methods to fill our the SemidefiniteOptInterface interface (from its src/interface.jl). But looking at JuliaOpt/SemidefiniteOptInterface.jl#30, it sounds like maybe the plan is to move SDPA to not depend on SemidefiniteOptInterface anyway, and to move the SDPA-format stuff to MathOptFormat.jl. In that case, what can we do to help? I think we'll want to follow whatever's done for SDPA anyway in our wrapping of SDPA-GMP, so if we can push that forward first, it'll probably be easier for us anyway.
Context: @JiazhengZhu and I are trying to translate (automatically) some problems from a Julia formulation to SDPA-format file in an effort to debug #17. It seems like some of the problem is a choice of parameters (and a SOC problem that snuck in), but I want to check that directly going to the binary (well, Convex -> MOI -> SDPA-formatted file -> binary) gives the same answers as Convex -> MBP -> SDPA.jl (or now Convex -> MOI -> SDPA.jl via https://github.com/ericphanson/Convex.jl/tree/MathOptInterface), to see if the "bad" parameters giving very wrong results is due to something in SDPA.jl or in the binary itself (I'm thinking it's not a bug in Convex.jl because the other solvers are fine). Being able to write SDPA-formatted files will help us later too, because we want to wrap SDPA-GMP, so we can use that for tests there too.
The problem: Trying to use the
MOI.writemethod provided by SemiOptInterface givesMethodError: no method matching getnumberofconstraints(::SDPA.SDOptimizer)and suggests onlygetnumberofconstraints(::SemidefiniteOptInterface.MockSDOptimizer). Looking through the code, I don't think SDPA provides a method forgetnumberofconstraints, which I guess is the problem.So I think one way for us to resolve this is to write the methods to fill our the SemidefiniteOptInterface interface (from its
src/interface.jl). But looking at JuliaOpt/SemidefiniteOptInterface.jl#30, it sounds like maybe the plan is to move SDPA to not depend on SemidefiniteOptInterface anyway, and to move the SDPA-format stuff to MathOptFormat.jl. In that case, what can we do to help? I think we'll want to follow whatever's done for SDPA anyway in our wrapping of SDPA-GMP, so if we can push that forward first, it'll probably be easier for us anyway.