Recent Changes - Search:

RACT

* Overview

PmWiki * Initial Setup Tasks

* PmWikiPhilosophy

edit SideBar

Hosted by

SourceForge
Powered by pmWiki
Powered by jsMath
(what is jsMath?)
Powered by GeSHi

(what is GeSHi?)

* Draft * Analysis * Synthesis -> LMI? * Synthesis?* -> Lyapunov?* -> LQR?* -> LMI? * Advanced Usage? * Theory Theory * -> Analysis * -> Synthesis -> LMI? * Synthesis* -> Lyapunov?* -> LQR* -> LMI? * Methods

Analysis

How to use both algorithms:

Probabilistic performance verification (theory):

Let Eps \in (0, 1), delta \in (0, 1) be probability levels. Given a performance level gamma, we get with probability 1-delta an estimate ProbEst of the probability of performance (J(Delta) is the performance criterion)

Prob = Prob{J(Delta) <= gamma}

  1. First, create an m-file with user-defined function of uncertain polynomial, for example sample_poly.m:
    function Out = sample_poly(Init, UncVar)
    % Uncertain polynomial of degree 4, with 3 uniform-distributed parameters
    if Init
      UncVar = cell(0);
      % Define all uncertainties
      UncVar{1} = ubase('a1', 'real_scalar_uniform', 'nominal', 1, 'range', 1.1);
      UncVar{2} = ubase('a2', 'real_scalar_uniform', 'nominal', 1, 'range', 1);
      UncVar{3} = ubase('a1', 'real_scalar_uniform', 'nominal', 1, 'range', 0.5);

      Out = UncVar;
      return;
    end

    % Extract samples of uncertain variables:
    q1 = UncVar{1};
    q2 = UncVar{2};
    q3 = UncVar{3};

    % Compose sample of uncertain polynomial:
    Out = [1, q1, q2*q3, q2];
  2. Then find a probability that it is Hurwitz:
    >> ProbEst = perfver(@sample_poly, 'hurwitz', 0.01, 0.01)
     

Syntax

ProbEst = perfver(HANDLEOBJ, HANDLESPSEC, EPS, DELTA)

where
HANDLEOBJ - handle to user-defined function
HANDLETEST - handle to performance criterion function (or string with predefined name: 'binary', 'hurwitz', 'schur' or 'posdef')
EPS - probability level such that |ProbEst - Prob| <= EPS
DELTA - level such that probability of inequality above not less than 1-DELTA

or
ProbEst = perfver(HANDLEOBJ, HANDLESPSEC, N)

where
N - number of samples to be taken, then for arbitrary \epsilon Hoeffding inequality holds:
Prob\{|ProbEst - P| \geq \epsilon \} \leq 2e^{-2N\epsilon^2}

Probabilistic worst-case performance (theory):

Consider stable uncertain polynomial p(s, q_1, q_2) = 0.62 s^4 + 1.29 s^3 + (1.54 + q_1) s^2 + (1.22 + 2 q_1 + q_2) + 0.37 with uniformly distributed uncertain parameters q_1 \in [-0.25, 0.25], q_2 \in [-0.2, 0.2]. Set a task to determine what alpha-stability level do most polynomials (say, 95 percents) have? Let assurance level to be 0.01.

Again, first we are to create two functions:
1 - for the uncertain polynomial definition (say, sample_poly2.m)

function Out = probworstcase_demo_ex(Init, UncVar)
persistent p0;
if Init
  UncVar = cell(0);
  % nominal polynomial
  p0 = [0.6200, 1.2900, 1.5400, 1.2200, 0.3700];

  UncVar{1} = ubase('a1', 'real_scalar_uniform', 'nominal', 0, 'range', 0.25);
  UncVar{2} = ubase('a2', 'real_scalar_uniform', 'nominal', 0, 'range', 0.2);

  Out = UncVar;
  return;
end

q1 = UncVar{1};
q2 = UncVar{2};

Out = p0 + [0, 0, q1, 2*q1 + q2, 0];
and 2 - for alpha-stability criterion (named alpha_stab.m)

function alpha = alpha_stab(p)
alpha = max(real(roots(p)));

Having these functions defined, call toolbox function uprobwc:

>> PerfLevel = uprobwc(@sample_poly2, @alpha_stab, 0.95, 0.01, 0)
 

Syntax

PerfLevel = UPROBWC(HANDLEFUNC, HANDLEPERF, PROB_EST, DELTA, VEC_FUNC_PERF)

where
HANDLEFUNC - handle to user-defined function with uncertain object definition
HANDLEPERF - handle to performance criterion function
PROB_EST - performance level such that Prob(criterion(uncertain object) >= PerfLevel) >= PROB_EST
DELTA - level such that probability of inequality above is not less than 1-DELTA

See also demonstration >> probworstcase_demo

Edit - History - Print - Recent Changes - Search
Page last modified on May 08, 2007, at 03:10 PM