用于最优控制的简单软件

目录

介绍

问题陈述

线性动态系统

离散时间

线性案例的解决方案

线性案例解决方案的探讨

非线性系统

方法限制

不断反馈

软件的使用

数字示例

线性系统

范德波尔(Van der Pol)振荡器

具有标量控制的Rayleigh方程

具有常数反馈的非线性系统

双连杆机器人操纵器

结论

附录


  • 下载源代码 – 35.2 KB

介绍

处理这个问题甚至它的陈述需要大量的数学。我将仅限于描述问题所需的最低要求,并了解如何使用软件。附录中给出了一些额外的递归公式,没有证明。

问题陈述

让我们正式化我们的问题。动态系统用以下微分方程组描述:

1

其中t是时间,x是状态向量,由表征系统行为的参数组成,/span>x的一阶导数的向量,m是控制向量。通常,控制矢量的维度不超过状态矢量的维度。在该语句中,向量m独立于向量x,并且可以被认为是开环系统的控制。具有输入控制向量m和状态向量x的开环控制系统如下所示:

                                                                                                 开环控制系统

我们希望在0t f的最终时间之间的时间间隔内获得控制策略mt),这最小化了成本函数。

2

其中上标T表示矢量或矩阵的转置,r是期望的状态向量,u是期望的控制向量,QZ分别是用于状态和控制向量的期望参数和实际参数之间的偏差的权重矩阵。在大多数情况下QZ.是对角矩阵(但不一定!)。它们的每个对角线元素定义在给定时刻参数的期望值和实际值之间的差的平方的相对权重。矩阵可以是时间依赖的,例如,通常的做法是在最后时间增加差异的相对权重以确保期望的最终状态。这里提出的问题通常被称为跟踪问题

线性动态系统

在我们找到解决方案之前,让我们讨论动态系统的一个特例。研究最充分的系统类是线性动态系统,即用一组线性微分方程描述动力学的系统。对于这样的系统,等式(1)可以重写如下:

3

