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

Рассмотрите задачу оптимизации:

Минимизируйте Трассировку (X) подвергающийся

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

с данными

A=(121321121);B=(101);Q=(110131201236).

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

ATX + XA + XBBTX + Q = 0

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

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

Минимизируйте Трассировку (X), подвергающийся

(ATX+XA+QXBBTXI)<0.(2)

Поскольку Трассировка (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 = я, то есть,

    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 сообщает, что глобальный минимум для объективной Трассировки (X) –18.716695 с относительной точностью, по крайней мере, 9.5×10-6. Это - значение copt, возвращенный mincx.

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

    Xopt = dec2mat(LMIs,xopt,X)
    

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

    Xopt=(6.35425.88952.20465.88956.28552.22012.20462.22016.0771).

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

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

Похожие темы