@@ -284,6 +284,7 @@ function DiffEqBase.OptimizationProblem{iip}(sys::OptimizationSystem, u0map,
284
284
linenumbers = true , parallel = SerialForm (),
285
285
eval_expression = false , eval_module = @__MODULE__ ,
286
286
use_union = false ,
287
+ checks = true ,
287
288
kwargs... ) where {iip}
288
289
if ! iscomplete (sys)
289
290
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,
393
394
observedfun = ObservedFunctionCache (sys; eval_expression, eval_module)
394
395
395
396
if length (cstr) > 0
396
- @named cons_sys = ConstraintsSystem (cstr, dvs, ps)
397
+ @named cons_sys = ConstraintsSystem (cstr, dvs, ps; checks )
397
398
cons_sys = complete (cons_sys)
398
399
cons, lcons_, ucons_ = generate_function (cons_sys, checkbounds = checkbounds,
399
400
linenumbers = linenumbers,
400
401
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
402
408
if cons_j
403
409
_cons_j = let (cons_jac_oop, cons_jac_iip) = eval_or_rgf .(
404
410
generate_jacobian (cons_sys;
@@ -464,7 +470,7 @@ function DiffEqBase.OptimizationProblem{iip}(sys::OptimizationSystem, u0map,
464
470
grad = _grad,
465
471
hess = _hess,
466
472
hess_prototype = hess_prototype,
467
- cons = cons[ 2 ] ,
473
+ cons = cons,
468
474
cons_j = _cons_j,
469
475
cons_h = _cons_h,
470
476
cons_jac_prototype = cons_jac_prototype,
0 commit comments