其中A(tB(t是矩阵。首先,我们将为这类系统提供解决方案,然后将其扩展到非线性动态系统。

离散时间

由于我们将提供数字解决方案,我们将在离散的时刻处理系统。因此,我们将重新设计离散时间t = k·Δt的问题,其中Δt构成一个小的时间间隔(采样间隔),k是给定的时间步长,0 <= k <Nt f =N-1/span> Δt。现在可以在离散时间内重写等式(1):

4

和线性系统定义为

其中 /span>nbsp;/span>是从 A(t)B(t中获得的矩阵,如下:
  Fk = exp(A(k/span>Δt)/span>Δt) /span> I+A(k/span>Δt)/span>Δt,   Hk = A-1[exp(A(k/span> Δt)/span>Δt) – I]B /span> B(k/span>Δt)/span>Δt,其中I是单位矩阵。

离散时间内的成本函数(2)将被重新整形为

6

线性案例的解决方案

可以基于Bellman的最优性原理获得问题的数值解。结果非常笨重,并在附录中给出。为了一般理解,必须知道k控制策略是在两个主要运行中计算的。首先,从最终时间步骤N-1开始并且下降到初始时间0来执行逆计算运行。使用系统矩阵FH运行逆计算,期望状态r和控制u向量和权重矩阵QZ产生一些向量k和矩阵k。然后从时间0N-1执行直接运行,在每个k时间步长获得矢量k

7

反向和直接计算运行如下图所示:

                                                                              计算方案

向量N-k和矩阵N-k从逆运行中已知并且取决于系统矩阵FH,用 户定义的期望向量和权重。它们还依赖于参与反向运行并从零初始条件开始的辅助矩阵N-k和向量N-k。在直接计算运行的每个步骤中,我们基于此时的状态向量k获得控制向量k。然后使用等式(5)计算下一状态k + 1。重复该过程直到最后一刻N-1给我们提供了开环控制策略k和系统k与时间的状态。声明(7)为我们提供了闭环控制,如下所示

                                                                                           闭环控制系统

其中向量c构成闭环控制,矩阵L提供来自状态向量x反馈。这些参数允许设计者根据系统的实际状态生成矢量m,从而使系统更加稳定和健壮。

线性案例解决方案的探讨

对于线性系统,控制策略k最小成本函数(6)仅通过一次迭代包括一次逆运行和一次直接运行来实现。如上所述,该策略取决于系统矩阵和用户选择的参数,即期望的向量和权重矩阵。这些参数足够直观,可以将控制策略设计减少到与它们一起玩。用户选择一组参数并计算控制策略和适当的状态轨迹。如果她/他对结果不满意,则对另一组期望的矢量和权重矩阵重复计算。观察到系统矩阵FH和权重矩阵Q也是有趣的时间不变,然后反馈矩阵L也将是时不变的,这大大简化了系统控制器的设计。对于线性情况系统矩阵FH通常是时不变的。因此,为了获得时间不变反馈,用户应选择恒定权重矩阵Q,即在最终时刻没有正式严格实现期望的最终状态的控制。在现实生活中适当选择Q.即使在最后一次之前,我们也能在可接受的时间内达到理想的最终状态。尽管使用状态向量坐标实现控制策略很方便,但在现实生活中通常并非所有这些坐标都可用于测量。已经开发了各种技术来克服这个困难。可以使用不同种类的状态坐标观察器来使用可用于测量的坐标的信息来估计未测量的坐标。

非线性系统

非线性系统案例要复杂得多。与线性系统不同,它不能对各种系统做出总体决策。在这里,我们可以尝试使用拟线性化方法将非线性优化问题简化为线性优化问题。为了使用相同的数学解,我们必须以类似于等式(5)的线性化形式呈现由等式(1)给出的一般动态系统描述。为此,我们应该考虑迭代计算过程。我们可线性(1)至(5)在上的特定点/span>M/span>个轨迹:

8

其中

9

线性化系统矩阵FH是在第i个轨迹上的点k处的函数f的适当偏导数的矩阵。第i + 1)条轨迹上的状态和控制矢量可以表示为

10

可以针对增量ΔxΔm公式化等式(8)。在这种情况下,在成本函数(6)中,新向量ru分别对应于

11

这允许我们将非线性问题减少到一系列拟线性迭代,其中每个都在上面的计算方案图中描述。该算法包括以下步骤:

  1. 假设迭代i = 0向量kk(通常所有零接受k = 0初始条件,但选择取决于用户)根据()计算线性化的所有ii为第i个轨迹)。
  2. 根据(11)次迭代为i-th计算新nbsp;nbsp;iü nbsp;i
  3. 使用反向和正向运行作为线性的情况计算Δm nbsp;iΔX nbsp;i
  4. 对于第i + 1次迭代计算i + 1i + 1
  5. 检查条件以停止迭代。该条件可以例如基于与先前迭代相比的成本函数的值之间的差异,或者仅包含固定数量的迭代。无论如何,如果不满足条件,则应重复步骤1-5,直到满足停止条件。在满足条件之后,可以将策略k和状态k视为最终解。

获得函数f偏导数的精确公式可能是繁琐的工作,并且当函数f在数值上定义时变得不可能,例如作为表格。在这些情况下,可以通过给出偏导数的状态向量坐标的小增量来使用简单的数值近似,并计算f函数的结果值。代码示例提供了适当的示例。

方法限制

像任何数字方法一样,这个有其局限性。一个限制是相当明显的,应考虑线性和非线性情况:时间采样间隔应足够小,以保证计算的收敛。ru和权重因子QZ理想值应该是合理的,以实现直观的最佳系统行为。在非线性系统的情况下,我们应该清楚地理解这是没有严格规则的游戏,因此不能保证该技术适用于特定情况。该方法对线性化系统矩阵精度的计算很敏感。可以使用更复杂的方法来估计该方法对特定非线性系统的适用性,但是对于工程师来说,使用尝试失败方法似乎更实用。同样,在某种程度上处理非人体系仍然是艺术而不是科学

不断反馈

与线性情况一样,对于非线性系统,可以考虑具有恒定反馈的控制。为了在非线性情况权重矩阵QZ获得恒定反馈,状态x和控制m初始轨迹应该是时不变的(初始状态0除外),并且应该在一次迭代中实现可接受的结果(因为系统矩阵FH根据(9)计算,取决于先前的迭代轨迹)。通常工程师采用相当非正式的方法进行系统优化,当向成本函数提供最小值时,不是最终目标,而是达到可接受系统行为的手段。因此,为了简化反馈,在某些情况下牺牲进一步的成本函数最小化可能是明智的。当然,像非线性系统中的所有内容一样,并非在所有情况下都是如此。下面将讨论适当的数字示例。

软件的使用

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年3月1日
下一篇 2019年3月1日

相关推荐