обрезка

Найдите точку для обрезки динамической системы

Синтаксис

[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 не может найти точку для обрезки, он возвращает точку, с которой сталкиваются в ее поиске, где производные состояния являются самыми близкими, чтобы обнулить в смысле минимакса; то есть, это возвращает точку, которая минимизирует максимальное отклонение от нуля производных. 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 использует незаданные свободные переменные, чтобы вывести решение, которое удовлетворяет эти ограничения.

Примеры

Полагайте, что линейная система пространства состояний смоделировала использование блока State-Space

x˙=Ax+Buy=Cx+Du

A, B, C, и матрицы D, чтобы войти в командной строке или в диалоговом окне параметров блоков are:.

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) (Optimization Toolbox) для описания этого алгоритма.

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