Mark Szlazak wrote: ↑
Wed Mar 25, 2020 3:17 pm
My apologies if this is not the right place for these questions.
Does your program provide "under-constrained", "fully-constrained" and "over-constrained" feedback?
If so what technique/algorithm is used to determine those conditions?
There are some requirements:
1. You need a rank-revealing decomposition.
2. You must reveal which rows/columns (parameters/constraints) of the original matrix give rise to redundant/conflicting constraints or are not constraint parameters. Sketcher does this with a QR decomposition, using the R matrix. Eigen keeps track of the transpositions/permutations of the pivoting during decomposition, which allows to map the R matrix to the original rows/columns
QR is rather expensive computationally. I think it was gael from Eigen suggested using other cheaper rank revealing decomposition (LU I think it was), but then is the problem of identifying redundant/conflicting and unconstrained parameters.
For reasons I do not understand, to get the unconstrained parameters, you need to use a dense QR with full pivoting. SparseQR is not good enough for this (or the needed tracking is not exposed in eigen or I do not understand how to use what it gives).
If I implement the diagnosis, I will use QR because it is what I know and "kind of" understand.