4.6 Numerical results
4.6.1 Random BVLS problems
This section describes the numerical results obtained in MATLAB by test- ing the proposed solver (Algorithm4.2) and various others on random BVLS problems, which are generated as explained in Appendix4.8.2. In order to test for numerical robustness and performance while deal- ing with ill-conditioned or nearly rank-deficient problems, the condition number of the A matrix is set to 108(≡ 1016for the Hessian of the equi- valent QP min
l≤x≤u 1 2x
>A>Ax − b>Ax).
The following solvers are considered for the numerical tests:
1. BVLS SP - Stark and Parker’s BVLS algorithm [20] implemented in embedded MATLAB (cf. Algorithm4.1);
2. RBVLS - proposed BVLS solver (Algorithm 4.2) coded in plain C without any external libraries and interfaced with MATLAB using a standard compiler in single and double precision;
3. BVLS2 - a variant of Algorithm4.2in which the number of ortho- gonalizations in QR update procedures is restricted to one for faster execution;
4. QPoases C - box-constrained variant of the open source QP solver QPOASES version 3.2.0 [50] with C backend and main setting reli- able, where we also enable settings that avoid additional computa- tional overhead while solving nearly rank-deficient problems; 5. OSQP - solver version 0.3.0 of the QP method [42] based on ADMM
using sparse matrices and 5000 maximum iterations to limit its maximum execution time;
6. Gurobi - the dual simplex algorithm of Gurobi 7.5.2 [51] was chosen for the tests as it performed best amongst its other available al- gorithms;
7. fastGP - Algorithm4.4(the fast gradient projection algorithm [22]) implemented in embedded MATLAB, with restart in every 50 off 3000 maximum iterations and termination criterion based on [52, Equation 6.18], cf. Appendix4.8.1;
8. ODYSQP - ODYS QP solver8[53];
9. CPLEX - primal simplex algorithm (method cplexlsqlin) of CPLEX 12.6.3 [54].
For all solvers, the feasibility or optimality tolerance was set to 10−9 with all computations in double precision (machine precision ≈ 10−16), except for the single precision ( ≈ 10−7) version RBVLS single of Al- gorithm4.2, where the same tolerance was set to 10−6. The tolerances for all solvers are relaxed to 10−6 for the MPC example in Section4.6.2. For first-order methods OSQP and fastGP, the tolerances are internally re- laxed based on problem-specific termination criteria [42], [52]. All the numerical tests have been run on a Macbook Pro 2.6 GHz Intel Core i5 with 8GB RAM. All matrix operations have been computed through plain C code interfaced to MATLAB R2015b. The execution time of each solver is obtained from its internally measured time in order to avoid counting the time for interfacing it with MATLAB.
In Figure4.2, the cost function values compare the quality of the solu- tion instead of the solution vector obtained from different solvers be- cause in the presence of tolerances and poor-conditioning, the solution values obtained may differ while numerically yielding the same value of the cost function. The following conclusions may be drawn while refer- ring Figures4.1-4.2:
1. The proposed algorithm performs well in terms of both computa- tional efficiency and accuracy as compared to the benchmark solv- ers irrespective of the numerical conditioning of the problems. 2. The proposed solver with a single orthogonalization in QR up-
dates (BVLS2) has same accuracy as the Stark and Parker’s BVLS algorithm (BVLS SP) in double precision and is faster by a signi- ficant margin. By performing multiple orthogonalizations when required, the RBVLS algorithm computes a solution with high ac- curacy in all cases.
3. The accuracy of the propsed algorithm (RBVLS single) in single precision depends on the loss of precision due to numerical condi- tioning. However, it computes a solution which results in an error of low order of magnitude ≈ 10−6 even when solving problems
8ODYS QP solver version “General purpose” 2017 has been used for all tests reported in this chapter.
20 40 60 80 100 120 140 160 180 10−5 10−4 10−3 10−2 10−1 100 Number of variables (n) Execution time (secs) Gurobi ODYSQP RBVLS RBVLS single BVLS SP BVLS2 QPoases C fastGP OSQP CPLEX
(a)Worst-case computational time.
20 40 60 80 100 120 140 160 180 10−5 10−4 10−3 10−2 10−1 100 Number of variables (n) Execution time (secs)
(b)Average computational time.
Figure 4.1: Solver performance comparison for BVLS test problems with condition number of matrix A = 108, 180 random instances for each
A ∈ R1.5n×n, and all possible non-zero cardinality values of the optimal act-
20 40 60 80 100 120 140 160 180 10−11 10−9 10−7 10−5 10−3 Number of variables (n) max( J − Jref )
(a)Worst-case difference from the benchmark cost.
20 40 60 80 100 120 140 160 180 −10−9 −10−11 −10−13 0 10−13 10−11 10−9 10−7 10−5 Number of variables (n) mean (J − Jref )
(b)Average difference from the benchmark cost.
Figure 4.2: Solver performance comparison for BVLS test problems with condition number of matrix A = 108, 180 random instances for each
A ∈ R1.5n×n, and all possible non-zero cardinality values of the optimal act- ive set. The optimal cost J of(4.2)obtained using each solver is compared with the benchmark value Jrefobtained using Gurobi. The legend for the
plots is same as in Figure4.1aand is not included here for clarity by avoid- ing overlap with the plots.
with the reciprocal of a condition number comparable to the work- ing machine precision.
4. The numerical results demonstrate that the proposed BVLS solver is suitable for applications, such as embedded MPC, where numer- ical robustness and computational efficiency are necessary require- ments.
Additionally, results for test problems having better conditioned A mat- rix with respective condition numbers 101, 104 are included in Ap- pendix4.8.3in order to further demonstrate computational competitive- ness, especially in comparison with solvers based on first-order methods (cf. Figures4.9a-4.11a). These results demonstrate that the error in com- puting the solution increases for first-order methods with increase in the condition number. This also influences their convergence rate, result- ing in a performance slower than active-set method based solvers for problems with large condition numbers. In order to demonstrate this, details on the number of iterations taken by each solver for the test prob- lems are included in Appendix4.8.4. Figures4.13-4.15show that active- set method based solvers are significantly less sensitive to the condition number of the problem as compared to first-order methods.