Рассмотрите задачу оптимизации:
Минимизируйте Трассировку (X) подвергающийся
ATX + XA + XBBTX + Q < 0 | (1) |
с данными
Можно показать, что минимизатор X* является просто стабилизировавшимся решением алгебраического уравнения Riccati
ATX + XA + XBBTX + Q = 0
Это решение может быть вычислено непосредственно с решателем Riccati care
и по сравнению с минимизатором, возвращенным mincx
.
С точки зрения оптимизации LMI проблема, заданная в уравнении 1, эквивалентна следующей линейной объективной проблеме минимизации:
Минимизируйте Трассировку (X), подвергающийся
(2) |
Поскольку Трассировка (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 = я, то есть,
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
1 | ||
2 |
-8.511476 | |
3 |
-13.063640 | |
|
|
-34.023978 |
4 |
-15.768450 | |
|
|
-25.005604 |
5 |
-17.123012 | |
|
|
-21.306781 |
6 |
-17.882558 | |
|
|
-19.819471 |
7 |
-18.339853 | |
|
|
-19.189417 |
8 |
-18.552558 | |
|
|
-18.919668 |
9 |
-18.646811 | |
|
|
-18.803708 |
10 |
-18.687324 | |
|
|
-18.753903 |
11 |
-18.705715 | |
|
|
-18.732574 |
12 |
-18.712175 | |
|
|
-18.723491 |
13 |
-18.714880 | |
|
|
-18.719624 |
14 |
-18.716094 | |
|
|
-18.717986 |
15 |
-18.716509 | |
|
|
-18.717297 |
16 |
-18.716695 | |
|
|
-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
.
mincx
также возвращает вектор оптимизации переменных xopt
решения. Соответствующим оптимальным значением матричной переменной X дают
Xopt = dec2mat(LMIs,xopt,X)
который возвращается
Этот результат может быть по сравнению со стабилизировавшимся решением Riccati, вычисленным care
:
Xst = care(a,b,q,-1) norm(Xopt-Xst) ans = 6.5390e-05