Commit ebda755
authored
Fix a bug in basis repair. Recover from numerical issues in primal update. (#249)
This PR includes two fixes:
* Basis repair was failing due to a bug in the right-looking LU where the column permutation was not fully populated when the basis was rank deficient.
* When computing delta x using a hypersparse solve the solution vector sometimes did not contain a nonzero coefficient associated with the basic leaving index. This was an issue, as we divide by that coefficient to compute the primal step length. This coefficient may have been missing due to the numerical drop tolerances. To recover from this we perform a regular solve. If the coefficient is small, but nonzero, we can recover.
In addition this PR adds the option to use threshold rook pivoting inside the right-looking LU factorization. TRP is rank-revealing. However, it produces factors L and U with more fill and is thus about 3% slower. We add TRP in this PR, but keep it disabled behind a flag. A future PR may want to use TRP when basis repair fails.
New or existing tests cover these changes. The documentation is not affected.
Authors:
- Chris Maes (https://github.com/chris-maes)
Approvers:
- Akif ÇÖRDÜK (https://github.com/akifcorduk)
URL: #2491 parent a807755 commit ebda755
File tree
3 files changed
+165
-19
lines changed- cpp/src/dual_simplex
3 files changed
+165
-19
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
368 | 368 | | |
369 | 369 | | |
370 | 370 | | |
| 371 | + | |
371 | 372 | | |
372 | 373 | | |
373 | 374 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1604 | 1604 | | |
1605 | 1605 | | |
1606 | 1606 | | |
1607 | | - | |
1608 | | - | |
| 1607 | + | |
| 1608 | + | |
| 1609 | + | |
| 1610 | + | |
| 1611 | + | |
| 1612 | + | |
| 1613 | + | |
| 1614 | + | |
| 1615 | + | |
| 1616 | + | |
| 1617 | + | |
| 1618 | + | |
| 1619 | + | |
| 1620 | + | |
1609 | 1621 | | |
1610 | 1622 | | |
1611 | 1623 | | |
| |||
2856 | 2868 | | |
2857 | 2869 | | |
2858 | 2870 | | |
| 2871 | + | |
2859 | 2872 | | |
2860 | 2873 | | |
| 2874 | + | |
| 2875 | + | |
2861 | 2876 | | |
2862 | 2877 | | |
2863 | 2878 | | |
2864 | 2879 | | |
2865 | 2880 | | |
2866 | | - | |
| 2881 | + | |
| 2882 | + | |
2867 | 2883 | | |
2868 | 2884 | | |
2869 | 2885 | | |
2870 | 2886 | | |
2871 | | - | |
| 2887 | + | |
2872 | 2888 | | |
2873 | 2889 | | |
| 2890 | + | |
| 2891 | + | |
| 2892 | + | |
| 2893 | + | |
| 2894 | + | |
| 2895 | + | |
| 2896 | + | |
| 2897 | + | |
| 2898 | + | |
| 2899 | + | |
| 2900 | + | |
| 2901 | + | |
| 2902 | + | |
| 2903 | + | |
| 2904 | + | |
| 2905 | + | |
| 2906 | + | |
| 2907 | + | |
2874 | 2908 | | |
| 2909 | + | |
| 2910 | + | |
2875 | 2911 | | |
2876 | 2912 | | |
2877 | 2913 | | |
2878 | 2914 | | |
| 2915 | + | |
| 2916 | + | |
| 2917 | + | |
| 2918 | + | |
| 2919 | + | |
| 2920 | + | |
2879 | 2921 | | |
2880 | 2922 | | |
2881 | 2923 | | |
| |||
0 commit comments