Skip to content

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

@eid-not-die

Description

@eid-not-die

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) demonstrates how to do this.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions