@@ -74,7 +74,18 @@ function nlp_model(moimodel::MOI.ModelLike; hessian::Bool = true, name::String =
7474 hess_available = hessian && oracles. hessian_oracles_supported,
7575 )
7676
77- return MathOptNLPModel (meta, nlp_data. evaluator, lincon, quadcon, nlcon, oracles, λ, hv, obj, counters),
77+ return MathOptNLPModel (
78+ meta,
79+ nlp_data. evaluator,
80+ lincon,
81+ quadcon,
82+ nlcon,
83+ oracles,
84+ λ,
85+ hv,
86+ obj,
87+ counters,
88+ ),
7889 index_map
7990end
8091
@@ -133,7 +144,7 @@ function NLPModels.cons_nln!(nlp::MathOptNLPModel, x::AbstractVector, c::Abstrac
133144 end
134145 if nlp. oracles. ncon > 0
135146 for (f, s) in nlp. oracles. oracles
136- for i in 1 : s. set. input_dimension
147+ for i = 1 : s. set. input_dimension
137148 s. x[i] = x[f. variables[i]. value]
138149 end
139150 index_oracle = (offset + 1 ): (offset + s. set. output_dimension)
@@ -157,7 +168,8 @@ function NLPModels.cons!(nlp::MathOptNLPModel, x::AbstractVector, c::AbstractVec
157168 offset += nlp. quadcon. nquad
158169 for i = 1 : (nlp. quadcon. nquad)
159170 qcon = nlp. quadcon. constraints[i]
160- c[nlp. meta. nlin + i] = 0.5 * coo_sym_dot (qcon. A. rows, qcon. A. cols, qcon. A. vals, x, x) + dot (qcon. b, x)
171+ c[nlp. meta. nlin + i] =
172+ 0.5 * coo_sym_dot (qcon. A. rows, qcon. A. cols, qcon. A. vals, x, x) + dot (qcon. b, x)
161173 end
162174 end
163175 if nlp. nlcon. nnln > 0
@@ -167,7 +179,7 @@ function NLPModels.cons!(nlp::MathOptNLPModel, x::AbstractVector, c::AbstractVec
167179 end
168180 if nlp. oracles. ncon > 0
169181 for (f, s) in nlp. oracles. oracles
170- for i in 1 : s. set. input_dimension
182+ for i = 1 : s. set. input_dimension
171183 s. x[i] = x[f. variables[i]. value]
172184 end
173185 index_oracle = (offset + 1 ): (offset + s. set. output_dimension)
@@ -209,7 +221,7 @@ function NLPModels.jac_nln_structure!(
209221 end
210222 @assert offset == nlp. quadcon. nnzj
211223 if nlp. nlcon. nnln > 0
212- # non-oracle nonlinear constraints
224+ # non-oracle nonlinear constraints
213225 ind_nnln = (offset + 1 ): (offset + nlp. nlcon. nnzj)
214226 view (rows, ind_nnln) .= nlp. quadcon. nquad .+ nlp. nlcon. jac_rows
215227 view (cols, ind_nnln) .= nlp. nlcon. jac_cols
@@ -320,7 +332,7 @@ function NLPModels.jac_nln_coord!(nlp::MathOptNLPModel, x::AbstractVector, vals:
320332 end
321333 if nlp. oracles. ncon > 0
322334 for (f, s) in nlp. oracles. oracles
323- for i in 1 : s. set. input_dimension
335+ for i = 1 : s. set. input_dimension
324336 s. x[i] = x[f. variables[i]. value]
325337 end
326338 nnzj_oracle = length (s. set. jacobian_structure)
@@ -371,7 +383,7 @@ function NLPModels.jac_coord!(nlp::MathOptNLPModel, x::AbstractVector, vals::Abs
371383 end
372384 if nlp. oracles. ncon > 0
373385 for (f, s) in nlp. oracles. oracles
374- for i in 1 : s. set. input_dimension
386+ for i = 1 : s. set. input_dimension
375387 s. x[i] = x[f. variables[i]. value]
376388 end
377389 nnzj_oracle = length (s. set. jacobian_structure)
@@ -421,12 +433,14 @@ function NLPModels.jprod_nln!(
421433 MOI. eval_constraint_jacobian_product (nlp. eval, view (Jv, ind_nnln), x, v)
422434 end
423435 if nlp. oracles. ncon > 0
424- for i in (nlp. quadcon. nquad + nlp. nlcon. nnln + 1 ): (nlp. quadcon. nquad + nlp. nlcon. nnln + nlp. oracles. ncon)
436+ for i =
437+ (nlp. quadcon. nquad + nlp. nlcon. nnln + 1 ): (nlp. quadcon. nquad + nlp. nlcon. nnln + nlp. oracles. ncon)
438+
425439 Jv[i] = 0
426440 end
427441 row_offset = nlp. quadcon. nquad + nlp. nlcon. nnln
428442 for (f, s) in nlp. oracles. oracles
429- for i in 1 : s. set. input_dimension
443+ for i = 1 : s. set. input_dimension
430444 s. x[i] = x[f. variables[i]. value]
431445 end
432446 s. set. eval_jacobian (s. nzJ, s. x)
@@ -472,16 +486,17 @@ function NLPModels.jprod!(
472486 end
473487 end
474488 if nlp. nlcon. nnln > 0
475- ind_nnln = (nlp. meta. nlin + nlp. quadcon. nquad + 1 ): (nlp. meta. nlin + nlp. quadcon. nquad + nlp. nlcon. nnln)
489+ ind_nnln =
490+ (nlp. meta. nlin + nlp. quadcon. nquad + 1 ): (nlp. meta. nlin + nlp. quadcon. nquad + nlp. nlcon. nnln)
476491 MOI. eval_constraint_jacobian_product (nlp. eval, view (Jv, ind_nnln), x, v)
477492 end
478493 if nlp. oracles. ncon > 0
479- for i in (nlp. meta. nlin + nlp. quadcon. nquad + nlp. nlcon. nnln + 1 ): (nlp. meta. ncon)
494+ for i = (nlp. meta. nlin + nlp. quadcon. nquad + nlp. nlcon. nnln + 1 ): (nlp. meta. ncon)
480495 Jv[i] = 0
481496 end
482497 row_offset = nlp. meta. nlin + nlp. quadcon. nquad + nlp. nlcon. nnln
483498 for (f, s) in nlp. oracles. oracles
484- for i in 1 : s. set. input_dimension
499+ for i = 1 : s. set. input_dimension
485500 s. x[i] = x[f. variables[i]. value]
486501 end
487502 s. set. eval_jacobian (s. nzJ, s. x)
@@ -539,7 +554,7 @@ function NLPModels.jtprod_nln!(
539554 if nlp. oracles. ncon > 0
540555 row_offset = nlp. quadcon. nquad + nlp. nlcon. nnln
541556 for (f, s) in nlp. oracles. oracles
542- for i in 1 : s. set. input_dimension
557+ for i = 1 : s. set. input_dimension
543558 s. x[i] = x[f. variables[i]. value]
544559 end
545560 s. set. eval_jacobian (s. nzJ, s. x)
@@ -564,7 +579,8 @@ function NLPModels.jtprod!(
564579)
565580 increment! (nlp, :neval_jtprod )
566581 if nlp. nlcon. nnln > 0
567- ind_nnln = (nlp. meta. nlin + nlp. quadcon. nquad + 1 ): (nlp. meta. nlin + nlp. quadcon. nquad + nlp. nlcon. nnln)
582+ ind_nnln =
583+ (nlp. meta. nlin + nlp. quadcon. nquad + 1 ): (nlp. meta. nlin + nlp. quadcon. nquad + nlp. nlcon. nnln)
568584 MOI. eval_constraint_jacobian_transpose_product (nlp. eval, Jtv, x, view (v, ind_nnln))
569585 end
570586 (nlp. nlcon. nnln == 0 ) && (Jtv .= 0.0 )
@@ -590,7 +606,7 @@ function NLPModels.jtprod!(
590606 if nlp. oracles. ncon > 0
591607 row_offset = nlp. meta. nlin + nlp. quadcon. nquad + nlp. nlcon. nnln
592608 for (f, s) in nlp. oracles. oracles
593- for i in 1 : s. set. input_dimension
609+ for i = 1 : s. set. input_dimension
594610 s. x[i] = x[f. variables[i]. value]
595611 end
596612 s. set. eval_jacobian (s. nzJ, s. x)
@@ -612,7 +628,8 @@ function NLPModels.hess_structure!(
612628 rows:: AbstractVector{<:Integer} ,
613629 cols:: AbstractVector{<:Integer} ,
614630)
615- nlp. meta. hess_available || error (" The function hess_structure! is not supported by this MathOptNLPModel." )
631+ nlp. meta. hess_available ||
632+ error (" The function hess_structure! is not supported by this MathOptNLPModel." )
616633 if nlp. obj. type == " QUADRATIC"
617634 view (rows, 1 : (nlp. obj. nnzh)) .= nlp. obj. hessian. rows
618635 view (cols, 1 : (nlp. obj. nnzh)) .= nlp. obj. hessian. cols
@@ -650,7 +667,8 @@ function NLPModels.hess_coord!(
650667 vals:: AbstractVector ;
651668 obj_weight:: Float64 = 1.0 ,
652669)
653- nlp. meta. hess_available || error (" The function hess_coord! is not supported by this MathOptNLPModel." )
670+ nlp. meta. hess_available ||
671+ error (" The function hess_coord! is not supported by this MathOptNLPModel." )
654672 increment! (nlp, :neval_hess )
655673
656674 # 1. Quadratic objective block (if any)
@@ -661,16 +679,12 @@ function NLPModels.hess_coord!(
661679 # 2. Nonlinear block (objective + JuMP @NLconstraint)
662680 if (nlp. obj. type == " NONLINEAR" ) || (nlp. nlcon. nnln > 0 )
663681 # Multipliers for the JuMP nonlinear constraints (not the oracles)
664- ind_nnln = (nlp. meta. nlin + nlp. quadcon. nquad + 1 ): (nlp. meta. nlin + nlp. quadcon. nquad + nlp. nlcon. nnln)
682+ ind_nnln =
683+ (nlp. meta. nlin + nlp. quadcon. nquad + 1 ): (nlp. meta. nlin + nlp. quadcon. nquad + nlp. nlcon. nnln)
665684 λ_nnln = view (y, ind_nnln)
666- ind_nnzh = (nlp. obj. nnzh + nlp. quadcon. nnzh + 1 ): (nlp. obj. nnzh + nlp. quadcon. nnzh + nlp. nlcon. nnzh)
667- MOI. eval_hessian_lagrangian (
668- nlp. eval,
669- view (vals, ind_nnzh),
670- x,
671- obj_weight,
672- λ_nnln,
673- )
685+ ind_nnzh =
686+ (nlp. obj. nnzh + nlp. quadcon. nnzh + 1 ): (nlp. obj. nnzh + nlp. quadcon. nnzh + nlp. nlcon. nnzh)
687+ MOI. eval_hessian_lagrangian (nlp. eval, view (vals, ind_nnzh), x, obj_weight, λ_nnln)
674688 end
675689
676690 # 3. Quadratic constraint Hessian blocks
@@ -691,7 +705,7 @@ function NLPModels.hess_coord!(
691705
692706 for (f, s) in nlp. oracles. oracles
693707 # build local x for this oracle
694- for i in 1 : s. set. input_dimension
708+ for i = 1 : s. set. input_dimension
695709 s. x[i] = x[f. variables[i]. value]
696710 end
697711
@@ -719,7 +733,8 @@ function NLPModels.hess_coord!(
719733 vals:: AbstractVector ;
720734 obj_weight:: Float64 = 1.0 ,
721735)
722- nlp. meta. hess_available || error (" The function hess_coord! is not supported by this MathOptNLPModel." )
736+ nlp. meta. hess_available ||
737+ error (" The function hess_coord! is not supported by this MathOptNLPModel." )
723738 increment! (nlp, :neval_hess )
724739 if nlp. obj. type == " LINEAR"
725740 vals .= 0.0
@@ -731,7 +746,8 @@ function NLPModels.hess_coord!(
731746 if nlp. obj. type == " NONLINEAR"
732747 view (vals, 1 : (nlp. obj. nnzh + nlp. quadcon. nnzh)) .= 0.0
733748 view (vals, (nlp. obj. nnzh + nlp. quadcon. nnzh + nlp. nlcon. nnzh + 1 ): (nlp. meta. nnzh)) .= 0.0
734- ind_nnln = (nlp. obj. nnzh + nlp. quadcon. nnzh + 1 ): (nlp. obj. nnzh + nlp. quadcon. nnzh + nlp. nlcon. nnzh)
749+ ind_nnln =
750+ (nlp. obj. nnzh + nlp. quadcon. nnzh + 1 ): (nlp. obj. nnzh + nlp. quadcon. nnzh + nlp. nlcon. nnzh)
735751 MOI. eval_hessian_lagrangian (nlp. eval, view (vals, ind_nnln), x, obj_weight, nlp. λ)
736752 end
737753 return vals
@@ -743,7 +759,8 @@ function NLPModels.jth_hess_coord!(
743759 j:: Integer ,
744760 vals:: AbstractVector ,
745761)
746- nlp. meta. hess_available || error (" The function jth_hess_coord! is not supported by this MathOptNLPModel." )
762+ nlp. meta. hess_available ||
763+ error (" The function jth_hess_coord! is not supported by this MathOptNLPModel." )
747764 increment! (nlp, :neval_jhess )
748765 @rangecheck 1 nlp. meta. ncon j
749766 vals .= 0.0
@@ -764,13 +781,7 @@ function NLPModels.jth_hess_coord!(
764781 if nlp. meta. nlin + nlp. quadcon. nquad + 1 ≤ j ≤ nlp. meta. nlin + nlp. quadcon. nquad + nlp. nlcon. nnln
765782 nlp. λ[j - nlp. meta. nlin - nlp. quadcon. nquad] = 1.0
766783 index_nnzh = (nlp. obj. nnzh + nlp. quadcon. nnzh + 1 ): (nlp. meta. nnzh)
767- MOI. eval_hessian_lagrangian (
768- nlp. eval,
769- view (vals, index_nnzh),
770- x,
771- 0.0 ,
772- nlp. λ,
773- )
784+ MOI. eval_hessian_lagrangian (nlp. eval, view (vals, index_nnzh), x, 0.0 , nlp. λ)
774785 nlp. λ[j - nlp. meta. nlin - nlp. quadcon. nquad] = 0.0
775786 end
776787
@@ -786,18 +797,14 @@ function NLPModels.jth_hess_coord!(
786797 if offset_λ + 1 ≤ j ≤ offset_λ + s. set. output_dimension
787798 find_oracle = true
788799 # build local x
789- for i in 1 : s. set. input_dimension
800+ for i = 1 : s. set. input_dimension
790801 s. x[i] = x[f. variables[i]. value]
791802 end
792803 # We could preallocate the vector in the structure nlp
793804 λ_oracle = zeros (Float64, s. set. output_dimension)
794805 λ_oracle[j - offset_λ] = 1.0
795806 index_nnzh = (offset_nnzh + 1 ): (offset_nnzh + nnzh_oracle)
796- s. set. eval_hessian_lagrangian (
797- view (vals, index_nnzh),
798- s. x,
799- λ_oracle,
800- )
807+ s. set. eval_hessian_lagrangian (view (vals, index_nnzh), s. x, λ_oracle)
801808 else
802809 offset_λ += ncon_oracle
803810 offset_nnzh += nnzh_oracle
@@ -822,7 +829,8 @@ function NLPModels.hprod!(
822829 hv .= 0.0
823830 end
824831 if (nlp. obj. type == " NONLINEAR" ) || (nlp. nlcon. nnln > 0 )
825- ind_nnln = (nlp. meta. nlin + nlp. quadcon. nquad + 1 ): (nlp. meta. nlin + nlp. quadcon. nquad + nlp. nlcon. nnln)
832+ ind_nnln =
833+ (nlp. meta. nlin + nlp. quadcon. nquad + 1 ): (nlp. meta. nlin + nlp. quadcon. nquad + nlp. nlcon. nnln)
826834 λ = view (y, ind_nnln)
827835 MOI. eval_hessian_lagrangian_product (nlp. eval, hv, x, v, obj_weight, λ)
828836 end
@@ -848,7 +856,7 @@ function NLPModels.hprod!(
848856 (nlp. obj. type == " LINEAR" ) && (nlp. meta. nnln == nlp. oracles. ncon) && (hv .= 0.0 )
849857 offset_y = nlp. meta. nlin + nlp. quadcon. nquad + nlp. nlcon. nnln
850858 for (f, s) in nlp. oracles. oracles
851- for i in 1 : s. set. input_dimension
859+ for i = 1 : s. set. input_dimension
852860 s. x[i] = x[f. variables[i]. value]
853861 end
854862 ind_y = (offset_y + 1 ): (offset_y + s. set. output_dimension)
@@ -906,14 +914,17 @@ function NLPModels.jth_hprod!(
906914 j:: Integer ,
907915 hv:: AbstractVector ,
908916)
909- nlp. meta. hprod_available || error (" The function jth_hprod! is not supported by this MathOptNLPModel." )
917+ nlp. meta. hprod_available ||
918+ error (" The function jth_hprod! is not supported by this MathOptNLPModel." )
910919 increment! (nlp, :neval_jhprod )
911920 @rangecheck 1 nlp. meta. ncon j
912921 hv .= 0.0
913922 if nlp. meta. nlin + 1 ≤ j ≤ nlp. meta. nlin + nlp. quadcon. nquad
914923 qcon = nlp. quadcon. constraints[j - nlp. meta. nlin]
915924 coo_sym_add_mul! (qcon. A. rows, qcon. A. cols, qcon. A. vals, v, hv, 1.0 )
916- elseif nlp. meta. nlin + nlp. quadcon. nquad + 1 ≤ j ≤ nlp. meta. nlin + nlp. quadcon. nquad + nlp. nlcon. nnln
925+ elseif nlp. meta. nlin + nlp. quadcon. nquad + 1 ≤
926+ j ≤
927+ nlp. meta. nlin + nlp. quadcon. nquad + nlp. nlcon. nnln
917928 nlp. λ[j - nlp. meta. nlin - nlp. quadcon. nquad] = 1.0
918929 MOI. eval_hessian_lagrangian_product (nlp. eval, hv, x, v, 0.0 , nlp. λ)
919930 nlp. λ[j - nlp. meta. nlin - nlp. quadcon. nquad] = 0.0
@@ -925,17 +936,13 @@ function NLPModels.jth_hprod!(
925936 if offset_λ + 1 ≤ j ≤ offset_λ + s. set. output_dimension
926937 find_oracle = true
927938 # build local x
928- for i in 1 : s. set. input_dimension
939+ for i = 1 : s. set. input_dimension
929940 s. x[i] = x[f. variables[i]. value]
930941 end
931942 # We could preallocate the vector in the structure nlp
932943 λ_oracle = zeros (Float64, s. set. output_dimension)
933944 λ_oracle[j - offset_λ] = 1.0
934- s. set. eval_hessian_lagrangian (
935- s. nzH,
936- s. x,
937- λ_oracle,
938- )
945+ s. set. eval_hessian_lagrangian (s. nzH, s. x, λ_oracle)
939946 k = 0
940947 for (r, c) in s. set. hessian_lagrangian_structure
941948 k += 1
@@ -962,7 +969,8 @@ function NLPModels.ghjvprod!(
962969 v:: AbstractVector ,
963970 ghv:: AbstractVector ,
964971)
965- nlp. meta. hprod_available || error (" The function ghjvprod! is not supported by this MathOptNLPModel." )
972+ nlp. meta. hprod_available ||
973+ error (" The function ghjvprod! is not supported by this MathOptNLPModel." )
966974 increment! (nlp, :neval_hprod )
967975 ghv .= 0.0
968976 for i = (nlp. meta. nlin + 1 ): (nlp. meta. nlin + nlp. quadcon. nquad)
0 commit comments