Suggestion: Hard-code a better initial guess in `uncertainty_bound._identify_uncertainty_upper_bound`
- Dominant language
- Python
- Stars
- 17
- Forks
- 2
- PR merge metrics
- No merged PRs in 30d
Description
This issue concerns the method `_identify_uncertainty_upper_bound` as it appears in the module `src/dkpy/uncertainty_bound.py` in the branch `feature/22-add-equivalent-of-matlabs-ucover` as of the time of this post.
The problem tackled by the method is the one of finding a transfer function whose gain response bounds from above the greatest maximum singular value (m.s.v.) response of residuals. The solution offered is one carried out by a call to `scipy.optimize.minimize`. The initial guess hard-coded into the method as of posting this issue is $$w_E(s) = \frac{a}{s^n + 1},$$ where $a$ is the peak of the greatest m.s.v. response array and $n$ is the chosen `order`.
This choice works as intended for the example provided in `src/tests/test_uncertainty_bound.py`, but is not the best choice.
The suggestion is to look into coding a method that fits a transfer function, $\tilde{w}_E(s)$, to a gain response (with no phase information), and use $$\tilde{w}_E(s) + \beta$$ as the initial guess. Here, $\beta$ is the smallest difference between the greatest m.s.v. response and $|\tilde{w}_E(j \omega)|$ over the whole frequency range, and would be included to make the initial guess feasible with respect to the optimization constraints.
The book chapter "Rational Fitting Techniques for the Modeling of Electric Power Components and Systems Using MATLAB Environment" by Bañuelos-Cabral et al. (available [here](https://www.intechopen.com/chapters/57667)) demonstrates how to do this.
Contributor guide
Assessment
This issue has not been assessed yet.