@@ -36,16 +36,14 @@ function build_OCP_solution(docp, docp_solution)
3636 DOCP_constraints! (constraints, solution, docp)
3737
3838 # costate and constraints multipliers
39- P, path_constraints, boundary_constraints, path_constraints_dual, boundary_constraints_dual = parse_DOCP_solution_dual (docp, docp_solution. multipliers, constraints )
39+ P, path_constraints_dual, boundary_constraints_dual = parse_DOCP_solution_dual (docp, docp_solution. multipliers)
4040
4141 return CTModels. build_solution (
4242 ocp,
4343 T, X, U, v, P;
4444 objective= objective, iterations= iterations, constraints_violation= constraints_violation,
4545 message= message, stopping= stopping, success= success,
46- path_constraints= path_constraints,
4746 path_constraints_dual= path_constraints_dual,
48- boundary_constraints= boundary_constraints,
4947 boundary_constraints_dual= boundary_constraints_dual,
5048 state_constraints_lb_dual= box_multipliers[1 ],
5149 state_constraints_ub_dual= box_multipliers[2 ],
@@ -114,16 +112,14 @@ function build_OCP_solution(docp; primal, dual=nothing, mult_LB=nothing, mult_UB
114112 DOCP_constraints! (constraints, solution, docp)
115113
116114 # costate and constraints multipliers
117- P, path_constraints, boundary_constraints, path_constraints_dual, boundary_constraints_dual = parse_DOCP_solution_dual (docp, dual, constraints )
115+ P, path_constraints_dual, boundary_constraints_dual = parse_DOCP_solution_dual (docp, dual)
118116
119117 return CTModels. build_solution (
120118 ocp,
121119 T, X, U, v, P;
122120 objective= objective, iterations= iterations, constraints_violation= constraints_violation,
123121 message= message, stopping= stopping, success= success,
124- path_constraints= path_constraints,
125122 path_constraints_dual= path_constraints_dual,
126- boundary_constraints= boundary_constraints,
127123 boundary_constraints_dual= boundary_constraints_dual,
128124 state_constraints_lb_dual= box_multipliers[1 ],
129125 state_constraints_ub_dual= box_multipliers[2 ],
@@ -196,7 +192,7 @@ $(TYPEDSIGNATURES)
196192
197193Recover OCP costate and constraints multipliers from DOCP multipliers
198194"""
199- function parse_DOCP_solution_dual (docp, multipliers, constraints )
195+ function parse_DOCP_solution_dual (docp, multipliers)
200196
201197 # if called with multipliers = nothing, fill with zeros
202198 if isnothing (multipliers)
@@ -206,47 +202,38 @@ function parse_DOCP_solution_dual(docp, multipliers, constraints)
206202 # costate
207203 N = docp. time. steps
208204 P = zeros (N, docp. dims. NLP_x)
209- ocp = docp. ocp
210205
211- # constraints
206+ # dimensions
212207 dpc = docp. dims. path_cons
213208 dbc = docp. dims. boundary_cons
214- sol_path_constraints = zeros (N + 1 , dpc)
215- sol_boundary_constraints = zeros (dbc)
216209
217210 # constraints multipliers
218- mul_path_constraints = zeros (size (sol_path_constraints) )
219- mul_boundary_constraints = zeros (size (sol_boundary_constraints) )
211+ mul_path_constraints = zeros (N + 1 , dpc )
212+ mul_boundary_constraints = zeros (dbc )
220213
221214 # loop over time steps
222- i_c = 1
223215 i_m = 1
224216 for i = 1 : (N+ 1 )
225217
226218 # state equation multiplier for costate
227219 if i <= N
228220 P[i, :] = multipliers[i_m: (i_m+ docp. dims. NLP_x- 1 )]
229221 # skip state / stage constraints
230- i_c += docp. discretization. _state_stage_eqs_block
231222 i_m += docp. discretization. _state_stage_eqs_block
232223 end
233224
234225 # path constraints and multipliers
235226 if dpc > 0
236- sol_path_constraints[i, :] = constraints[i_c: (i_c+ dpc- 1 )]
237227 mul_path_constraints[i, :] = multipliers[i_m: (i_m+ dpc- 1 )]
238- i_c += dpc
239228 i_m += dpc
240229 end
241230 end
242231
243232 # pointwise constraints: boundary then variables
244233 if dbc > 0
245- sol_boundary_constraints[:] = constraints[i_c: (i_c+ dbc- 1 )]
246234 mul_boundary_constraints[:] = multipliers[i_m: (i_m+ dbc- 1 )]
247- i_c += dbc
248235 i_m += dbc
249236 end
250237
251- return P, sol_path_constraints, sol_boundary_constraints, mul_path_constraints, mul_boundary_constraints
238+ return P, mul_path_constraints, mul_boundary_constraints
252239end
0 commit comments