@@ -284,6 +284,7 @@ function DiffEqBase.OptimizationProblem{iip}(sys::OptimizationSystem, u0map,
284284 linenumbers = true , parallel = SerialForm (),
285285 eval_expression = false , eval_module = @__MODULE__ ,
286286 use_union = false ,
287+ checks = true ,
287288 kwargs... ) where {iip}
288289 if ! iscomplete (sys)
289290 error (" A completed `OptimizationSystem` is required. Call `complete` or `structural_simplify` on the system before creating a `OptimizationProblem`" )
@@ -393,12 +394,17 @@ function DiffEqBase.OptimizationProblem{iip}(sys::OptimizationSystem, u0map,
393394 observedfun = ObservedFunctionCache (sys; eval_expression, eval_module)
394395
395396 if length (cstr) > 0
396- @named cons_sys = ConstraintsSystem (cstr, dvs, ps)
397+ @named cons_sys = ConstraintsSystem (cstr, dvs, ps; checks )
397398 cons_sys = complete (cons_sys)
398399 cons, lcons_, ucons_ = generate_function (cons_sys, checkbounds = checkbounds,
399400 linenumbers = linenumbers,
400401 expression = Val{true })
401- cons = eval_or_rgf .(cons; eval_expression, eval_module)
402+ cons = let (cons_oop, cons_iip) = eval_or_rgf .(cons; eval_expression, eval_module)
403+ _cons (u, p) = cons_oop (u, p)
404+ _cons (resid, u, p) = cons_iip (resid, u, p)
405+ _cons (u, p:: MTKParameters ) = cons_oop (u, p... )
406+ _cons (resid, u, p:: MTKParameters ) = cons_iip (resid, u, p... )
407+ end
402408 if cons_j
403409 _cons_j = let (cons_jac_oop, cons_jac_iip) = eval_or_rgf .(
404410 generate_jacobian (cons_sys;
@@ -464,7 +470,7 @@ function DiffEqBase.OptimizationProblem{iip}(sys::OptimizationSystem, u0map,
464470 grad = _grad,
465471 hess = _hess,
466472 hess_prototype = hess_prototype,
467- cons = cons[ 2 ] ,
473+ cons = cons,
468474 cons_j = _cons_j,
469475 cons_h = _cons_h,
470476 cons_jac_prototype = cons_jac_prototype,
0 commit comments