Skip to content

Commit 8108801

Browse files
authored
Organize access to updated_parameters (#227)
* Organize access to `updated_parameters` * fmt
1 parent 02dd2dc commit 8108801

1 file changed

Lines changed: 28 additions & 39 deletions

File tree

src/parametric_functions.jl

Lines changed: 28 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -221,34 +221,28 @@ function _delta_parametric_constant(
221221
delta_constant = zero(T)
222222
for term in affine_parameter_terms(f)
223223
p = p_idx(term.variable)
224-
if !isnan(model.updated_parameters[p])
225-
delta_constant +=
226-
term.coefficient *
227-
(model.updated_parameters[p] - model.parameters[p])
224+
new_p = model.updated_parameters[p]
225+
if !isnan(new_p)
226+
delta_constant += term.coefficient * (new_p - model.parameters[p])
228227
end
229228
end
230229
for term in quadratic_parameter_parameter_terms(f)
231230
p1 = p_idx(term.variable_1)
232231
p2 = p_idx(term.variable_2)
233-
isnan_1 = isnan(model.updated_parameters[p1])
234-
isnan_2 = isnan(model.updated_parameters[p2])
232+
new_p1 = model.updated_parameters[p1]
233+
new_p2 = model.updated_parameters[p2]
234+
isnan_1 = isnan(new_p1)
235+
isnan_2 = isnan(new_p2)
235236
if !isnan_1 || !isnan_2
236-
new_1 = ifelse(
237-
isnan_1,
238-
model.parameters[p1],
239-
model.updated_parameters[p1],
240-
)
241-
new_2 = ifelse(
242-
isnan_2,
243-
model.parameters[p2],
244-
model.updated_parameters[p2],
245-
)
237+
old_p1 = model.parameters[p1]
238+
old_p2 = model.parameters[p2]
239+
new_1 = ifelse(isnan_1, old_p1, new_p1)
240+
new_2 = ifelse(isnan_2, old_p2, new_p2)
246241
delta_constant +=
247242
(
248243
term.coefficient /
249244
ifelse(term.variable_1 == term.variable_2, 2, 1)
250-
) *
251-
(new_1 * new_2 - model.parameters[p1] * model.parameters[p2])
245+
) * (new_1 * new_2 - old_p1 * old_p2)
252246
end
253247
end
254248
return delta_constant
@@ -403,10 +397,9 @@ function _delta_parametric_constant(
403397
delta_constant = zero(T)
404398
for term in affine_parameter_terms(f)
405399
p = p_idx(term.variable)
406-
if !isnan(model.updated_parameters[p])
407-
delta_constant +=
408-
term.coefficient *
409-
(model.updated_parameters[p] - model.parameters[p])
400+
new_p = model.updated_parameters[p]
401+
if !isnan(new_p)
402+
delta_constant += term.coefficient * (new_p - model.parameters[p])
410403
end
411404
end
412405
return delta_constant
@@ -521,10 +514,10 @@ function _delta_parametric_constant(
521514
delta_constant = zeros(T, length(f.c))
522515
for term in vector_affine_parameter_terms(f)
523516
p = p_idx(term.scalar_term.variable)
524-
if !isnan(model.updated_parameters[p])
517+
new_p = model.updated_parameters[p]
518+
if !isnan(new_p)
525519
delta_constant[term.output_index] +=
526-
term.scalar_term.coefficient *
527-
(model.updated_parameters[p] - model.parameters[p])
520+
term.scalar_term.coefficient * (new_p - model.parameters[p])
528521
end
529522
end
530523
return delta_constant
@@ -747,21 +740,17 @@ function _delta_parametric_constant(
747740
var2 = term.scalar_term.variable_2
748741
p1 = p_idx(var1)
749742
p2 = p_idx(var2)
750-
751-
if !isnan(model.updated_parameters[p1]) ||
752-
!isnan(model.updated_parameters[p2])
753-
old_val1 = model.parameters[p1]
754-
old_val2 = model.parameters[p2]
755-
new_val1 =
756-
!isnan(model.updated_parameters[p1]) ?
757-
model.updated_parameters[p1] : old_val1
758-
new_val2 =
759-
!isnan(model.updated_parameters[p2]) ?
760-
model.updated_parameters[p2] : old_val2
761-
743+
new_p1 = model.updated_parameters[p1]
744+
new_p2 = model.updated_parameters[p2]
745+
isnan_1 = isnan(new_p1)
746+
isnan_2 = isnan(new_p2)
747+
if !isnan_1 || !isnan_2
748+
old_p1 = model.parameters[p1]
749+
old_p2 = model.parameters[p2]
750+
new_1 = isnan_1 ? old_p1 : new_p1
751+
new_2 = isnan_2 ? old_p2 : new_p2
762752
coef = term.scalar_term.coefficient / (var1 == var2 ? 2 : 1)
763-
delta_constants[idx] +=
764-
coef * (new_val1 * new_val2 - old_val1 * old_val2)
753+
delta_constants[idx] += coef * (new_1 * new_2 - old_p1 * old_p2)
765754
end
766755
end
767756

0 commit comments

Comments
 (0)