1- #include " mpc_common.hpp"
2- #include " qp_problem.hpp"
31#include " full_condensing.hpp"
42
53full_condensing_workspace& full_condensing_workspace::init (model_size& size)
@@ -36,19 +34,22 @@ full_condensing_workspace& full_condensing_workspace::full_condensing(model_size
3634
3735 int idx = N*nbg+nbgN;
3836
39- int i,j;
37+ int i, j;
4038
4139 /* compute G */
42- for (i=0 ;i<N;i++){
40+ for (i=0 ; i<N; i++)
41+ {
4342 G.block (i*nx,i*nu,nx,nu) = qp.data .B .block (0 ,i*nu,nx,nu);
44- for (j=i+1 ;j<N;j++)
43+ for (j=i+1 ; j<N; j++)
4544 G.block (j*nx,i*nu,nx,nu) = qp.data .A .block (0 ,j*nx,nx,nx) * G.block ((j-1 )*nx,i*nu,nx,nu);
4645 }
4746
4847 /* Compute Hc */
49- for (i=0 ;i<N;i++){
48+ for (i=0 ; i<N; i++)
49+ {
5050 W = qp.data .Q .block (0 ,N*nx,nx,nx) * G.block ((N-1 )*nx,i*nu,nx,nu);
51- for (j=N-1 ;j>i;j--){
51+ for (j=N-1 ; j>i; j--)
52+ {
5253 Hc.block (j*nu,i*nu,nu,nu) = qp.data .S .block (0 ,j*nu,nx,nu).transpose () * G.block ((j-1 )*nx,i*nu,nx,nu) + qp.data .B .block (0 ,j*nu,nx,nu).transpose () * W;
5354 W = qp.data .Q .block (0 ,j*nx,nx,nx) * G.block ((j-1 )*nx,i*nu,nx,nu) + qp.data .A .block (0 ,j*nx,nx,nx).transpose () * W;
5455 Hc.block (i*nu,j*nu,nu,nu) = Hc.block (j*nu,i*nu,nu,nu).transpose ();
@@ -57,66 +58,70 @@ full_condensing_workspace& full_condensing_workspace::full_condensing(model_size
5758 }
5859
5960 /* Compute Ccg */
60- if (nbg>0 ){
61- for (i=0 ;i<N;i++){
61+ if (nbg > 0 )
62+ for (i=0 ; i<N; i++)
63+ {
6264 Cc.block (i*nbg,i*nu,nbg,nu) = qp.data .Cgu .block (0 ,i*nu,nbg,nu);
63- for (j=i+1 ;j<N;j++){
65+ for (j=i+1 ; j<N; j++)
6466 Cc.block (j*nbg,i*nu,nbg,nu) = qp.data .Cgx .block (0 ,j*nx,nbg,nx)*G.block ((j-1 )*nx,i*nu,nx,nu);
65- }
6667 }
67- }
68+
6869 /* Compute CcN */
69- if (nbgN>0 ){
70- for (i=0 ;i<N;i++){
70+ if (nbgN > 0 )
71+ for (i=0 ; i<N; i++)
72+ {
7173 Cc.block (N*nbg,i*nu,nbgN,nu) = qp.data .CgN * G.block ((N-1 )*nx,i*nu,nx,nu);
7274 }
73- }
7475
7576 /* Compute Ccx */
76- if (nbx>0 ){
77- for (i=0 ;i<N;i++){
77+ if (nbx > 0 )
78+ for (i=0 ; i<N; i++)
79+ {
7880 for (j=i+1 ;j<=N;j++)
7981 Cc.block (idx+(j-1 )*nbx,i*nu,nbx,nu) = qp.data .Cx * G.block ((j-1 )*nx,i*nu,nx,nu);
8082
8183 }
82- }
8384
8485 /* compute L */
8586 L.head (nx) = x0 - qp.in .x .col (0 );
86- for (i=0 ;i<N;i++){
87+ for (i=0 ; i<N; i++)
88+ {
8789 L.segment ((i+1 )*nx,nx) = qp.data .A .block (0 ,i*nx,nx,nx)*L.segment (i*nx,nx) + qp.data .a .col (i);
8890 }
8991
9092 /* compute gc */
9193 w = qp.data .gx .col (N) + qp.data .Q .block (0 ,N*nx,nx,nx) * L.tail (nx);
92- for (i=N-1 ;i>0 ;i--){
94+ for (i=N-1 ; i>0 ; i--)
95+ {
9396 gc.segment (i*nu,nu) = qp.data .gu .col (i) + qp.data .S .block (0 ,i*nu,nx,nu).transpose ()*L.segment (i*nx,nx) + qp.data .B .block (0 ,i*nu,nx,nu).transpose ()*w;
9497 w = qp.data .gx .col (i) + qp.data .Q .block (0 ,i*nx,nx,nx)*L.segment (i*nx,nx) + qp.data .A .block (0 ,i*nx,nx,nx).transpose ()*w;
9598 }
9699 gc.head (nu) = qp.data .gu .col (0 ) + qp.data .S .leftCols (nu).transpose ()*L.head (nx) + qp.data .B .leftCols (nu).transpose ()*w;
97100
98101 /* Compute cc */
99- if (nbg>0 ){
100- for (i=0 ;i<N;i++){
102+ if (nbg > 0 )
103+ for (i=0 ; i<N; i++)
104+ {
101105 lcc.segment (i*nbg,nbg) = qp.data .Cgx .block (0 ,i*nx,nbg,nx)*L.segment (i*nx,nx);
102106 ucc.segment (i*nbg,nbg) = qp.data .ub_g .segment (i*nbg,nbg) - lcc.segment (i*nbg,nbg);
103- lcc.segment (i*nbg,nbg) = qp.data .lb_u .segment (i*nbg,nbg) - lcc.segment (i*nbg,nbg);
107+ lcc.segment (i*nbg,nbg) = qp.data .lb_g .segment (i*nbg,nbg) - lcc.segment (i*nbg,nbg);
104108 }
105- }
109+
106110 /* Compute ccN */
107- if (nbgN>0 ){
111+ if (nbgN > 0 )
112+ {
108113 lcc.segment (N*nbg,nbgN) = qp.data .CgN * L.tail (nx);
109- ucc.segment (N*nbg,nbgN) = qp.data .ub_u .segment (N*nbg,nbgN) - lcc.segment (N*nbg,nbgN);
110- lcc.segment (N*nbg,nbgN) = qp.data .lb_u .segment (N*nbg,nbgN) - lcc.segment (N*nbg,nbgN);
114+ ucc.segment (N*nbg,nbgN) = qp.data .ub_g .segment (N*nbg,nbgN) - lcc.segment (N*nbg,nbgN);
115+ lcc.segment (N*nbg,nbgN) = qp.data .lb_g .segment (N*nbg,nbgN) - lcc.segment (N*nbg,nbgN);
111116 }
112- /* Compute ccx */
113- if (nbx>0 ){
114- for (i=0 ;i<N;i++){
117+
118+ if (nbx > 0 )
119+ for (i=0 ; i<N; i++)
120+ {
115121 lcc.segment (idx+i*nbx,nbx) = qp.data .Cx * L.segment ((i+1 )*nx,nx);
116122 ucc.segment (idx+i*nbx,nbx) = qp.data .ub_x .segment (i*nbx,nbx) - lcc.segment (idx+i*nbx,nbx);
117123 lcc.segment (idx+i*nbx,nbx) = qp.data .lb_x .segment (i*nbx,nbx) - lcc.segment (idx+i*nbx,nbx);
118124 }
119- }
120125
121126 return *this ;
122127}
0 commit comments