nlmpc
描述
一个非线性模型预测控制器计算最优控制在使用非线性预测模型预测地平线,非线性成本函数和非线性约束。有关非线性MPC的更多信息,请参阅非线性MPC。
创建
语法
描述
输入参数
nx
- - - - - -系统预测模型的状态数
正整数
数量的预测模型,指定为一个正整数。这个值存储在Dimensions.NumberOfStates
控制器只读属性。你不能改变的状态数在创建控制器对象。
例子:6
纽约
- - - - - -数量的预测模型输出
正整数
数量的预测模型输出,指定为一个正整数。这个值存储在Dimensions.NumberOfOutputs
控制器只读属性。你不能改变输出的数量在创建控制器对象。
例子:2
ν
- - - - - -预测模型的输入
正整数
预测模型的输入,这都将是操纵变量,指定为一个正整数。这个值存储在Dimensions.NumberOfInputs
控制器只读属性。你不能改变操作变量的数量在创建控制器对象。
例子:4
mvIndex
- - - - - -被控变量指数
向量的正整数
被操纵的变量指标,指定为一个向量的正整数。这个值存储在Dimensions.MVIndex
控制器只读属性。你不能改变这些指标在创建控制器对象。
结合的一组指标mvIndex
,mdIndex
,udIndex
必须包含所有整数1
通过Nu,在那里Nu是预测模型输入的数量。
例子:3 [1]
mdIndex
- - - - - -测量扰动指数
向量的正整数
干扰指数衡量,指定为一个向量的正整数。这个值存储在Dimensions.MDIndex
控制器只读属性。你不能改变这些指标在创建控制器对象。
结合的一组指标mvIndex
,mdIndex
,udIndex
必须包含所有整数1
通过Nu,在那里Nu是预测模型输入的数量。
例子:2
udIndex
- - - - - -无边无际的扰动指数
向量的正整数
无边无际的干扰指标,指定为一个向量的正整数。这个值存储在Dimensions.UDIndex
控制器只读属性。你不能改变这些指标在创建控制器对象。
结合的一组指标mvIndex
,mdIndex
,udIndex
必须包含所有整数1
通过Nu,在那里Nu是预测模型输入的数量。
例子:4
属性
Ts
- - - - - -预测模型的样本时间
1
(默认)|积极的有限的标量
预测模型的样本时间,指定为一个积极的有限的标量。控制器使用离散时间模型的样品时间Ts
为预测。如果你指定一个连续时间预测模型(Model.IsContinuousTime
是真正的
),然后使用内置的控制器可获得模型隐式梯形积分法的样品时间Ts
。
例子:0.1
PredictionHorizon
- - - - - -预测地平线
10
(默认)|正整数
预测地平线步骤,指定为一个正整数。的产物PredictionHorizon
和Ts
是时间的预测,即控制器看起来在未来多远。
例子:15
ControlHorizon
- - - - - -控制层
2
(默认)|正整数|向量的正整数
控制层,指定为以下之一:
正整数,米之间,
1
和p、包容,p等于PredictionHorizon
。在这种情况下,控制器计算米自由控制动作发生k通过k+米1,保持着剩下的预测地平线的控制器输出恒定的步骤k+米通过k+p1。在这里,k是当前控制间隔。向量的正整数(米1,米2,…),指定阻塞时间间隔的长度。默认情况下,控制器计算米块的自由移动,米是阻塞的数量的间隔。第一次自由移动适用于时间k通过k+米11,第二个免费的移动应用k+米1通过k+米1+米21,等等。使用块运动可以提高控制器的鲁棒性。中的值的总和
ControlHorizon
必须匹配预测地平线p。如果您指定一个向量的总和:小于预测地平线,那么控制器添加一个阻塞时间间隔。这个区间的长度是间隔长度的总和p。例如,如果p=
10
你指定一个控制层ControlHorizon
=(1 2 3)
,然后控制器使用四个区间长度(1 2 3 4)
。大于预测地平线,然后间隔是截断直到区间长度之和等于p。例如,如果p=
10
你指定一个控制层ControlHorizon
=(1 2 3 6 7)
,然后控制器使用四个区间长度(1 2 3 4)
。
分段常数阻止动作往往对最优路径规划应用程序限制太多。产生一个限制较少,better-conditioned非线性规划问题,您可以指定分段线性被控变量阻塞时间间隔。为此,设置Optimization.MVInterpolationOrder
你的属性nlmpc
控制器对象1
。
对被控变量的更多信息阻塞使用不同的插值方法,明白了被控变量阻塞。
例子:3
维
- - - - - -预测模型维度信息
结构
这个属性是只读的。
预测模型维度信息,当您创建指定控制器和存储为与以下领域的结构。
NumberOfStates
——许多州
正整数
许多州在预测模型中,指定为一个正整数。这个值对应于nx
。
例子:6
NumberOfOutputs
——数量的输出
正整数
输出数量预测模型,指定为一个正整数。这个值对应于纽约
。
例子:1
NumberOfInputs
——数量的输入
正整数
输入数量预测模型,指定为一个正整数。这个值对应ν
或的长度的总和mvIndex
,mdIndex
,udIndex
。
例子:3
MVIndex
——被控变量指数
向量的正整数
被控变量指标的预测模型,指定为一个向量的正整数。这个值对应于mvIndex
。
例子:(1 2)
MDIndex
——测量扰动指数
向量的正整数
测量扰动指数预测模型,指定为一个向量的正整数。这个值对应于mdIndex
。
例子:4
UDIndex
——无边无际的扰动指数
向量的正整数
无边无际的扰动指数预测模型,指定为一个向量的正整数。这个值对应于udIndex
。
例子:3
模型
- - - - - -预测模型
结构
预测模型,与以下字段指定为一个结构。
StateFcn
——状态函数
字符串| |特征向量函数句柄
态函数,指定为一个字符串,特征向量,或函数句柄。对于一个连续时间的预测模型,StateFcn
是国家导数函数。离散时间预测模型,StateFcn
是状态更新功能。
如果你的态函数是连续时间时,控制器自动可使用隐式梯形积分法模型。该方法可以处理适度硬模型,其预测精度取决于控制器样品时间Ts
;也就是说,大样本的时间会导致不准确的预测。
如果默认的离散化方法不提供令人满意的预测对于您的应用程序,您可以指定自己的离散时间预测模型,使用不同的方法,如多步向前欧拉规则。
你可以指定你的态函数以以下方式之一:
请注意
只有一个单独的文件中定义的函数在当前文件夹或MATLAB路径支持C / c++代码生成。金宝app因此,指定状态、输出成本,或约束函数(或其雅克比)不推荐本地或匿名函数。
有关更多信息,请参见为非线性MPC指定预测模型。
例子:“@transFcn”
OutputFcn
——输出函数
[]
(默认)| | |字符字符串向量函数处理
输出函数,指定为一个字符串,特征向量,或函数句柄。如果州的数量和输出的预测模型是相同的,你可以省略OutputFcn
,这意味着所有国家是可测量的;也就是说,每个输出对应于一个状态。
请注意
你的输出函数不能直接从任何被控变量引线在任何时候任何输出。
您可以指定您的输出函数以以下方式之一:
请注意
只有一个单独的文件中定义的函数在当前文件夹或MATLAB路径支持C / c++代码生成。金宝app因此,指定状态、输出成本,或约束函数(或其雅克比)不推荐本地或匿名函数。
有关更多信息,请参见为非线性MPC指定预测模型。
例子:“@outFcn”
IsContinuousTime
——选项表明时域预测模型
真正的
(默认)|假
选项表明时域预测模型,指定为以下之一:
真正的
——连续时间预测模型。在这种情况下,控制器可自动模型在预测使用Ts
。假
——离散时间预测模型。在这种情况下,Ts
的样品时间模型。
请注意
IsContinuousTime
必须符合指定的函数Model.StateFcn
和Model.OutputFcn
。
如果IsContinuousTime
是真正的
,StateFcn
必须返回国家对时间的导数,在当前时间。否则StateFcn
必须返回的状态下控制间隔。
例子:真正的
NumberOfParameters
-可选的模型参数的数量
0
(默认)|非负整数
使用的可选的模型参数数量预测模型,定义代价函数,定义约束,被动功能,指定为一个非负整数。参数的数量包括所有这些函数使用的参数。例如,如果状态函数只使用参数p1
,约束函数仅使用参数p2
,成本函数只使用参数p3
,然后NumberOfParameters
是3
。
例子:1
州
- - - - - -状态信息、范围和规模的因素
结构数组
状态信息、范围和规模因素,指定为一个结构数组Nx元素,Nx的状态数。每个结构元素有以下字段。
最小值
——国家下界
负
(默认)|标量|向量
州下界,指定为一个标量或矢量。默认情况下,这个下界负
。
使用相同的绑定在预测地平线,指定一个标量值。
不同的绑定预测地平线k+ 1,k+p,指定一个向量的p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后必然是用于预测地平线的其余步骤。
国家边界总是硬约束。
例子:(-20 -18 -15)
马克斯
——国家上限
正
(默认)|标量|向量
州上界,指定为一个标量或矢量。默认情况下,这个上限+正
。
使用相同的绑定在预测地平线,指定一个标量值。
不同的绑定预测地平线k+ 1,k+p,指定一个向量的p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后必然是用于预测地平线的其余步骤。
国家边界总是硬约束。
例子:20 [15]
的名字
——国家名称
字符串|字符向量
国家名称,指定为字符串或字符向量。的名字是默认状态“x”#
,在那里#
其状态指数。
例子:“速度”
单位
-国家单位
”“
(默认)| |字符字符串向量
国家单位,指定为字符串或字符向量。
例子:“米/秒”
ScaleFactor
——国家比例因子
1
(默认)|积极有限的标量
国家尺度因子,指定为一个积极的有限的标量。一般来说,使用操作的状态。指定合适的比例因子可以提高数值条件优化。
例子:10
OutputVariables
- - - - - -输出变量信息,范围和规模的因素
结构数组
输出变量(OV)信息、范围和规模因素,指定为一个结构数组Ny元素,Ny输出变量的数量。要访问该属性,您可以使用别名机汇
而不是OutputVariables
。
每个结构元素有以下字段。
最小值
- - - - - - OV下界
负
(默认)|标量|向量
OV下界,指定为一个标量或矢量。默认情况下,这个下界负
。
使用相同的绑定在预测地平线,指定一个标量值。
不同的绑定预测地平线k+ 1,k+p,指定一个向量的p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后必然是用于预测地平线的其余步骤。
例子:(-10 8)
马克斯
- - - - - - OV上界
正
(默认)|标量|向量
OV上界,指定为一个标量或矢量。默认情况下,这个上限+正
。
使用相同的绑定在预测地平线,指定一个标量值。
不同的绑定预测地平线k+ 1,k+p,指定一个向量的p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后必然是用于预测地平线的其余步骤。
例子:(12 10 8)
MinECR
- OV下界柔软
1
(默认)|非负有限标量|向量
OV下界柔软,一个更大的ECR值表示软约束,指定为非负有限标量或矢量。默认情况下,OV上界是软约束。
使用相同的ECR值预测地平线,指定一个标量值。
改变ECR值对预测地平线k+ 1,k+p,指定一个向量的p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后ECR值用于预测地平线的其余步骤。
例子:(2 1 0.5)
MaxECR
- OV上界柔软
1
(默认)|非负有限标量|向量
OV上界柔软,一个更大的ECR值表示软约束,指定为非负有限标量或矢量。默认情况下,OV下界是软约束。
使用相同的ECR值预测地平线,指定一个标量值。
改变ECR值对预测地平线k+ 1,k+p,指定一个向量的p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后ECR值用于预测地平线的其余步骤。
例子:(5 2 1)
的名字
- OV名字
字符串|字符向量
OV名称指定为字符串或字符向量。默认OV叫“y”#
,在那里#
是它的产出指数。
例子:“攻角”
单位
- OV单位
”“
(默认)| |字符字符串向量
OV单位,指定为字符串或字符向量。
例子:“度”
ScaleFactor
- - - - - - OV比例因子
1
(默认)|积极有限的标量
机汇比例因子,指定为一个积极的有限的标量。一般来说,使用操作范围的输出变量。指定合适的比例因子可以提高数值条件优化。
例子:90年
ManipulatedVariables
- - - - - -操纵变量信息,范围和规模的因素
结构数组
操纵变量(MV)信息、范围和规模因素,指定为一个结构数组Nmv元素,Nmv是操纵变量的数量。要访问该属性,您可以使用别名MV
而不是ManipulatedVariables
。
每个结构元素有以下字段。
最小值
- - - - - - MV下界
负
(默认)|标量|向量
MV下界,指定为一个标量或矢量。默认情况下,这个下界负
。
使用相同的绑定在预测地平线,指定一个标量值。
不同的绑定预测地平线k时间k+p1、指定的向量p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后必然是用于预测地平线的其余步骤。
例子:(-1.1 - 1)
马克斯
- - - - - - MV上界
正
(默认)|标量|向量
MV上界,指定为一个标量或矢量。默认情况下,这个上限+正
。
使用相同的绑定在预测地平线,指定一个标量值。
不同的绑定预测地平线k时间k+p1、指定的向量p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后必然是用于预测地平线的其余步骤。
例子:(1.2 - 1)
MinECR
- MV下界柔软
0
(默认)|非负标量|向量
MV下界柔软,一个更大的ECR值表示软约束,指定为负的标量或矢量。默认情况下,MV下界是硬约束。
使用相同的ECR值预测地平线,指定一个标量值。
改变ECR值对预测地平线k时间k+p1、指定的向量p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后ECR值用于预测地平线的其余步骤。
例子:0.1 [0]
MaxECR
- - - - - - MV上界
0
(默认)|非负标量|向量
MV上界柔软,一个更大的ECR值表示软约束,指定为负的标量或矢量。默认情况下,MV上界是硬约束。
使用相同的ECR值预测地平线,指定一个标量值。
改变ECR值对预测地平线k时间k+p1、指定的向量p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后ECR值用于预测地平线的其余步骤。
例子:(0.5 - 0.2)
杀鼠灵
- MV变化率下界
负
(默认)|负值的标量|向量
MV变化率下界,指定为负值的标量或矢量。MV的改变被定义为MV(k)- - -MV(k1),k是当前时间。默认情况下,这个下界负
。
使用相同的绑定在预测地平线,指定一个标量值。
不同的绑定预测地平线k时间k+p1、指定的向量p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后必然是用于预测地平线的其余步骤。
例子:(-50 -20)
RateMax
- MV变化率上界
正
(默认)|非负标量|向量
MV变化率上界,指定为负的标量或矢量。MV的改变被定义为MV(k)- - -MV(k1),k是当前时间。默认情况下,这个上限+正
。
使用相同的绑定在预测地平线,指定一个标量值。
不同的绑定预测地平线k时间k+p1、指定的向量p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后必然是用于预测地平线的其余步骤。
例子:50 [20]
RateMinECR
- MV变化率下界柔软
0
(默认)|非负有限标量|向量
MV变化率下界柔软,一个更大的ECR值表示软约束,指定为非负有限标量或矢量。默认情况下,MV变化率下界是硬约束。
使用相同的ECR值预测地平线,指定一个标量值。
改变ECR值对预测地平线k时间k+p1、指定的向量p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后使用ECR值预测地平线的其余步骤。
例子:0.1 [0]
RateMaxECR
- MV变化率上界柔软
0
(默认)|非负有限标量|向量
MV变化率上界柔软,一个更大的ECR值表示软约束,指定为非负有限标量或矢量。默认情况下,MV变化率上界是硬约束。
使用相同的ECR值预测地平线,指定一个标量值。
改变ECR值对预测地平线k时间k+p1、指定的向量p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后使用ECR值预测地平线的其余步骤。
例子:(1)0.5 - 0.2)
的名字
- - - - - - MV的名字
字符串|字符向量
MV名称指定为字符串或字符向量。默认的MV的名字是“u”#
,在那里#
是它的输入指标。
例子:“舵角”
单位
- MV单位
”“
(默认)| |字符字符串向量
MV单位,指定为字符串或字符向量。
例子:“度”
ScaleFactor
- - - - - - MV比例因子
1
(默认)|积极有限的标量
MV比例因子,指定为一个积极的有限的标量。一般来说,使用操作操纵变量的范围。指定合适的比例因子可以提高数值条件优化。
例子:60
MeasuredDisturbances
- - - - - -测量扰动信息和规模的因素
结构数组
测量扰动(MD)信息和规模因素,指定为一个结构数组N医学博士元素,N医学博士是测量扰动的数量。如果你的模型没有测量干扰,那么MeasuredDisturbances
是[]
。要访问该属性,您可以使用别名医学博士
而不是MeasuredDisturbances
。
每个结构元素有以下字段。
的名字
——MD的名字
字符串|字符向量
医学名称,指定为字符串或字符向量。默认的MD的名字是“u”#
,在那里#
是它的输入指标。
例子:“风速”
单位
- MD单位
”“
(默认)| |字符字符串向量
MD单位,指定为字符串或字符向量。
例子:“米/秒”
ScaleFactor
——MD比例因子
1
(默认)|积极有限的标量
医学博士比例因子,指定为一个积极的有限的标量。一般来说,使用操作范围的干扰。指定合适的比例因子可以提高数值条件优化。
例子:10
权重
- - - - - -标准成本函数优化权重
结构
标准成本优化权重函数,指定为一个结构。控制器适用于这些权重比例变量。因此,优化权重是无量纲值。
请注意
如果你定义一个自定义代价函数使用Optimization.CustomCostFcn
并设置Optimization.ReplaceStandardCost
来真正的
,那么控制器忽略了标准成本函数优化权重权重
。
权重
有以下字段。
ManipulatedVariables
——被控变量优化权重
行向量|数组
被控变量优化权重,这惩罚MV的偏离目标,指定为一个行向量或负的值的数组。所有操纵变量的默认重量0
。
使用相同的权重预测地平线,指定一个行向量的长度Nmv,在那里Nmv是操纵变量的数量。
不同的调优权重预测地平线k时间k+p1、指定数组Nmv列和p行。在这里,k当前时间和吗p是预测地平线。每行包含操纵变量优化权重预测地平线的一步。如果你指定不到p行,最后一行的权重是用于预测地平线的其余步骤。
在运行时指定MV目标,在仿真软件金宝app®,通过目标价值非线性MPC控制器块。在MATLAB中,通过目标函数值来模拟(如nlmpcmove
,使用MVTarget
财产的nlmpcmoveopt
对象)。
例子:(0.1 - 0.2)
ManipulatedVariablesRate
——被控变量率优化权重
行向量|数组
操纵可变利率调整权重,这惩罚发生巨大变化,控制措施,指定为一个行向量或负的值的数组。所有被控变量的默认体重率0.1
。
使用相同的权重预测地平线,指定一个行向量的长度Nmv,在那里Nmv是操纵变量的数量。
不同的调优权重预测地平线k时间k+p1、指定数组Nmv列和p行。在这里,k当前时间和吗p是预测地平线。每行包含被控变量率优化权重预测地平线的一步。如果你指定不到p行,最后一行的权重是用于预测地平线的其余步骤。
例子:(0.1 - 0.1)
OutputVariables
——输出变量优化权重
矢量|数组
输出变量优化权重,这惩罚偏离输出引用指定为一个行向量或负的值的数组。所有输出变量的默认重量1
。
使用相同的权重预测地平线,指定一个行向量的长度Ny,在那里Ny输出变量的数量。
不同的调优权重预测地平线k+ 1,k+p,指定数组Ny列和p行。在这里,k当前时间和吗p是预测地平线。每行包含一个预测地平线步骤的输出变量优化权重。如果你指定不到p行,最后一行的权重是用于预测地平线的其余步骤。
例子:(0.1 - 0.1)
ECR
-松弛变量优化重量
1 e5
(默认)|积极的标量
松弛变量调整体重,指定为一个积极的标量。
例子:1 e4
优化
- - - - - -自定义优化函数和求解
结构
自定义优化函数和求解,与以下字段指定为一个结构。
CustomCostFcn
——自定义代价函数
[]
| | |字符字符串向量函数处理
自定义代价函数,指定为以下之一:
请注意
只有一个单独的文件中定义的函数在当前文件夹或MATLAB路径支持C / c++代码生成。金宝app因此,指定状态、输出成本,或约束函数(或其雅克比)不推荐本地或匿名函数。
你的成本函数必须有签名:
函数J = myCostFunction (X, U, e,数据,参数)
有关更多信息,请参见为非线性MPC指定成本函数。
例子:@costFcn
ReplaceStandardCost
——选项来代替标准成本函数
真正的
(默认)|假
选项来代替标准成本函数与自定义代价函数,指定为以下之一:
真正的
——控制器使用单独定制成本作为优化目标函数。在这种情况下,权重
控制器的属性将被忽略。假
控制器使用标准成本和定制成本之和作为目标函数在优化。
如果你不指定一个自定义代价函数使用CustomCostFcn
忽略,那么控制器RepalceStandardCost
。
有关更多信息,请参见为非线性MPC指定成本函数。
例子:真正的
CustomEqConFcn
——自定义等式约束函数
[]
(默认)| | |字符字符串向量函数处理
自定义等式约束函数,指定为以下之一:
请注意
只有一个单独的文件中定义的函数在当前文件夹或MATLAB路径支持C / c++代码生成。金宝app因此,指定状态、输出成本,或约束函数(或其雅克比)不推荐本地或匿名函数。
你的等式约束函数必须有签名:
函数测查= myEqConFunction (X, U,数据,参数)
有关更多信息,请参见为通用非线性MPC指定约束。
例子:@eqFcn
CustomIneqConFcn
——自定义不等式约束函数
[]
(默认)| | |字符字符串向量函数处理
定制的不等式约束函数,指定为以下之一:
请注意
只有一个单独的文件中定义的函数在当前文件夹或MATLAB路径支持C / c++代码生成。金宝app因此,指定状态、输出成本,或约束函数(或其雅克比)不推荐本地或匿名函数。
你的等式约束函数必须有签名:
函数cineq = myIneqConFunction (X, U, e,数据,参数)
有关更多信息,请参见为通用非线性MPC指定约束。
例子:@ineqFcn
CustomSolverFcn
——自定义非线性规划求解器进行求解
[]
(默认)| | |字符字符串向量函数处理
自定义非线性规划求解函数,指定为一个字符串,特征向量,或函数句柄。如果你没有优化工具箱™软件,您必须指定您自己的自定义非线性规划求解器进行求解。您可以指定您的自定义解决函数以以下方式之一:
函数的名字在当前工作目录或MATLAB路径,指定为字符串或字符向量
优化。CustomSolverFcn =“myNLPSolver”;
处理本地函数,或一个函数定义在当前工作目录或MATLAB路径
优化。CustomSolverFcn = @myNLPSolver;
有关更多信息,请参见为非线性MPC配置优化解算器。
例子:@mySolver
SolverOptions
——解决方案
选择对象fmincon
|[]
解算器选项,指定对象作为一个选项fmincon
或[]
。
如果你有优化工具箱软件,SolverOptions
对象包含一个选项fmincon
解算器。
如果你没有优化工具箱,SolverOptions
是[]
。
有关更多信息,请参见为非线性MPC配置优化解算器。
RunAsLinearMPC
——选择模拟线性控制器
“关闭”
(默认)|“自适应”
|“TimeVarying”
选择模拟线性控制器,指定为以下之一:
使用的“自适应”
或“TimeVarying”
选项,控制器必须没有自定义约束和自定义代价函数。
为例,模拟非线性MPC控制器的线性控制器,明白了优化和控制使用非线性MPC馈料式反应堆。
例子:“自适应”
UseSuboptimalSolution
——选择接受一个次优的解决方案
假
(默认)|真正的
选择接受一个次优的解决方案,指定为一个逻辑值。当非线性规划解算器达到最大迭代次数(退出标志是没有找到一个解决方案0
),控制器:
MV值如果结冰
UseSuboptimalSolution
是假
应用的理想解决方案解决者最后的迭代后如果发现
UseSuboptimalSolution
是真正的
指定的最大迭代数,使用Optimization.SolverOptions.MaxIter
。
例子:真正的
MVInterpolationOrder
——线性插值用于块移动
0
(默认)|1
所使用的线性插值顺序块移动时,指定为以下之一:
0
——使用分段常数操纵变量区间。1
——使用分段线性操纵变量区间。
如果控制地平线是一个标量,那么控制器忽略MVInterpolationOrder
。
有关被控变量的更多信息阻塞,明白了被控变量阻塞。
例子:1
雅可比矩阵
- - - - - -雅克比的模型函数和自定义成本和约束功能
结构
雅克比的模型函数和自定义成本和约束函数,指定为一个结构。作为一项最佳实践,利用雅克比时是可用的,因为他们提高优化效率。如果你不指定一个雅可比矩阵对于一个给定的函数,非线性规划解算器必须数值计算雅可比矩阵。
的雅可比矩阵
结构包含以下字段。
StateFcn
-雅可比矩阵的状态函数
[]
(默认)| | |字符字符串向量函数处理
雅可比矩阵的函数z
从Model.StateFcn
,指定为以下之一
请注意
只有一个单独的文件中定义的函数在当前文件夹或MATLAB路径支持C / c++代码生成。金宝app因此,指定状态、输出成本,或约束函数(或其雅克比)不推荐本地或匿名函数。
有关更多信息,请参见为非线性MPC指定预测模型。
例子:@Afcn
OutputFcn
-雅可比矩阵的输出函数
[]
(默认)| | |字符字符串向量函数处理
雅可比矩阵的输出函数y
从Model.OutputFcn
,指定为以下之一:
函数的名字在当前工作目录或MATLAB路径,指定为字符串或字符向量
Model.StateFcn=“myOutputJacobian”;
处理本地函数,或一个函数定义在当前工作目录或MATLAB路径
Model.StateFcn=@myOutputJacobian;
本地函数的更多信息,请参阅本地函数。
匿名函数
Model.StateFcn=@(x,u,params) myOutputJacobian(x,u,params)
请注意
只有一个单独的文件中定义的函数在当前文件夹或MATLAB路径支持C / c++代码生成。金宝app因此,指定状态、输出成本,或约束函数(或其雅克比)不推荐本地或匿名函数。
有关更多信息,请参见为非线性MPC指定预测模型。
例子:@Cfcn
CustomCostFcn
-雅可比矩阵的自定义代价函数
[]
| | |字符字符串向量函数处理
雅可比矩阵的自定义代价函数J
从Optimization.CustomCostFcn
,指定为以下之一:
请注意
只有一个单独的文件中定义的函数在当前文件夹或MATLAB路径支持C / c++代码生成。金宝app因此,指定状态、输出成本,或约束函数(或其雅克比)不推荐本地或匿名函数。
你的成本可比矩阵函数必须有签名:
函数(G, Gmv,通用电气)= myCostJacobian (X, U, e,数据、参数)
有关更多信息,请参见为非线性MPC指定成本函数。
例子:@costJacFcn
CustomEqConFcn
-雅可比矩阵的自定义等式约束
[]
(默认)| | |字符字符串向量函数处理
雅可比矩阵的自定义等式约束量表信
从Optimization.CustomEqConFcn
,指定为以下之一:
请注意
只有一个单独的文件中定义的函数在当前文件夹或MATLAB路径支持C / c++代码生成。金宝app因此,指定状态、输出成本,或约束函数(或其雅克比)不推荐本地或匿名函数。
你的雅可比矩阵等式约束函数必须有签名:
函数(G, Gmv) = myEqConJacobian (X, U,数据、参数)
有关更多信息,请参见为通用非线性MPC指定约束。
例子:@eqJacFcn
CustomIneqConFcn
-雅可比矩阵的定制的不等式约束
[]
(默认)| | |字符字符串向量函数处理
雅可比矩阵的定制的不等式约束c
从Optimization.CustomIneqConFcn
,指定为以下之一:
请注意
只有一个单独的文件中定义的函数在当前文件夹或MATLAB路径支持C / c++代码生成。金宝app因此,指定状态、输出成本,或约束函数(或其雅克比)不推荐本地或匿名函数。
你的雅可比矩阵不等式约束函数必须有签名:
函数(G, Gmv,通用电气)= myIneqConJacobian (X, U,数据、参数)
有关更多信息,请参见为通用非线性MPC指定约束。
例子:@ineqJacFcn
被动
- - - - - -被动约束
结构
被动约束,与以下字段指定为一个结构。
当你的非线性MPC控制器配置为使用被动约束,在每一步优化算法试图执行不等式约束:
。
在这里,νy是输出被动指数,νu是输入被动指数,up(x,u)是被动输入函数,yp(x,u)是被动的输出函数。的变量x和u的当前状态和输入预测模型。
假设工厂已经被动的输入-输出up和yp验证,如果这两个不平等,那么在温和的条件下()生成的闭环系统往往随时间消散的能量,因此有一个稳定的平衡。被动看到更多的信息为通用非线性MPC指定约束在线性系统的背景下,被动,被动的指数。有关示例,请参见控制使用Passivity-Based Quadruple-Tank非线性MPC和控制机器人机械手使用Passivity-Based非线性MPC。
EnforceConstraint
——选项强制约束
假
(默认)|真正的
选项强制约束,指定为以下之一:
真正的
在优化——被动约束执行。在这种情况下,您必须指定OutputFcn
和InputFcn
属性。假
在优化——被动约束并不执行。
例子:真正的
OutputPassivityIndex
——所需的控制器输出被动指数
0.1
(默认)|负的标量
指定的控制器,期望输出值被动指数为负的标量。
如果Passivity.EnforceConstraint
是真正的
,每一步优化算法试图执行被动不等式约束,其中包括被动指数νy中指定的Passivity.OututPassivityIndex
。
例子:1
InputPassivityIndex
——所需的输入控制器被动指数
0
(默认)|负的标量
指定的控制器,期望输出值被动指数为负的标量。
如果Passivity.EnforceConstraint
是真正的
,每一步优化算法试图执行被动不等式约束,其中包括被动指数νu中指定的Passivity.InputPassivityIndex
。
例子:1
OutputFcn
——被动输出函数
[]
(默认)| | |字符字符串向量函数处理
被动输出函数,指定为一个字符串,特征向量,或函数句柄。
如果Passivity.EnforceConstraint
是真正的
然后在每一步优化算法试图执行输入和输出不等式约束,这涉及到函数yp(x,u)中指定的Passivity.OutputFcn
。
你可以指定被动输出函数作为下列之一:
请注意
只有一个单独的文件中定义的函数在当前文件夹或MATLAB路径支持C / c++代码生成。金宝app因此,指定状态、输出成本,或约束函数(或其雅克比)不推荐本地或匿名函数。
在这里,x
和u
分别是预测模型状态和输入,然后呢参数个数
是一个可选的逗号分隔列表的参数(例如p1, p2, p3
),可能需要您所指定的函数。如果你的任何函数使用可选参数,您必须指定参数的数量Model.NumberOfParameters
。在运行时,在仿真软件,然后通过这金宝app些参数非线性MPC控制器块。在MATLAB中,您传递的参数(如模拟功能nlmpcmove
,使用一个nlmpcmoveopt
选项设置对象)。
例子:@ypFcn
InputFcn
——被动输入函数
字符串| |特征向量函数句柄
被动输出函数,指定为一个字符串,特征向量,或函数句柄。如果Passivity.EnforceConstraint
是真正的
然后在每一步优化算法试图执行输入和输出不等式约束,这涉及到函数up(x,u)中指定的Passivity.OutputFcn
。
你可以指定你的被动输入函数为以下之一:
请注意
只有一个单独的文件中定义的函数在当前文件夹或MATLAB路径支持C / c++代码生成。金宝app因此,指定状态、输出成本,或约束函数(或其雅克比)不推荐本地或匿名函数。
在这里,x
和u
分别是预测模型状态和输入,然后呢参数个数
是一个可选的逗号分隔列表的参数(例如p1, p2, p3
),可能需要您所指定的函数。如果你的任何函数使用可选参数,您必须指定参数的数量Model.NumberOfParameters
。在运行时,在仿真软件,然后通过这金宝app些参数非线性MPC控制器块。在MATLAB中,您传递的参数(如模拟功能nlmpcmove
,使用一个nlmpcmoveopt
选项设置对象)。
例子:@upFcn
OutputJacobianFcn
-雅可比矩阵的被动输出函数
[]
(默认)| | |字符字符串向量函数处理
雅可比矩阵的被动输出函数Passivity.OutputFcn
,指定为以下之一:
请注意
只有一个单独的文件中定义的函数在当前文件夹或MATLAB路径支持C / c++代码生成。金宝app因此,指定状态、输出成本,或约束函数(或其雅克比)不推荐本地或匿名函数。
在这里,x
和u
分别是预测模型状态和输出,然后呢参数个数
是一个可选的逗号分隔列表(例如p1, p2, p3
)的参数可能需要您所指定的函数。如果你的任何函数使用可选参数,您必须指定参数的数量Model.NumberOfParameters
。在运行时,在仿真软件,然后通过这金宝app些参数非线性MPC控制器块。在MATLAB中,您传递的参数(如模拟功能nlmpcmove
,使用一个nlmpcmoveopt
)。
中指定的功能Passivity.OutputJacobianFcn
(如果有的话)必须返回作为第一个输出参数输出的雅可比矩阵被动函数(一个当前状态Nyp通过Nx矩阵),并作为第二个输出参数输出的雅可比矩阵被动函数(一个关于操纵变量Nyp通过Nmv矩阵)。
在这里,Nx是状态变量的数量预测模型,Nmv操纵变量和的数量吗Nyp是被动输出函数的输出的数量。
例子:@ypJac
InputJacobianFcn
-雅可比矩阵的被动输入函数
[]
(默认)| | |字符字符串向量函数处理
雅可比矩阵的被动输入函数Passivity.InputFcn
,指定为以下之一
请注意
只有一个单独的文件中定义的函数在当前文件夹或MATLAB路径支持C / c++代码生成。金宝app因此,指定状态、输出成本,或约束函数(或其雅克比)不推荐本地或匿名函数。
在这里,x
和u
分别是预测模型状态和输出,然后呢参数个数
是一个可选的逗号分隔列表(例如p1, p2, p3
)的参数可能需要您所指定的函数。如果你的任何函数使用可选参数,您必须指定参数的数量Model.NumberOfParameters
。在运行时,在仿真软件,然后通过这金宝app些参数非线性MPC控制器块。在MATLAB中,您传递的参数(如模拟功能nlmpcmove
,使用一个nlmpcmoveopt
)。
中指定的功能Passivity.InputJacobianFcn
(如果有的话)必须返回作为第一个输出参数输入被动的雅可比矩阵函数(一个当前状态Nup通过Nx矩阵),并作为第二个输出参数输入被动的雅可比矩阵函数(一个关于操纵变量Nup通过Nmv矩阵)。
在这里,Nx是状态变量的数量预测模型,Nmv操纵变量和的数量吗Nup是输出的数量的被动输入函数。
例子:@upFcn
UsePredictedState
——选择使用预测或当前状态
真正的
(默认)|假
选择使用预测或当前状态,指定为以下之一:
真正的
- - - - - -x (k + 1)是一个决策变量的优化问题。假
- - - - - -x [k]是一个决策变量的优化问题。
例子:真正的
对象的功能
nlmpcmove |
计算最优控制行动非线性MPC控制器 |
validateFcns |
分析预测模型和自定义的函数nlmpc 或nlmpcMultistage 对象的潜在问题 |
convertToMPC |
转换nlmpc 到一个或多个对象货币政策委员会 对象 |
createParameterBus |
创建金宝app总线对象和配置总线创造者块传递模型参数非线性MPC控制器 |
例子
创建非线性MPC控制器离散时间预测模型
创建一个非线性MPC控制器有四个州,两个输出,和一个输入。
nx = 4;纽约= 2;ν= 1;nlobj = nlmpc (nx、纽约、ν);
零权重应用于一个或多个ov因为有MVs比ov少。
指定控制器的样品时间和视野。
t = 0.1;nlobj。Ts=Ts;nlobj。PredictionHorizon = 10;nlobj。ControlHorizon = 5;
指定控制器的状态函数,在这个文件中pendulumDT0.m
。离散时间模型集成了连续时间模型中定义pendulumCT0.m
使用多步向前欧拉方法。
nlobj.Model。StateFcn =“pendulumDT0”;nlobj.Model。IsContinuousTime = false;
离散时间状态函数使用一个可选参数,样品时间Ts
,将连续时间模型。因此,您必须指定数量的可选参数1
。
nlobj.Model。Nu米berOfParameters = 1;
指定的输出函数控制器。在本例中,第一个和第三个国家定义为输出。尽管这个输出函数不使用可选的样品时间参数,您必须指定参数作为输入参数(Ts
)。
nlobj.Model。OutputFcn =@(x,u,Ts) [x(1); x(3)];
验证预测模型的功能为名义上的国家x0
和名义上的投入情况
。由于预测模型使用一个自定义参数,您必须通过这个参数validateFcns
。
x0 =[0.1; 0.2; 0.3 -π/ 2,);情况= 0.4;validateFcns (nlobj x0,情况,[],{Ts});
Model.StateFcn是OK. Model.OutputFcn is OK. Analysis of user-provided model, cost, and constraint functions complete.
创建非线性MPC控制器测量和不可测量的干扰
创建一个非线性MPC控制器三个州,一个输出,和四个输入。前两个输入测量干扰,第三个输入是操纵变量,和第四输入是一个无边无际的干扰。
nlobj = nlmpc (3、1、“MV”3,“医学博士”(1 - 2),“UD”4);
视图控制器状态、输出和输入维度和指标,使用维
控制器的属性。
nlobj.Dimensions
ans =结构体字段:NumberOfStates: 3 NumberOfOutputs: 1 NumberOfInputs: 4 MVIndex: 3 MDIndex: [1 - 2] UDIndex: 4
指定控制器样品时间和视野。
nlobj。Ts=0。5; nlobj.PredictionHorizon = 6; nlobj.ControlHorizon = 3;
指定预测模型状态函数,该文件exocstrStateFcnCT.m
。
nlobj.Model。StateFcn =“exocstrStateFcnCT”;
指定预测模型的输出功能,在文件中exocstrOutputFcn.m
。
nlobj.Model。OutputFcn =“exocstrOutputFcn”;
验证预测模型的功能使用初始操作点作为名义条件测试和设置无限的扰动状态,x0 (3)
,0
。自模型测量干扰,必须通过他们validateFcns
。
x0 = (311.2639;8.5698;0);情况= [10;298.15;298.15);validateFcns (x0, nlobj情况(3),情况(1:2)');
Model.StateFcn是OK. Model.OutputFcn is OK. Analysis of user-provided model, cost, and constraint functions complete.
货币政策委员会验证非线性预测模型和自定义函数
创建非线性MPC控制器与六个州,六个输出,和四个输入。
nx = 6;纽约= 6;ν= 4;nlobj = nlmpc (nx、纽约、ν);
零权重应用于一个或多个ov因为有MVs比ov少。
指定控制器样品时间和视野。
t = 0.4;p = 30;c = 4;nlobj。Ts=Ts;nlobj。PredictionHorizon = p;nlobj。ControlHorizon = c;
指定预测模型状态函数和雅可比矩阵的状态函数。对于这个示例,使用模型的飞行机器人。
nlobj.Model。StateFcn =“FlyingRobotStateFcn”;nlobj.Jacobian。StateFcn =“FlyingRobotStateJacobianFcn”;
指定一个自定义代价函数控制器,取代了标准的成本函数。
nlobj.Optimization。CustomCostFcn =@(X,U,e,data) Ts*sum(sum(U(1:p,:))); nlobj.Optimization.ReplaceStandardCost = true;
指定一个自定义的约束函数控制器。
nlobj.Optimization。CustomEqConFcn =@(X,U,data) X(end,:)';
验证预测模型和自定义函数在初始状态(x0
)和初始输入(情况
)的机器人。
x0 =(-10; -10;π/ 2,0,0,0);情况= 0(ν,1);validateFcns (nlobj x0,情况);
Model.StateFcn是OK. Jacobian.StateFcn is OK. No output function specified. Assuming "y = x" in the prediction model. Optimization.CustomCostFcn is OK. Optimization.CustomEqConFcn is OK. Analysis of user-provided model, cost, and constraint functions complete.
从非线性MPC控制器创建线性MPC控制器
创建一个非线性MPC控制器有四个州,一个输出变量,一个被控变量,一个测量干扰。
nlobj = nlmpc (4 1“MV”,1“医学博士”2);
指定控制器样品时间和视野。
nlobj。PredictionHorizon = 10;nlobj。ControlHorizon = 3;
指定的态函数预测模型。
nlobj.Model。StateFcn =“oxidationStateFcn”;
指定输出变量预测模型的输出功能和规模的因素。
nlobj.Model。OutputFcn =@(x,u) x(3); nlobj.OutputVariables.ScaleFactor = 0.03;
指定被控变量约束和比例因子。
nlobj.ManipulatedVariables。最小值= 0.0704;nlobj.ManipulatedVariables。Max = 0.7042;nlobj.ManipulatedVariables。ScaleFactor = 0.6;
指定测量干扰比例因子。
nlobj.MeasuredDisturbances。ScaleFactor = 0.5;
计算状态和输入操作条件三个线性MPC控制器使用fsolve
函数。
选择= optimoptions (“fsolve”,“显示”,“没有”);uLow = (0.38 - 0.5);xLow = fsolve (@ (x) oxidationStateFcn (x, uLow)(0.3 - 0.03 1)选项);uMedium = (0.24 - 0.5);xMedium = fsolve (@ (x) oxidationStateFcn (x, uMedium)(0.3 - 0.03 1)选项);uHigh = (0.15 - 0.5);xHigh = fsolve (@ (x) oxidationStateFcn (x, uHigh)(0.3 - 0.03 1)选项);
创建这些名义上的线性MPC控制器为每个条件。
mpcobjLow = convertToMPC (nlobj xLow uLow);mpcobjMedium = convertToMPC (nlobj xMedium uMedium);mpcobjHigh = convertToMPC (nlobj xHigh uHigh);
您还可以创建多个控制器使用数组的名义条件。的行数的数组指定要创建的数字控制器。线性控制器作为细胞数组返回货币政策委员会
对象。
u = [uLow;uMedium;uHigh];x = [xLow;xMedium;xHigh];mpcobjs = convertToMPC (nlobj, x, u);
视图的属性mpcobjLow
控制器。
mpcobjLow
MPC对象(03 - mar - 2023上创建05:58:18):- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -采样时间:1(秒)预测地平线:10控制层:3工厂模式:- - - - - - - - - - - - - - - - 1操纵变量(s) - - > | 4州| | | - - > 1测量输出(s)测量扰动(s) - - >输入| 2 | | | - - > 0无边无际的输出(s) 0无边无际的干扰(s) - - > | | 1输出- - - - - - - - - - - - - - - -指数:(输入向量)操纵变量:[1]测量干扰:[2](输出向量)测量输出:[1]干扰和噪声模型:输出扰动模型:默认(类型”getoutdist (mpcobjLow)”)测量噪声模型:默认(缩放后单位增益)重量:ManipulatedVariables: 0 ManipulatedVariablesRate: 0.1000 OutputVariables: 1 ECR: 100000状态估计:默认的卡尔曼滤波器类型(“getEstimator (mpcobjLow)”)约束:0.0704 < = u1 < = 0.7042, u1 /率无约束,日元是无约束使用内置的“激活集”与120年MaxIterations QP解算器。
计划使用非线性MPC最优轨迹
创建一个非线性MPC控制器与六个州,六个输出,和四个输入。
nx = 6;纽约= 6;ν= 4;nlobj = nlmpc (nx、纽约、ν);
零权重应用于一个或多个ov因为有MVs比ov少。
指定控制器样品时间和视野。
t = 0.4;p = 30;c = 4;nlobj。Ts=Ts;nlobj。PredictionHorizon = p;nlobj。ControlHorizon = c;
指定预测模型状态函数和雅可比矩阵的状态函数。对于这个示例,使用模型的飞行机器人。
nlobj.Model。StateFcn =“FlyingRobotStateFcn”;nlobj.Jacobian。StateFcn =“FlyingRobotStateJacobianFcn”;
指定一个自定义代价函数控制器,取代了标准的成本函数。
nlobj.Optimization。CustomCostFcn =@(X,U,e,data) Ts*sum(sum(U(1:p,:))); nlobj.Optimization.ReplaceStandardCost = true;
指定一个自定义的约束函数控制器。
nlobj.Optimization。CustomEqConFcn =@(X,U,data) X(end,:)';
指定线性约束的操纵变量。
为ct = 1:νnlobj.MV (ct)。最小值= 0;nlobj.MV (ct)。Max = 1;结束
验证预测模型和自定义函数在初始状态(x0
)和初始输入(情况
)的机器人。
x0 =(-10; -10;π/ 2,0,0,0);情况= 0(ν,1);validateFcns (nlobj x0,情况);
Model.StateFcn是OK. Jacobian.StateFcn is OK. No output function specified. Assuming "y = x" in the prediction model. Optimization.CustomCostFcn is OK. Optimization.CustomEqConFcn is OK. Analysis of user-provided model, cost, and constraint functions complete.
计算最优状态轨迹和操纵变量,返回的信息
。
[~,~,信息]= nlmpcmove (x0, nlobj情况);
松弛变量未使用或zero-weighted定制成本函数。所有约束将是非常困难的。
情节最优轨迹。
FlyingRobotPlotPlanning(信息,Ts)
最佳的燃油消耗= 1.884953
使用非线性MPC控制器模拟闭环控制
创建一个非线性MPC控制器有四个州,两个输出,和一个输入。
nlobj = nlmpc (4 2 1);
零权重应用于一个或多个ov因为有MVs比ov少。
指定控制器的样品时间和视野。
t = 0.1;nlobj。Ts=Ts;nlobj。PredictionHorizon = 10;nlobj。ControlHorizon = 5;
指定控制器的状态函数,在这个文件中pendulumDT0.m
。离散时间模型集成了连续时间模型中定义pendulumCT0.m
使用多步向前欧拉方法。
nlobj.Model。StateFcn =“pendulumDT0”;nlobj.Model。IsContinuousTime = false;
预测模型使用一个可选参数,Ts
,代表样品时间。指定参数的数量。
nlobj.Model。Nu米berOfParameters = 1;
指定的输出函数模型,通过样本时间参数作为输入参数。
nlobj.Model。OutputFcn =@(x,u,Ts) [x(1); x(3)];
控制器定义标准的约束。
nlobj.Weights。OutputVariables = 3 [3];nlobj.Weights。米anipulatedVariablesRate = 0.1; nlobj.OV(1).Min = -10; nlobj.OV(1).Max = 10; nlobj.MV.Min = -100; nlobj.MV.Max = 100;
验证预测模型的功能。
x0 =[0.1; 0.2; 0.3 -π/ 2,);情况= 0.4;validateFcns (nlobj x0,情况,[],{Ts});
Model.StateFcn是OK. Model.OutputFcn is OK. Analysis of user-provided model, cost, and constraint functions complete.
只有两个植物状态是可衡量的。因此,创建一个扩展卡尔曼滤波估计的四个工厂。其状态转换函数中定义pendulumStateFcn.m
和它的测量中定义的函数pendulumMeasurementFcn.m
。
EKF = extendedKalmanFilter (@pendulumStateFcn @pendulumMeasurementFcn);
为模拟定义初始条件,初始化扩展卡尔曼滤波器的状态,并指定一个零初始操纵变量值。
x =[0, 0, -π;0];y = x (x (1); (3)];卡尔曼滤波器。国家= x;mv = 0;
指定输出的参考价值。
yref = [0 0];
创建一个nlmpcmoveopt
对象,并指定样本的时间参数。
nloptions = nlmpcmoveopt;nloptions。参数= {Ts};
运行仿真10
秒。在每个控制周期:
纠正之前的预测使用当前的测量。
计算最优控制移动使用
nlmpcmove
。这个函数返回计算最优序列nloptions
。通过更新的选择对象nlmpcmove
在接下来的控制区间为最优序列提供了最初的猜测。预测模型。
应用第一个计算最优控制移动到工厂,工厂更新状态。
生成与白噪声传感器数据。
保存植物状态。
时间= 10;xHistory = x;为ct = 1(时间/ Ts):%纠正之前的预测xk =正确(卡尔曼滤波器,y);%计算最优控制动作[mv, nloptions] = nlmpcmove (yref nlobj xk, mv, [], nloptions);%为下一次迭代预测模型预测状态预测(卡尔曼滤波器,[mv;Ts]);%实现第一次最优控制移动x = pendulumDT0 (x, mv, Ts);%生成传感器数据3 y = x ([1]) + randn (2, 1) * 0.01;%保存植物状态xHistory = [xHistory x];结束
情节产生的状态轨迹。
图次要情节(2 2 1)情节(0:Ts:持续时间、xHistory(1:))包含(“时间”)ylabel (“z”)标题(“车位置”次要情节(2,2,2)情节(0:Ts:持续时间、xHistory(2:))包含(“时间”)ylabel (“zdot”)标题(“车速度”次要情节(2,2,3)图(0:Ts:持续时间、xHistory(3:))包含(“时间”)ylabel (“θ”)标题(“摆角”次要情节(2,2,4)图(0:Ts:持续时间、xHistory(4:))包含(“时间”)ylabel (“thetadot”)标题(“摆速度”)
版本历史
介绍了R2018b
另请参阅
功能
对象
块
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。