decargroup / decargroup/dkpy

Suggestion: Hard-code a better initial guess in `uncertainty_bound._identify_uncertainty_upper_bound`

Open
#30 0 comments 0 reactions 1 assignee Claimed by @eid-not-die View on GitHub
enhancement
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.