Рассмотрим проблему оптимизации:
Минимизировать трассировку (X), подлежащую
| ATX + XA + XBBTX + Q < 0 | (1) |
с данными
− 1 − 3 − 120 − 12 − 36).
Можно показать, что минимизатор X * является просто стабилизирующим решением алгебраического уравнения Риккати
ATX + XA + XBBTX + Q = 0
Это решение можно вычислить непосредственно с помощью решателя Riccati care и по сравнению с минимизатором, возвращенным mincx.
С точки зрения оптимизации LMI задача, указанная в уравнении 1, эквивалентна следующей задаче минимизации линейных целей:
Минимизировать трассировку (X), подлежащую
| I) < 0. | (2) |
Поскольку Trace (X) является линейной функцией записей X, эта проблема попадает в область действия mincx решатель и может быть численно решен следующим образом:
Определение ограничения 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
Запишите целевую трассу (X) как cTx, где x - вектор свободных записей X. Поскольку c должен выбирать диагональные записи X, он получается как вектор решения, соответствующий X = I, то есть
c = mat2dec(LMIs,eye(3))
Обратите внимание, что функция defcx обеспечивает более систематический способ определения таких целей (для получения подробной информации см. Определение целей cTx для mincx).
Звонить 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
|
| ||
|
|
| |
|
|
| |
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
|
|
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.
mincx также возвращает оптимизирующий вектор переменных принятия решения xopt. Соответствующее оптимальное значение матричной переменной X задается
Xopt = dec2mat(LMIs,xopt,X)
который возвращает
− 6,0771).
Этот результат можно сравнить со стабилизирующим раствором Riccati, вычисленным по care:
Xst = care(a,b,q,-1) norm(Xopt-Xst) ans = 6.5390e-05