@@ -440,17 +440,51 @@ function setconstraint!(
440440 size (V̂max) == (nym* He,) || throw (ArgumentError (" V̂max size must be $((nym* He,)) " ))
441441 con. V̂max[:] = V̂max
442442 end
443+ if ! isnothing (C_x̂min)
444+ size (C_x̂min) == (nX̂con,) || throw (ArgumentError (" C_x̂min size must be $((nX̂con,)) " ))
445+ any (C_x̂min .< 0 ) && error (" C_x̂min weights should be non-negative" )
446+ con. A_x̃min[end - nx̂+ 1 : end , end ] = - C_x̂min[1 : nx̂] # if C is finite : x̃ = [ϵ; x̂]
447+ con. C_x̂min[:] = C_x̂min[nx̂+ 1 : end ]
448+ size (con. A_X̂min) ≠ 0 && (con. A_X̂min[:, end ] = - con. C_x̂min) # for LinModel
449+ end
450+ if ! isnothing (C_x̂max)
451+ size (C_x̂max) == (nX̂con,) || throw (ArgumentError (" C_x̂max size must be $((nX̂con,)) " ))
452+ any (C_x̂max .< 0 ) && error (" C_x̂max weights should be non-negative" )
453+ con. A_x̃max[end - nx̂+ 1 : end , end ] = - C_x̂max[1 : nx̂] # if C is finite : x̃ = [ϵ; x̂]
454+ con. C_x̂max[:] = C_x̂max[nx̂+ 1 : end ]
455+ size (con. A_X̂max) ≠ 0 && (con. A_X̂max[:, end ] = - con. C_x̂max) # for LinModel
456+ end
457+ if ! isnothing (C_ŵmin)
458+ size (C_ŵmin) == (nŵ* He,) || throw (ArgumentError (" C_ŵmin size must be $((nŵ* He,)) " ))
459+ any (C_ŵmin .< 0 ) && error (" C_ŵmin weights should be non-negative" )
460+ con. A_Ŵmin[:, end ] = - C_ŵmin
461+ end
462+ if ! isnothing (C_ŵmax)
463+ size (C_ŵmax) == (nŵ* He,) || throw (ArgumentError (" C_ŵmax size must be $((nŵ* He,)) " ))
464+ any (C_ŵmax .< 0 ) && error (" C_ŵmax weights should be non-negative" )
465+ con. A_Ŵmax[:, end ] = - C_ŵmax
466+ end
467+ if ! isnothing (C_v̂min)
468+ size (C_v̂min) == (nym* He,) || throw (ArgumentError (" C_v̂min size must be $((nym* He,)) " ))
469+ any (C_v̂min .< 0 ) && error (" C_v̂min weights should be non-negative" )
470+ con. C_V̂min[:] = C_v̂min
471+ size (con. A_V̂min) ≠ 0 && (con. A_V̂min[:, end ] = - con. C_V̂min) # for LinModel
472+ end
473+ if ! isnothing (C_v̂max)
474+ size (C_v̂max) == (nym* He,) || throw (ArgumentError (" C_v̂max size must be $((nym* He,)) " ))
475+ any (C_v̂max .< 0 ) && error (" C_v̂max weights should be non-negative" )
476+ con. C_V̂max[:] = C_v̂max
477+ size (con. A_V̂max) ≠ 0 && (con. A_V̂max[:, end ] = - con. C_V̂max) # for LinModel
478+ end
443479 i_x̃min, i_x̃max = .! isinf .(con. x̃min) , .! isinf .(con. x̃max)
444480 i_X̂min, i_X̂max = .! isinf .(con. X̂min) , .! isinf .(con. X̂max)
445481 i_Ŵmin, i_Ŵmax = .! isinf .(con. Ŵmin) , .! isinf .(con. Ŵmax)
446482 i_V̂min, i_V̂max = .! isinf .(con. V̂min) , .! isinf .(con. V̂max)
447483 if notSolvedYet
448484 con. i_b[:], con. i_g[:], con. A[:] = init_matconstraint_mhe (model,
449485 i_x̃min, i_x̃max, i_X̂min, i_X̂max, i_Ŵmin, i_Ŵmax, i_V̂min, i_V̂max,
450- con. A_x̃min, con. A_x̃max,
451- con. A_X̂min, con. A_X̂max,
452- con. A_Ŵmin, con. A_Ŵmax,
453- con. A_V̂min, con. A_V̂max
486+ con. A_x̃min, con. A_x̃max, con. A_X̂min, con. A_X̂max,
487+ con. A_Ŵmin, con. A_Ŵmax, con. A_V̂min, con. A_V̂max
454488 )
455489 A = con. A[con. i_b, :]
456490 b = con. b[con. i_b]
0 commit comments