| 232 | | //set lq |
| 233 | | lq.rv = RV("u", 2, 0); |
| 234 | | lq.set_rvc(RV("x", 5, 0)); |
| 235 | | lq.horizon = rec_hor; |
| 236 | | |
| 237 | | Array<linfnEx> model(2); |
| 238 | | model(0).A = A; |
| 239 | | model(0).B = vec("0 0 0 0 0"); |
| 240 | | model(0).rv = RV("x", 5, 0); |
| 241 | | model(0).rv_ret = RV("x", 5, 1); |
| 242 | | model(1).A = B; |
| 243 | | model(1).B = vec("0 0"); |
| 244 | | model(1).rv = RV("u", 2, 0); |
| 245 | | model(1).rv_ret = RV("x", 5, 1); |
| 246 | | lq.Models = model; |
| 247 | | |
| 248 | | Array<quadraticfn> qloss(2); |
| 249 | | qloss(0).Q.setCh(Q); |
| 250 | | qloss(0).rv = RV("x", 5, 1); |
| 251 | | qloss(1).Q.setCh(R); |
| 252 | | qloss(1).rv = RV("u", 2, 0); |
| 253 | | lq.Losses = qloss; |
| 254 | | |
| 255 | | lq.finalLoss.Q.setCh(Q); |
| 256 | | lq.finalLoss.rv = RV("x", 5, 1); |
| 257 | | |
| 258 | | lq.validate(); |
| 259 | | |
| 260 | | uab.zeros(); |
| | 282 | void from_setting(const Setting &set){ |
| | 283 | PMSMCtrl::from_setting(set); |
| | 284 | UI::get(r,set, "r", UI::optional); |
| | 285 | UI::get(rec_hor,set, "h", UI::optional); |
| | 286 | } |
| | 287 | |
| | 288 | void validate(){ |
| | 289 | R(0,0)=R(1,1)=r; |
| | 290 | |
| | 291 | p_isa.set_length(rec_hor+1); |
| | 292 | p_isb.set_length(rec_hor+1); |
| | 293 | p_ome.set_length(rec_hor+1); |
| | 294 | p_the.set_length(rec_hor+1); |
| | 295 | |
| | 296 | Array<quadraticfn> qloss(2); |
| | 297 | qloss(0).Q.setCh(Q); |
| | 298 | qloss(0).rv = RV("x", 5, 1); |
| | 299 | qloss(1).Q.setCh(R); |
| | 300 | qloss(1).rv = RV("u", 2, 0); |
| | 301 | lq.Losses = qloss; |
| | 302 | |
| | 303 | //set lq |
| | 304 | lq.rv = RV("u", 2, 0); |
| | 305 | lq.set_rvc(RV("x", 5, 0)); |
| | 306 | lq.horizon = rec_hor; |
| | 307 | |
| | 308 | Array<linfnEx> model(2); |
| | 309 | model(0).A = A; |
| | 310 | model(0).B = vec("0 0 0 0 0"); |
| | 311 | model(0).rv = RV("x", 5, 0); |
| | 312 | model(0).rv_ret = RV("x", 5, 1); |
| | 313 | model(1).A = B; |
| | 314 | model(1).B = vec("0 0"); |
| | 315 | model(1).rv = RV("u", 2, 0); |
| | 316 | model(1).rv_ret = RV("x", 5, 1); |
| | 317 | lq.Models = model; |
| | 318 | |
| | 319 | lq.finalLoss.Q.setCh(Q); |
| | 320 | lq.finalLoss.rv = RV("x", 5, 1); |
| | 321 | |
| | 322 | lq.validate(); |
| | 323 | |
| | 324 | uab.zeros(); |
| | 325 | |
| | 326 | } |