主要内容

修剪

查找动态系统的修剪点

句法

[x,u,y,dx] =修剪('SYS.')
[x,u,y,dx] =修剪('SYS.',x0,u0,y0)
[x,u,y,dx] =修剪('SYS.',x0,u0,y0,ix,iu,iy)
[x,u,y,dx] =修剪('SYS.',X0,U0,Y0,IX,IU,IY,DX0,IDX)
[x,u,y,dx,选项] =修剪('SYS.',X0,U0,Y0,IX,IU,IY,DX0,IDX,选项)
[x,u,y,dx,选项] =修剪('SYS.',x0,u0,y0,ix,iu,iy,dx0,Idx,选项,t)

描述

调整点,也称为平衡点,是动态系统的参数空间中的点,在该位置系统处于稳定状态。例如,飞机的修剪点是其控制的设置,导致飞机直接和水平。在数学上,修剪点是系统的状态衍生物等于零的点。修剪从初始点开始使用顺序二次编程算法,直到找到最近的修剪点。您必须隐式或明确提供初始点。如果修剪找不到修剪点,它返回其搜索中遇到的重点,其中状态衍生物在最小的max中最接近零;也就是说,它返回最小化衍生物零的最大偏差的点。修剪可以找到符合特定输入,输出或状态条件的修剪点,它可以在系统中以指定方式更改系统,即该系统状态衍生物等于特定的非零值的点。

[x,u,y,dx] =修剪('SYS.')找到模型的均衡点'SYS.',最接近系统的初始状态,X0.。具体来说,修剪找到最小化最大绝对值的均衡点[x-x0,u,y]。如果修剪在系统的初始状态附近找不到均衡点,它返回系统最靠近均衡的点。具体来说,它返回最小化的点ABS(DX)在哪里DX.代表系统的衍生品。你可以获得X0.使用此命令。

[大小,x0,xstr] = sys([],[],[],0)

[x,u,y,dx] =修剪('SYS.',x0,u0,y0)找到最近的修剪点X0.U0.y0.,也就是说,最小化最大值的点

abs([x-x0; u-u0; y-y0])

[x,u,y,dx] =修剪('SYS.',x0,u0,y0,ix,iu,iy)找到最接近的修剪点X0.U0.y0.这满足了一组指定的状态,输入和/或输出条件。整数向量IX.IU, 和IY.选择值X0.U0., 和y0.必须满足。如果修剪无法找到满足指定条件集的平衡点,返回满足条件的最近点,即,

abs([x(ix)-x0(ix); u(iu)-u0(iu); y(iy)-y0(iy)])

[x,u,y,dx] =修剪('SYS.',X0,U0,Y0,IX,IU,IY,DX0,IDX)查找特定的非Quilibibium积分,即系统状态衍生物具有一些指定的非零值的点。这里,DX0.指定搜索起点和的状态衍生值idx.选择值DX0.搜索必须完全满足。

[x,u,y,dx,选项] =修剪('SYS.',X0,U0,Y0,IX,IU,IY,DX0,IDX,选项)指定优化参数的数组修剪传递给它用于查找修剪点的优化功能。反过来,优化函数使用此阵列来控制优化过程并返回有关该过程的信息。修剪返回选项在搜索过程结束时数组。通过以这种方式暴露底层优化过程,修剪允许您监控和微调搜索修剪点。

下表描述了每个元素如何影响搜索的修剪点。阵列元件1,2,3,4和10对于查找修剪点特别有用。

不。 默认 描述
1 0. 指定显示选项。0指定没有显示;1指定表格输出;-1禁止警告消息。
2 10.-4 精确度计算的修剪点必须达到终止搜索。
3. 10.-4 精确度调整搜索目标函数必须达到终止搜索。
4. 10.-6 精确度状态衍生物必须达到终止搜索。
5. N / A. 未使用。
6. N / A. 未使用。
7. N / A. 在内部使用。
8. N / A. 返回修剪搜索目标函数的值(目标达到λ)。
9. N / A. 未使用。
10. N / A. 返回用于查找修剪点的迭代次数。
11. N / A. 返回功能渐变评估的数量。
12. 0. 未使用。
13. 0. 平等约束的数量。
14. 100 *(变量数量) 用于查找修剪点的最大函数评估数。
15. N / A. 未使用。
16. 10.-8 在内部使用。
17. 0.1 在内部使用。
18. N / A. 返回步长。

[x,u,y,dx,选项] =修剪('SYS.',x0,u0,y0,ix,iu,iy,dx0,Idx,选项,t)设置时间T.如果系统依赖于时间。

笔记

如果修复任何状态,输入或输出值,修剪使用未指定的免费变量来派生满足这些约束的解决方案。

例子

考虑使用状态空间块建模的线性状态空间系统

X ˙ = 一种 X + B. y = C X + D.

一种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,选项] =修剪('sys')x = 0 0 0 u = 0 0 y = 0 0 dx = 0 0

所采取的迭代人数是:

选项(10)ans = 7

例2.

找到附近的均衡点x = [1; 1],U = [1; 1], 进入

x0 = [1; 1];U0 = [1; 1];[x,u,y,dx,选项] =修剪('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

所采取的迭代人数

选项(10)ans = 25

例3.

找到具有固定输出的均衡点1, 用:

Y = [1; 1];IY = [1; 2];[x,u,y,dx] =修剪('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,选项] =修剪('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

所采取的迭代人数

选项(10)ans = 13

限制

发现的修剪点修剪从任何给定的初始点开始只是一个本地值。其他,可能存在更合适的修剪点。因此,如果要为特定应用找到最合适的修剪点,则重要的是尝试多个初始猜测X, 和y

算法

修剪使用顺序二次编程算法查找修剪点。看顺序二次编程(SQP)(优化工具箱)有关该算法的描述。

在R2006A之前介绍