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

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

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

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

с данными

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

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

ATX + XA + XBBTX + Q = 0

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

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

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

(ATX+XA+QXBBTXI)<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. Запишите целевое значение Trace (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.35425.88952.20465.88956.28552.22012.20462.22016.0771).

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

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

Похожие темы