exponenta event banner

урезать

Найти точку подстройки динамической системы

Синтаксис

[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 особенно полезны для нахождения точек обрезки.

Нет.ДефолтОписание
10Задает параметры отображения. 0 указывает на отсутствие отображения; 1 задает табличный вывод; -1 подавляет предупреждающие сообщения.
210–4Для завершения поиска должна быть достигнута точность вычисленной точки обрезки.
310–4Точность функции цели поиска обрезки должна достигать завершения поиска.
410–6Точность производных состояния должна достигать завершения поиска.
5Н/ДНе используется.
6Н/ДНе используется.
7Н/ДИспользуется внутри.
8Н/ДВозвращает значение функции цели поиска обрезки (λ в достижении цели).
9Н/ДНе используется.
10Н/ДВозвращает число итераций, использованных для поиска точки обрезки.
11Н/ДВозвращает число оценок градиента функции.
120Не используется.
130Количество ограничений равенства.
14100 * (количество переменных)Максимальное количество оценок функций, используемых для поиска точки обрезки.
15Н/ДНе используется.
1610–8Используется внутри.
170.1Используется внутри.
18Н/ДВозвращает длину шага.

[x,u,y,dx,options] = trim('sys',x0,u0,y0,ix,iu,iy,dx0,idx,options,t) устанавливает время на t если система зависит от времени.

Примечание

Если исправить какое-либо из состояний, входных или выходных значений, trim использует неопределенные свободные переменные для получения решения, удовлетворяющего этим ограничениям.

Примеры

Рассмотрим линейную систему «состояние-пространство», смоделированную с использованием блока «состояние-пространство»

x˙=Ax+Buy=Cx+Du

Матрицы 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];

Пример 1

Чтобы найти точку равновесия в этой модели под названием sys, использовать:

[x,u,y,dx,options] = trim('sys')
x =
   0
   0
u =
   0
   0
y =
   0
   0
dx =
   0
   0

Количество выполненных итераций:

options(10)
ans =
      7

Пример 2

Найти точку равновесия вблизи 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

Пример 3

Чтобы найти точку равновесия с выходами, закрепленными на 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

Пример 4

Чтобы найти точку равновесия с выходами, зафиксированными на 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) (панель инструментов оптимизации).

Представлен до R2006a