@@ -571,11 +571,21 @@ function ParametricVectorQuadraticFunction(
571571 sizehint! (affine_data_np, length (v))
572572 for term in v
573573 if term. scalar_term. variable in v_in_pv
574- base = get (affine_data, (term. scalar_term. variable, term. output_index), zero (T))
575- affine_data[(term. scalar_term. variable, term. output_index)] = term. scalar_term. coefficient + base
574+ base = get (
575+ affine_data,
576+ (term. scalar_term. variable, term. output_index),
577+ zero (T),
578+ )
579+ affine_data[(term. scalar_term. variable, term. output_index)] =
580+ term. scalar_term. coefficient + base
576581 else
577- base = get (affine_data_np, (term. scalar_term. variable, term. output_index), zero (T))
578- affine_data_np[(term. scalar_term. variable, term. output_index)] = term. scalar_term. coefficient + base
582+ base = get (
583+ affine_data_np,
584+ (term. scalar_term. variable, term. output_index),
585+ zero (T),
586+ )
587+ affine_data_np[(term. scalar_term. variable, term. output_index)] =
588+ term. scalar_term. coefficient + base
579589 end
580590 end
581591
@@ -594,15 +604,21 @@ function ParametricVectorQuadraticFunction(
594604 )
595605end
596606
597- function vector_quadratic_parameter_variable_terms (f:: ParametricVectorQuadraticFunction )
607+ function vector_quadratic_parameter_variable_terms (
608+ f:: ParametricVectorQuadraticFunction ,
609+ )
598610 return f. pv
599611end
600612
601- function vector_quadratic_parameter_parameter_terms (f:: ParametricVectorQuadraticFunction )
613+ function vector_quadratic_parameter_parameter_terms (
614+ f:: ParametricVectorQuadraticFunction ,
615+ )
602616 return f. pp
603617end
604618
605- function vector_quadratic_variable_variable_terms (f:: ParametricVectorQuadraticFunction )
619+ function vector_quadratic_variable_variable_terms (
620+ f:: ParametricVectorQuadraticFunction ,
621+ )
606622 return f. vv
607623end
608624
@@ -675,8 +691,11 @@ function _parametric_affine_terms(
675691 f:: ParametricVectorQuadraticFunction{T} ,
676692) where {T}
677693 param_terms_dict = Dict {Tuple{MOI.VariableIndex,Int},T} ()
678- sizehint! (param_terms_dict, length (vector_quadratic_parameter_variable_terms (f)))
679-
694+ sizehint! (
695+ param_terms_dict,
696+ length (vector_quadratic_parameter_variable_terms (f)),
697+ )
698+
680699 for term in vector_quadratic_parameter_variable_terms (f)
681700 p_idx_val = p_idx (term. scalar_term. variable_1)
682701 var = term. scalar_term. variable_2
@@ -685,13 +704,13 @@ function _parametric_affine_terms(
685704 param_terms_dict[(var, output_idx)] =
686705 base + term. scalar_term. coefficient * model. parameters[p_idx_val]
687706 end
688-
707+
689708 for (term, coef) in f. affine_data
690709 output_idx = term. output_index
691710 var = term. scalar_term. variable
692711 param_terms_dict[(var, output_idx)] = coef
693712 end
694-
713+
695714 return param_terms_dict
696715end
697716
@@ -700,44 +719,50 @@ function _delta_parametric_affine_terms(
700719 f:: ParametricVectorQuadraticFunction{T} ,
701720) where {T}
702721 delta_terms = Dict {Tuple{Int,MOI.VariableIndex},T} ()
703-
722+
704723 # Handle parameter-variable quadratic terms (px) that become affine (x) when p is updated
705724 for term in f. pv
706725 p_idx_val = p_idx (term. scalar_term. variable_1)
707726 var = term. scalar_term. variable_2
708727 output_idx = term. output_index
709-
710- if haskey (model. updated_parameters, p_idx_val) && ! isnan (model. updated_parameters[p_idx_val])
728+
729+ if haskey (model. updated_parameters, p_idx_val) &&
730+ ! isnan (model. updated_parameters[p_idx_val])
711731 old_param_val = model. parameters[p_idx_val]
712732 new_param_val = model. updated_parameters[p_idx_val]
713- delta_coef = term. scalar_term. coefficient * (new_param_val - old_param_val)
714-
733+ delta_coef =
734+ term. scalar_term. coefficient * (new_param_val - old_param_val)
735+
715736 key = (output_idx, var)
716737 current_delta = get (delta_terms, key, zero (T))
717738 delta_terms[key] = current_delta + delta_coef
718739 end
719740 end
720-
741+
721742 # Handle parameter-only affine terms
722743 for term in f. p
723744 p_idx_val = p_idx (term. scalar_term. variable)
724745 output_idx = term. output_index
725-
726- if haskey (model. updated_parameters, p_idx_val) && ! isnan (model. updated_parameters[p_idx_val])
746+
747+ if haskey (model. updated_parameters, p_idx_val) &&
748+ ! isnan (model. updated_parameters[p_idx_val])
727749 old_param_val = model. parameters[p_idx_val]
728750 new_param_val = model. updated_parameters[p_idx_val]
729-
751+
730752 # This becomes a constant change, not an affine term change
731753 # We'll handle this in the constant update function
732754 end
733755 end
734-
756+
735757 return delta_terms
736758end
737759
738- function _update_cache! (f:: ParametricVectorQuadraticFunction{T} , model) where {T}
760+ function _update_cache! (
761+ f:: ParametricVectorQuadraticFunction{T} ,
762+ model,
763+ ) where {T}
739764 f. current_constant = _parametric_constant (model, f)
740- f. current_terms_with_p = _parametric_affine_terms (model, f)
765+ f. current_terms_with_p = _parametric_affine_terms (model, f)
741766 return nothing
742767end
743768
@@ -758,40 +783,47 @@ function _parametric_constant(
758783 f:: ParametricVectorQuadraticFunction{T} ,
759784) where {T}
760785 param_constant = f. c
761-
786+
762787 # Add contributions from parameter terms in affine part
763788 for term in vector_affine_parameter_terms (f)
764789 param_constant[term. output_index] +=
765790 term. scalar_term. coefficient *
766791 model. parameters[p_idx (term. scalar_term. variable)]
767792 end
768-
793+
769794 # Add contributions from parameter-parameter quadratic terms
770795 for term in vector_quadratic_parameter_parameter_terms (f)
771796 idx = term. output_index
772- coef = term. scalar_term. coefficient /
797+ coef =
798+ term. scalar_term. coefficient /
773799 (term. scalar_term. variable_1 == term. scalar_term. variable_2 ? 2 : 1 )
774- param_constant[idx] += coef *
800+ param_constant[idx] +=
801+ coef *
775802 model. parameters[p_idx (term. scalar_term. variable_1)] *
776803 model. parameters[p_idx (term. scalar_term. variable_2)]
777804 end
778-
805+
779806 return param_constant
780807end
781808
782809function _current_function (f:: ParametricVectorQuadraticFunction{T} ) where {T}
783810 affine_terms = MOI. VectorAffineTerm{T}[]
784811 sizehint! (affine_terms, length (f. current_constant) + length (f. v))
785812 for ((var, idx), coef) in f. current_terms_with_p
786- push! (affine_terms, MOI. VectorAffineTerm {T} (idx, MOI. ScalarAffineTerm {T} (coef, var)))
813+ push! (
814+ affine_terms,
815+ MOI. VectorAffineTerm {T} (idx, MOI. ScalarAffineTerm {T} (coef, var)),
816+ )
787817 end
788818 for ((var, idx), coef) in f. affine_data_np
789- push! (affine_terms, MOI. VectorAffineTerm {T} (idx, MOI. ScalarAffineTerm {T} (coef, var)))
819+ push! (
820+ affine_terms,
821+ MOI. VectorAffineTerm {T} (idx, MOI. ScalarAffineTerm {T} (coef, var)),
822+ )
790823 end
791824 return MOI. VectorQuadraticFunction {T} (
792825 f. vv,
793826 affine_terms,
794827 f. current_constant,
795828 )
796829end
797-
0 commit comments