11"""
2+ diff_model(optimizer_constructor; with_parametric_opt_interface::Bool = true, with_bridge_type = Float64, with_cache::Bool = true)
3+
4+ Create a JuMP model with a differentiable optimizer. The optimizer is created
5+ using `optimizer_constructor`. This model will try to select the proper
6+ differentiable optimization method based on the problem structure.
7+
8+ See also: [`nonlinear_diff_model`](@ref), [`conic_diff_model`](@ref), [`quadratic_diff_model`](@ref).
29"""
310function diff_model (
411 optimizer_constructor;
5- with_parametric_opt_interface:: Bool = false ,
12+ with_parametric_opt_interface:: Bool = true ,
613 with_bridge_type = Float64,
714 with_cache:: Bool = true ,
815)
@@ -15,11 +22,79 @@ function diff_model(
1522 return JuMP. direct_model (inner)
1623end
1724
18- # nonlinear_diff_model
19- # conic_diff_model
20- # quadratic_diff_model
25+ """
26+ nonlinear_diff_model(optimizer_constructor; with_bridge_type = Float64, with_cache::Bool = true)
27+
28+ Create a JuMP model with a differentiable optimizer for nonlinear programs.
29+ The optimizer is created using `optimizer_constructor`.
30+
31+ See also: [`conic_diff_model`](@ref), [`quadratic_diff_model`](@ref), [`diff_model`](@ref).
32+ """
33+ function nonlinear_diff_model (
34+ optimizer_constructor;
35+ with_bridge_type = Float64,
36+ with_cache:: Bool = true ,
37+ )
38+ inner = diff_optimizer (
39+ optimizer_constructor;
40+ with_parametric_opt_interface = false ,
41+ with_bridge_type = with_bridge_type,
42+ with_cache = with_cache,
43+ )
44+ MOI. set (inner, ModelConstructor (), NonLinearProgram. Model)
45+ return JuMP. direct_model (inner)
46+ end
47+
48+ """
49+ conic_diff_model(optimizer_constructor; with_bridge_type = Float64, with_cache::Bool = true)
50+
51+ Create a JuMP model with a differentiable optimizer for conic programs.
52+ The optimizer is created using `optimizer_constructor`.
53+
54+ See also: [`nonlinear_diff_model`](@ref), [`quadratic_diff_model`](@ref), [`diff_model`](@ref).
55+ """
56+ function conic_diff_model (
57+ optimizer_constructor;
58+ with_bridge_type = Float64,
59+ with_cache:: Bool = true ,
60+ )
61+ inner = diff_optimizer (
62+ optimizer_constructor;
63+ with_parametric_opt_interface = true ,
64+ with_bridge_type = with_bridge_type,
65+ with_cache = with_cache,
66+ )
67+ MOI. set (inner, ModelConstructor (), ConicProgram. Model)
68+ return JuMP. direct_model (inner)
69+ end
70+
71+ """
72+ quadratic_diff_model(optimizer_constructor; with_bridge_type = Float64, with_cache::Bool = true)
73+
74+ Create a JuMP model with a differentiable optimizer for quadratic programs.
75+ The optimizer is created using `optimizer_constructor`.
76+
77+ See also: [`nonlinear_diff_model`](@ref), [`conic_diff_model`](@ref), [`diff_model`](@ref).
78+ """
79+ function quadratic_diff_model (
80+ optimizer_constructor;
81+ with_bridge_type = Float64,
82+ with_cache:: Bool = true ,
83+ )
84+ inner = diff_optimizer (
85+ optimizer_constructor;
86+ with_parametric_opt_interface = true ,
87+ with_bridge_type = with_bridge_type,
88+ with_cache = with_cache,
89+ )
90+ MOI. set (inner, ModelConstructor (), QuadraticProgram. Model)
91+ return JuMP. direct_model (inner)
92+ end
2193
2294"""
95+ set_forward_parameter(model::JuMP.Model, variable::JuMP.VariableRef, value::Number)
96+
97+ Set the value of a parameter input sensitivity for forward mode.
2398"""
2499function set_forward_parameter (
25100 model:: JuMP.Model ,
@@ -28,34 +103,39 @@ function set_forward_parameter(
28103)
29104 return MOI. set (
30105 model,
31- DiffOpt . ForwardConstraintSet (),
106+ ForwardConstraintSet (),
32107 ParameterRef (variable),
33- value,
108+ Parameter ( value) ,
34109 )
35110end
36111
37112"""
113+ get_reverse_parameter(model::JuMP.Model, variable::JuMP.VariableRef)
114+
115+ Get the value of a parameter output sensitivity for reverse mode.
38116"""
39117function get_reverse_parameter (model:: JuMP.Model , variable:: JuMP.VariableRef )
40- return MOI. get (
41- model,
42- DiffOpt. ReverseConstraintSet (),
43- ParameterRef (variable),
44- )
118+ return MOI. get (model, ReverseConstraintSet (), ParameterRef (variable)). value
45119end
46120
47121"""
122+ set_reverse_variable(model::JuMP.Model, variable::JuMP.VariableRef, value::Number)
123+
124+ Set the value of a variable input sensitivity for reverse mode.
48125"""
49126function set_reverse_variable (
50127 model:: JuMP.Model ,
51128 variable:: JuMP.VariableRef ,
52129 value:: Number ,
53130)
54- return MOI. set (model, DiffOpt . ReverseVariablePrimal (), variable, value)
131+ return MOI. set (model, ReverseVariablePrimal (), variable, value)
55132end
56133
57134"""
135+ get_forward_variable(model::JuMP.Model, variable::JuMP.VariableRef)
136+
137+ Get the value of a variable output sensitivity for forward mode.
58138"""
59139function get_forward_variable (model:: JuMP.Model , variable:: JuMP.VariableRef )
60- return MOI. get (model, DiffOpt . ForwardVariablePrimal (), variable)
140+ return MOI. get (model, ForwardVariablePrimal (), variable)
61141end
0 commit comments