exponenta event banner

Минимизация линейных целей при ограничениях LMI

Рассмотрим проблему оптимизации:

Минимизировать трассировку (X), подлежащую

ATX + XA + XBBTX + Q < 0(1)

с данными

A = (1 213211 2 1); B = (101); Q = (1 10 − 1 − 3 − 120 − 12 − 36).

Можно показать, что минимизатор X * является просто стабилизирующим решением алгебраического уравнения Риккати

ATX + XA + XBBTX + Q = 0

Это решение можно вычислить непосредственно с помощью решателя Riccati care и по сравнению с минимизатором, возвращенным mincx.

С точки зрения оптимизации LMI задача, указанная в уравнении 1, эквивалентна следующей задаче минимизации линейных целей:

Минимизировать трассировку (X), подлежащую

(ATX + XA + QXBBTX I) < 0.(2)

Поскольку Trace (X) является линейной функцией записей X, эта проблема попадает в область действия mincx решатель и может быть численно решен следующим образом:

  1. Определение ограничения LMI уравнения 1 по последовательности команд

    setlmis([]) 
    X = lmivar(1,[3 1]) % variable X, full symmetric
    
    lmiterm([1 1 1 X],1,a,'s') 
    lmiterm([1 1 1 0],q) 
    lmiterm([1 2 2 0],-1) 
    lmiterm([1 2 1 X],b',1)
    
    LMIs = getlmis
    
  2. Запишите целевую трассу (X) как cTx, где x - вектор свободных записей X. Поскольку c должен выбирать диагональные записи X, он получается как вектор решения, соответствующий X = I, то есть

    c = mat2dec(LMIs,eye(3))
    

    Обратите внимание, что функция defcx обеспечивает более систематический способ определения таких целей (для получения подробной информации см. Определение целей cTx для mincx).

  3. Звонить mincx для вычисления минимизатора xopt и глобальный минимум copt = c'*xopt цели:

    options = [1e-5,0,0,0,0] 
    [copt,xopt] = mincx(LMIs,c,options)
    

    Здесь 1e–5 задает требуемую относительную точность на copt.

    Следующая трассировка итеративной оптимизации, выполняемой mincx появляется на экране:

    Solver for linear objective minimization under LMI constraints
    Iterations 	: 	Best objective value so far     

    1

      

    2

    -8.511476

     

    3

    -13.063640

     

    ***

    new lower bound:

    -34.023978

    4

    -15.768450

     

    ***

    new lower bound:

    -25.005604

    5

    -17.123012

     

    ***

    new lower bound:

    -21.306781

    6

    -17.882558

     

    ***

    new lower bound:

    -19.819471

    7

    -18.339853

     

    ***

    new lower bound:

    -19.189417

    8

    -18.552558

     

    ***

    new lower bound:

    -18.919668

    9

    -18.646811

     

    ***

    new lower bound:

    -18.803708

    10

    -18.687324

     

    ***

    new lower bound:

    -18.753903

    11

    -18.705715

     

    ***

    new lower bound:

    -18.732574

    12

    -18.712175

     

    ***

    new lower bound:

    -18.723491

    13

    -18.714880

     

    ***

    new lower bound:

    -18.719624

    14

    -18.716094

     

    ***

    new lower bound:

    -18.717986

    15

    -18.716509

     

    ***

    new lower bound:

    -18.717297

    16

    -18.716695

     

    ***

    new lower bound:

    -18.716873

    Result: feasible solution of required accuracy 
    	best objective value: 	-18.716695 
    	guaranteed relative accuracy: 	9.50e-06 
    	f-radius saturation: 0.000% of R = 1.00e+09
    

    Номер итерации и наилучшее значение cTx в текущей итерации отображаются в левом и правом столбцах соответственно. Обратите внимание, что при первой итерации значение не отображается, что означает, что выполнимое значение x, удовлетворяющее ограничению (уравнение 2), было найдено только при второй итерации. По мере оптимизации иногда обнаруживаются нижние границы глобального минимума cTx. Эти нижние границы сообщаются сообщением

    *** new lower bound: xxx
    

    При прекращении, mincx сообщает, что глобальный минимум для целевого Trace (X) равен -18.716695 с относительной точностью не менее 9,5 × 10-6. Это значениеcopt возвращено mincx.

  4. mincx также возвращает оптимизирующий вектор переменных принятия решения xopt. Соответствующее оптимальное значение матричной переменной X задается

    Xopt = dec2mat(LMIs,xopt,X)
    

    который возвращает

    Xopt = (− 6,3542 − 5,88952,2046 − 5,8895 6,28552,22012,20462,2201 − 6,0771).

    Этот результат можно сравнить со стабилизирующим раствором Riccati, вычисленным по care:

    Xst = care(a,b,q,-1) 
    norm(Xopt-Xst)
    
    ans = 
    	6.5390e-05
    

Связанные темы