-
Notifications
You must be signed in to change notification settings - Fork 14
Open
Labels
bugSomething isn't workingSomething isn't workingenhancementNew feature or requestNew feature or request
Description
The following errors and it is not clear how to correctly fetch the ReverseConstraintFunction
perturbations for conic constraints:
model = JuMP.Model(() -> DiffOpt.diff_optimizer(SCS.Optimizer))
set_silent(model)
x = @variable(model)
y = @variable(model)
t = @variable(model)
ceq = @constraint(model, -1.0t == -1.0)
cnon = @constraint(model, 1.0y >= 1 / √2)
csoc = @constraint(model, [1.0t, 1.0x, 1.0y] in MOI.SecondOrderCone(3))
@objective(model, Min, 1.0x)
optimize!(model)
MOI.set(
model,
DiffOpt.ReverseVariablePrimal(),
y,
1.0
)
DiffOpt.reverse_differentiate!(model)
JuMP.coefficient(MOI.get(model, DiffOpt.ReverseConstraintFunction(), cnon), y)
Errors with:
ERROR: MethodError: no method matching coefficient(::DiffOpt.MatrixVectorAffineFunction{…}, ::MathOptInterface.VariableIndex)
Closest candidates are:
coefficient(::DiffOpt.MatrixScalarQuadraticFunction, ::MathOptInterface.VariableIndex)
@ DiffOpt ~/Workspace/DiffOpt.jl/src/utils.jl:228
coefficient(::DiffOpt.MatrixScalarQuadraticFunction, ::MathOptInterface.VariableIndex, ::MathOptInterface.VariableIndex)
@ DiffOpt ~/Workspace/DiffOpt.jl/src/jump_moi_overloads.jl:198
coefficient(::GenericQuadExpr{C, V}, ::V, ::V) where {C, V}
@ JuMP ~/.julia/packages/JuMP/xlp0s/src/quad_expr.jl:220
...
Stacktrace:
[1] coefficient(func::DiffOpt.IndexMappedFunction{…}, vi::MathOptInterface.VariableIndex)
@ DiffOpt ~/Workspace/DiffOpt.jl/src/jump_moi_overloads.jl:247
[2] coefficient(func::DiffOpt.IndexMappedFunction{DiffOpt.IndexMappedFunction{…}}, vi::MathOptInterface.VariableIndex)
@ DiffOpt ~/Workspace/DiffOpt.jl/src/jump_moi_overloads.jl:247
[3] coefficient(func::DiffOpt.MOItoJuMP{DiffOpt.IndexMappedFunction{DiffOpt.IndexMappedFunction{…}}}, var_ref::VariableRef)
@ DiffOpt ~/Workspace/DiffOpt.jl/src/jump_moi_overloads.jl:297
[4] top-level scope
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingenhancementNew feature or requestNew feature or request