-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Using pivot perturbation for ill-conditioned state estimation #862
Conversation
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Since this is both a big and a very important PR, this is a friendly reminder to run the Nightly build manually once it is "ready" to be merged. |
Signed-off-by: Tony Xiang <[email protected]>
For future reference purposes only
|
power_grid_model_c/power_grid_model/include/power_grid_model/math_solver/sparse_lu_solver.hpp
Outdated
Show resolved
Hide resolved
power_grid_model_c/power_grid_model/include/power_grid_model/math_solver/sparse_lu_solver.hpp
Outdated
Show resolved
Hide resolved
…ath_solver/sparse_lu_solver.hpp Co-authored-by: Martijn Govers <[email protected]> Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
Signed-off-by: Tony Xiang <[email protected]>
power_grid_model_c/power_grid_model/include/power_grid_model/math_solver/observability.hpp
Show resolved
Hide resolved
Signed-off-by: Martijn Govers <[email protected]>
Running the benchmark yields comparatively similar results. I found no significant regressions. In fact, the new implementation often appears to give slightly better results, in particular for ClangCL, but it is most most likely within run differences on my machine and therefore not significant. |
Profiling resultsusing the Visual Studio 2022 Profiler on Very similar results between Note: the threaded version has almost identical behavior, as expected; see included
|
Signed-off-by: Tony Xiang <[email protected]>
Quality Gate passedIssues Measures |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I hereby approve the current set of changes
Closes #853
Mathematical approach
This PR attempts to fix the problem by using pivot perturbation. This is an alternative method than partial/full pivoting method in the LU factorization. In this way, the structure of the sparse matrix is not changed. The methods are described in [Li99] and [Schenk04].
This PR applies the methods with following aspects:
Implementation
We adjust
LUSparseSolver
to allow optionally pivot perturbation. To do this, the original matrix has to be cached to do the iterative refinement. Optional member data are defined in the class to store the cache. This perturbation is an opt-in feature which should only be enabled if we suspect ill-conditioned scenario. Currently, it is only enabled in State Estimation (both NR and IL) when the following two conditions are met:Check list