Рассмотрим задачу оптимизации:
Минимизируйте трассировку (X), удовлетворяющую
ATX + XA + XBBTX + Q < 0 | (1) |
с данными
Можно показать, что минимизатор X * является просто стабилизирующим решением алгебраического уравнения Риккати
ATX + XA + XBBTX + Q = 0
Это решение может быть вычислено непосредственно с помощью решателя Riccati care
и по сравнению с минимизатором, возвращенным mincx
.
С точки зрения оптимизации LMI задача, заданная в Уравнении 1, эквивалентна следующей линейной задаче минимизации целей:
Минимизируйте трассировку (X), удовлетворяющую
(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
Запишите целевое значение Trace (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)
который возвращает
Этот результат можно сравнить со стабилизирующим решением Риккати, вычисленным care
:
Xst = care(a,b,q,-1) norm(Xopt-Xst) ans = 6.5390e-05