| | 952 | lq.finalLoss.rv = RV("yt", 1, 0); |
| | 953 | |
| | 954 | lq.validate(); |
| | 955 | |
| | 956 | lq.resetTime(); |
| | 957 | lq.redesign(); |
| | 958 | |
| | 959 | for(int k = K-1; k > 0; k--){ |
| | 960 | //cout << "L: " << lq.getL() << endl; |
| | 961 | lq.redesign(); |
| | 962 | } |
| | 963 | |
| | 964 | cout << "L: " << lq.getL() << endl; |
| | 965 | } |
| | 966 | |
| | 967 | TEST (LQGU_181_ten){ |
| | 968 | /* v ????? .8189 |
| | 969 | y_t = 1.81 y_{t-1} -.9 y_{t-2} + .00438 u_t + .00468 u_{t-1} |
| | 970 | |
| | 971 | S = y^2 + u^2/1000 |
| | 972 | |
| | 973 | y_r = 0 :> u_t = -69.0908 y_{t-1} + 46.8955 y_{t-2} -0.2509 u_{t-1} |
| | 974 | y_r = 10 :> u_t = -69.0908 y_{t-1} + 46.8955 y_{t-2} -0.2509 u_{t-1} + 233.7581 |
| | 975 | */ |
| | 976 | |
| | 977 | int K = 150; |
| | 978 | //yr = 10.0; |
| | 979 | |
| | 980 | LQG_universal lq; |
| | 981 | lq.rv = RV("ut", 1, 0); |
| | 982 | RV rvc; |
| | 983 | rvc = RV("yt", 1, -1); |
| | 984 | rvc.add(RV("yt", 1, -2)); |
| | 985 | rvc.add(RV("ut", 1, -1)); |
| | 986 | rvc.add(RV("1", 1, 0)); |
| | 987 | lq.set_rvc(rvc); |
| | 988 | lq.horizon = K; |
| | 989 | |
| | 990 | Array<linfnEx> model(4); |
| | 991 | model(0).A = mat("1.81"); |
| | 992 | model(0).B = vec("0"); |
| | 993 | model(0).rv = RV("yt", 1, -1); |
| | 994 | model(0).rv_ret = RV("yt", 1, 0); |
| | 995 | model(1).A = mat("-0.8189"); |
| | 996 | model(1).B = vec("0"); |
| | 997 | model(1).rv = RV("yt", 1, -2); |
| | 998 | model(1).rv_ret = RV("yt", 1, 0); |
| | 999 | model(2).A = mat("0.00438"); |
| | 1000 | model(2).B = vec("0"); |
| | 1001 | model(2).rv = RV("ut", 1, 0); |
| | 1002 | model(2).rv_ret = RV("yt", 1, 0); |
| | 1003 | model(3).A = mat("0.00468"); |
| | 1004 | model(3).B = vec("0"); |
| | 1005 | model(3).rv = RV("ut", 1, -1); |
| | 1006 | model(3).rv_ret = RV("yt", 1, 0); |
| | 1007 | lq.Models = model; |
| | 1008 | |
| | 1009 | Array<quadraticfn> qloss(2); |
| | 1010 | qloss(0).Q.setCh(mat("1 -10")); |
| | 1011 | qloss(0).rv = RV("yt", 1, 0); |
| | 1012 | qloss(0).rv.add(RV("1", 1, 0)); |
| | 1013 | qloss(1).Q.setCh(mat("0.03162")); |
| | 1014 | qloss(1).rv = RV("ut", 1, 0); |
| | 1015 | lq.Losses = qloss; |
| | 1016 | |
| | 1017 | lq.finalLoss.Q.setCh(mat("0")); |