@@ -207,6 +207,7 @@ function DiffEqBase.OptimizationProblem{iip}(sys::OptimizationSystem, u0map,
207
207
lb = nothing , ub = nothing ,
208
208
grad = false ,
209
209
hess = false , sparse = false ,
210
+ cons_j = false , cons_h = false ,
210
211
checkbounds = false ,
211
212
linenumbers = true , parallel = SerialForm (),
212
213
use_union = false ,
@@ -308,9 +309,16 @@ function DiffEqBase.OptimizationProblem{iip}(sys::OptimizationSystem, u0map,
308
309
cons, lcons_, ucons_ = generate_function (cons_sys, checkbounds = checkbounds,
309
310
linenumbers = linenumbers,
310
311
expression = Val{false })
311
- cons_j = generate_jacobian (cons_sys; expression = Val{false }, sparse = sparse)[2 ]
312
- cons_h = generate_hessian (cons_sys; expression = Val{false }, sparse = sparse)[2 ]
313
-
312
+ if cons_j
313
+ _cons_j = generate_jacobian (cons_sys; expression = Val{false }, sparse = sparse)[2 ]
314
+ else
315
+ _cons_j = nothing
316
+ end
317
+ if cons_h
318
+ _cons_h = generate_hessian (cons_sys; expression = Val{false }, sparse = sparse)[2 ]
319
+ else
320
+ _cons_h = nothing
321
+ end
314
322
cons_expr = toexpr .(subs_constants (constraints (cons_sys)))
315
323
rep_pars_vals! .(cons_expr, Ref (pairs_arr))
316
324
@@ -344,8 +352,8 @@ function DiffEqBase.OptimizationProblem{iip}(sys::OptimizationSystem, u0map,
344
352
syms = Symbol .(states (sys)),
345
353
paramsyms = Symbol .(parameters (sys)),
346
354
cons = cons[2 ],
347
- cons_j = cons_j ,
348
- cons_h = cons_h ,
355
+ cons_j = _cons_j ,
356
+ cons_h = _cons_h ,
349
357
cons_jac_prototype = cons_jac_prototype,
350
358
cons_hess_prototype = cons_hess_prototype,
351
359
expr = obj_expr,
@@ -396,6 +404,7 @@ function OptimizationProblemExpr{iip}(sys::OptimizationSystem, u0,
396
404
lb = nothing , ub = nothing ,
397
405
grad = false ,
398
406
hess = false , sparse = false ,
407
+ cons_j = false , cons_h = false ,
399
408
checkbounds = false ,
400
409
linenumbers = false , parallel = SerialForm (),
401
410
use_union = false ,
@@ -477,8 +486,16 @@ function OptimizationProblemExpr{iip}(sys::OptimizationSystem, u0,
477
486
cons, lcons_, ucons_ = generate_function (cons_sys, checkbounds = checkbounds,
478
487
linenumbers = linenumbers,
479
488
expression = Val{false })
480
- cons_j = generate_jacobian (cons_sys; expression = Val{false }, sparse = sparse)[2 ]
481
- cons_h = generate_hessian (cons_sys; expression = Val{false }, sparse = sparse)[2 ]
489
+ if cons_j
490
+ _cons_j = generate_jacobian (cons_sys; expression = Val{false }, sparse = sparse)[2 ]
491
+ else
492
+ _cons_j = nothing
493
+ end
494
+ if cons_h
495
+ _cons_h = generate_hessian (cons_sys; expression = Val{false }, sparse = sparse)[2 ]
496
+ else
497
+ _cons_h = nothing
498
+ end
482
499
483
500
cons_expr = toexpr .(subs_constants (constraints (cons_sys)))
484
501
rep_pars_vals! .(cons_expr, Ref (pairs_arr))
@@ -517,8 +534,8 @@ function OptimizationProblemExpr{iip}(sys::OptimizationSystem, u0,
517
534
cons = $ cons[1 ]
518
535
lcons = $ lcons
519
536
ucons = $ ucons
520
- cons_j = $ cons_j
521
- cons_h = $ cons_h
537
+ cons_j = $ _cons_j
538
+ cons_h = $ _cons_h
522
539
syms = $ (Symbol .(states (sys)))
523
540
paramsyms = $ (Symbol .(parameters (sys)))
524
541
_f = OptimizationFunction {iip} (f, SciMLBase. NoAD ();
0 commit comments