Найти точку подстройки динамической системы
[x,u,y,dx] = trim('sys')
[x,u,y,dx] = trim('sys',x0,u0,y0)
[x,u,y,dx] = trim('sys',x0,u0,y0,ix,iu,iy)
[x,u,y,dx] = trim('sys',x0,u0,y0,ix,iu,iy,dx0,idx)
[x,u,y,dx,options] = trim('sys',x0,u0,y0,ix,iu,iy,dx0,idx,options)
[x,u,y,dx,options] = trim('sys',x0,u0,y0,ix,iu,iy,dx0,idx,options,t)
Точка подстройки, также известная как точка равновесия, является точкой в пространстве параметров динамической системы, в которой система находится в установившемся состоянии. Например, точка подстройки самолета - это настройка его органов управления, которая заставляет самолет лететь прямо и выровняться. Математически точка обрезки - это точка, в которой производные состояния системы равны нулю. trim начинается с начальной точки и выполняет поиск, используя алгоритм последовательного квадратичного программирования, пока не найдет ближайшую точку обрезки. Исходную точку необходимо указать неявно или явно. Если trim не может найти точку обрезки, он возвращает точку, обнаруженную в его поиске, где производные состояния наиболее близки к нулю в смысле min-max; то есть возвращает точку, которая минимизирует максимальное отклонение от нуля производных. trim может находить точки обрезки, которые удовлетворяют определенным условиям ввода, вывода или состояния, и может находить точки, где система изменяется определенным образом, то есть точки, где производные состояния системы равны определенным ненулевым значениям.
[x,u,y,dx] = trim(' находит точку равновесия модели 'sys')sys', ближайший к начальному состоянию системы, x0. В частности, trim находит точку равновесия, которая минимизирует максимальное абсолютное значение [x-x0,u,y]. Если trim не может найти точку равновесия вблизи исходного состояния системы, она возвращает точку, в которой система находится ближе всего к равновесию. В частности, возвращается точка, которая минимизирует abs(dx) где dx представляет производную системы. Вы можете получить x0 с помощью этой команды.
[sizes,x0,xstr] = sys([],[],[],0)
[x,u,y,dx] = trim(' находит точку обрезки, ближайшую к sys',x0,u0,y0)x0, u0, y0, то есть точка, которая минимизирует максимальное значение
abs([x-x0; u-u0; y-y0])
[x,u,y,dx] = trim(' находит точку обрезки, ближайшую к sys',x0,u0,y0,ix,iu,iy)x0, u0, y0 это удовлетворяет заданному набору состояний, входных и/или выходных условий. Целочисленные векторы ix, iu, и iy выберите значения в x0, u0, и y0 это должно быть удовлетворено. Если trim не может найти точку равновесия, которая точно удовлетворяет указанному набору условий, она возвращает ближайшую точку, которая удовлетворяет условиям, а именно:
abs([x(ix)-x0(ix); u(iu)-u0(iu); y(iy)-y0(iy)])
[x,u,y,dx] = trim(' находит конкретные неравновесные точки, то есть точки, в которых производные состояния системы имеют некоторое заданное ненулевое значение. Здесь, sys',x0,u0,y0,ix,iu,iy,dx0,idx)dx0 задает значения производной состояния в начальной точке поиска и idx выбирает значения в dx0 что поиск должен точно удовлетворять.
[x,u,y,dx,options] = trim(' задает массив параметров оптимизации, sys',x0,u0,y0,ix,iu,iy,dx0,idx,options)trim переходит к функции оптимизации, которая используется для поиска точек обрезки. Функция оптимизации, в свою очередь, использует этот массив для управления процессом оптимизации и возврата информации о процессе. trim возвращает значение options массив в конце процесса поиска. Открывая таким образом базовый процесс оптимизации, trim позволяет осуществлять мониторинг и точную настройку поиска точек обрезки.
В следующей таблице описано, как каждый элемент влияет на поиск точки обрезки. Элементы матрицы 1, 2, 3, 4 и 10 особенно полезны для нахождения точек обрезки.
| Нет. | Дефолт | Описание |
|---|---|---|
| 1 | 0 | Задает параметры отображения. 0 указывает на отсутствие отображения; 1 задает табличный вывод; -1 подавляет предупреждающие сообщения. |
| 2 | 10–4 | Для завершения поиска должна быть достигнута точность вычисленной точки обрезки. |
| 3 | 10–4 | Точность функции цели поиска обрезки должна достигать завершения поиска. |
| 4 | 10–6 | Точность производных состояния должна достигать завершения поиска. |
| 5 | Н/Д | Не используется. |
| 6 | Н/Д | Не используется. |
| 7 | Н/Д | Используется внутри. |
| 8 | Н/Д | Возвращает значение функции цели поиска обрезки (λ в достижении цели). |
| 9 | Н/Д | Не используется. |
| 10 | Н/Д | Возвращает число итераций, использованных для поиска точки обрезки. |
| 11 | Н/Д | Возвращает число оценок градиента функции. |
| 12 | 0 | Не используется. |
| 13 | 0 | Количество ограничений равенства. |
| 14 | 100 * (количество переменных) | Максимальное количество оценок функций, используемых для поиска точки обрезки. |
| 15 | Н/Д | Не используется. |
| 16 | 10–8 | Используется внутри. |
| 17 | 0.1 | Используется внутри. |
| 18 | Н/Д | Возвращает длину шага. |
[x,u,y,dx,options] = trim(' устанавливает время на sys',x0,u0,y0,ix,iu,iy,dx0,idx,options,t)t если система зависит от времени.
Примечание
Если исправить какое-либо из состояний, входных или выходных значений, trim использует неопределенные свободные переменные для получения решения, удовлетворяющего этим ограничениям.
Рассмотрим линейную систему «состояние-пространство», смоделированную с использованием блока «состояние-пространство»
Матрицы A, B, C и D для ввода в командной строке или в диалоговом окне параметров блока:.
A = [-0.09 -0.01; 1 0]; B = [ 0 -7; 0 -2]; C = [ 0 2; 1 -5]; D = [-3 0; 1 0];
Чтобы найти точку равновесия в этой модели под названием sys, использовать:
[x,u,y,dx,options] = trim('sys')
x =
0
0
u =
0
0
y =
0
0
dx =
0
0
Количество выполненных итераций:
options(10)
ans =
7
Найти точку равновесия вблизи x = [1;1], u = [1;1], введите
x0 = [1;1];
u0 = [1;1];
[x,u,y,dx,options] = trim('sys', x0, u0);
x =
1.0e-13 *
-0.5160
-0.5169
u =
0.3333
0.0000
y =
-1.0000
0.3333
dx =
1.0e-12 *
0.1979
0.0035
Количество выполненных итераций:
options(10)
ans =
25
Чтобы найти точку равновесия с выходами, закрепленными на 1, использовать:
y = [1;1];
iy = [1;2];
[x,u,y,dx] = trim('sys', [], [], y, [], [], iy)
x =
0.0009
-0.3075
u =
-0.5383
0.0004
y =
1.0000
1.0000
dx =
1.0e-15 *
-0.0170
0.1483
Чтобы найти точку равновесия с выходами, зафиксированными на 1, и производными, установленными на 0 и 1, используйте
y = [1;1];
iy = [1;2];
dx = [0;1];
idx = [1;2];
[x,u,y,dx,options] = trim('sys',[],[],y,[],[],iy,dx,idx)
x =
0.9752
-0.0827
u =
-0.3884
-0.0124
y =
1.0000
1.0000
dx =
0.0000
1.0000
Количество выполненных итераций:
options(10)
ans =
13
Точка обрезки, найденная по trim начиная с любой заданной начальной точки является только локальным значением. Другие, более подходящие точки обрезки могут существовать. Таким образом, если вы хотите найти наиболее подходящую точку обрезки для конкретного приложения, важно попробовать ряд начальных догадок для x, u, и y.
trim использует алгоритм последовательного квадратичного программирования для поиска точек обрезки. Описание этого алгоритма см. в разделе Последовательное квадратичное программирование (SQP) (панель инструментов оптимизации).