@@ -66,18 +66,11 @@ function MOI.initialize(d::NLPEvaluator, requested_features::Vector{Symbol})
6666 # Only load expressions which actually are used
6767 d. subexpression_forward_values[k] = NaN
6868 expr = d. data. expressions[k]
69- adj = Nonlinear. adjacency_matrix (expr. nodes)
70- linearity = if d. want_hess
71- _classify_linearity (expr. nodes, adj, d. subexpression_linearity)
72- else
73- [NONLINEAR]
74- end
75- subex = _SubexpressionStorage (
69+ subex, _ = _subexpression_and_linearity (
7670 expr,
77- adj,
7871 moi_index_to_consecutive_index,
7972 Float64[],
80- linearity[ 1 ] ,
73+ d ,
8174 )
8275 d. subexpressions[k] = subex
8376 d. subexpression_linearity[k] = subex. linearity
@@ -112,20 +105,14 @@ function MOI.initialize(d::NLPEvaluator, requested_features::Vector{Symbol})
112105 shared_partials_storage_ϵ = Float64[]
113106 if d. data. objective != = nothing
114107 expr = something (d. data. objective)
115- adj = Nonlinear . adjacency_matrix (expr . nodes)
116- linearity = if d . want_hess
117- _classify_linearity (expr . nodes, adj, d . subexpression_linearity)
118- else
119- [NONLINEAR]
120- end
108+ subexpr, linearity = _subexpression_and_linearity (
109+ expr,
110+ moi_index_to_consecutive_index,
111+ shared_partials_storage_ϵ,
112+ d,
113+ )
121114 objective = _FunctionStorage (
122- _SubexpressionStorage (
123- expr,
124- adj,
125- moi_index_to_consecutive_index,
126- shared_partials_storage_ϵ,
127- linearity[1 ],
128- ),
115+ subexpr,
129116 N,
130117 coloring_storage,
131118 d. want_hess,
@@ -142,12 +129,12 @@ function MOI.initialize(d::NLPEvaluator, requested_features::Vector{Symbol})
142129 for (k, (_, constraint)) in enumerate (d. data. constraints)
143130 idx = d. data. objective != = nothing ? k + 1 : k
144131 expr = constraint. expression
145- adj = Nonlinear . adjacency_matrix (expr . nodes)
146- linearity = if d . want_hess
147- _classify_linearity (expr . nodes, adj, d . subexpression_linearity)
148- else
149- [NONLINEAR]
150- end
132+ subexpr, linearity = _subexpression_and_linearity (
133+ expr,
134+ moi_index_to_consecutive_index,
135+ shared_partials_storage_ϵ,
136+ d,
137+ )
151138 push! (
152139 d. constraints,
153140 _FunctionStorage (
0 commit comments