Remove high relative tolerance on VMCON QPP#3964
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3964 +/- ##
==========================================
- Coverage 45.98% 43.34% -2.65%
==========================================
Files 123 123
Lines 28550 33509 +4959
==========================================
+ Hits 13129 14523 +1394
- Misses 15421 18986 +3565 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
27c40e5 to
122c626
Compare
|
Here is some data to highlight the impact of this PR. PROCESS has broadly three methods of termination:
I have performed a Monte Carlo experiment of PROCESS runs within +/-30% of the initial starting point of the The first configuration uses VMCON 2.4.0 (new VMCON) with the old high QPP tolerance. As can be seen, there is no significant difference in the number of converging runs before and after this change. The second configuration used VMCON 2.3.1 (old VMCON) with the new lower QPP tolerance. I had to upgrade CVXPY to 1.7.3 because there was a lot crashes from within CVXPY that this release--or possibly another release >=1.7.1--fixes. Again, there is no significant changes in the number of converging runs. The final configuration combined all of these changes to use the new lower QPP tolerance, VMCON 2.4.0, and CVXPY 1.7.3. There is a significant, but not disastrous, change in the number of converging runs. Many runs that used to converge now crash within the models.
Generally, I do not find these results to be concerning as hopefully #3674 will allow many more of these to converge. |
010d822 to
2d9b166
Compare
2d9b166 to
da49b7b
Compare



This should go some of the way to improving the performance of VMCON, particularly when running a scan #3957.
I noticed that when running a scan over the same point (e.g.
sweep = x, x, x, ..., x) VMCON would perform many iterations on the non-first scan points. This does not make any sense because, after the first scan point, PROCESS is at a converged solution and VMCON should immediately identify this and not perform any iterations. I have verified that old VMCON did this as expected.VMCON's convergence criteria has two components:
In new VMCON, the first term was much higher than old VMCON, causing new VMCON to not believe it is converged and iterate in search of a solution. This was being driven by a difference in$\delta$ . And the reason $\delta$ was different is because the relative tolerance on the quadratic programming solver was so high.
With this PR: