MWorks多目标优化

MWorks试验设计工具

模型优化

苏州同元软控信息技术有限公司

2010年10月

目录

1. 概述 .......................................................................................................................... 1

2. 功能特征 .................................................................................................................. 1

3. 基于仿真的多目标优化 .......................................................................................... 1

4. 单目标优化 .............................................................................................................. 2

4.1 简单的数学算例............................................................................................. 2

4.1.1 问题描述.............................................................................................. 2

4.1.2 使用前的准备...................................................................................... 3

4.1.3 参数优化.............................................................................................. 4

4.2 典型的OPB算例 ........................................................................................... 15

4.2.1 问题描述............................................................................................ 15

4.2.2 使用前的准备.................................................................................... 16

4.2.3 参数优化............................................................................................ 17

5. 多目标优化 ............................................................................................................ 20

5.1 多领域仿真模型F14 .................................................................................... 20

5.1.1 问题描述............................................................................................ 21

5.1.2 使用前的准备.................................................................................... 23

5.2 单个调节参数情况....................................................................................... 24

5.3 多个调节参数............................................................................................... 29

5.3.1 优化最大超调量(Overshoot) ............................................................ 29

5.3.2 优化上升时间(RiseTime) ................................................................. 33

5.4 多目标优化................................................................................................... 36

5.4.1 使用不同的参数初值........................................................................ 36

5.4.2 改变目标权值.................................................................................... 38

5.4.3 使用不等式约束条件........................................................................ 40

5.4.4 结果分析与小结................................................................................ 42

6. 多实例优化 ............................................................................................................ 42

6.1 定义实例参数............................................................................................... 42

6.2 检查目标变量指标....................................................................................... 43

6.3 优化上升时间(RiseTime) ............................................................................ 44

6.4 优化最大超调量(Overshoot) ....................................................................... 48

6.5 结果分析与小结........................................................................................... 51

7. 高级选项 ................................................................................................................ 51

7.1 复用先前的设置........................................................................................... 51

7.2 使用命令接口............................................................................................... 52

7.3 多目标聚合方式........................................................................................... 53

8. 参考文献 ................................................................................................................ 53

1. 概述

针对物理系统开发的仿真模型包含许多决定系统行为的参数,例如变速箱的传动比、弹簧系数、控制器的结构参数等,调节这些参数值可以改变系统行为,寻找使得系统整体性能趋向最优的参数值是建模与仿真的关键问题之一。

常见的“启发式”方式,即反复进行“修改参数→仿真→比较结果”,可以起到一定的参数优化效果,但得到的结果精度不高,而且显得效率低下。对线性SISO系统,一般的分析方法(例如最小二乘法)也能得到近似优化的结果。

MWorks参数优化采用基于仿真的多目标优化方法进行参数分析,帮助解决复杂系统建模与仿真中的参数调节问题。在数学上,参数调节过程实为一种优化过程:将调节参数视为优化变量,通过不断改变参数值,如果优化目标达到某种意义上的“最小”,则将当前参数值视为最优参数值。其中,优化目标通常根据仿真结果来计算,例如针对某种响应的最大超调量、上升时间等。

参数优化工具在仿真环境(MWorks Simulator)中运行,与物理模型的编译结果(仿真实例及其对应的求解器)紧密集成,参见“试验→模型优化”菜单。

2. 功能特征

MWorks参数优化工具提供向导式的窗口,支持设置参数研究所要求的各种细节规则,主要特征如下。

(1). 允许多个调节参数,每个参数可设置不同的上下界。

(2). 支持针对多个优化变量定义相应的优化目标,并使用“权值”进行多目标聚合。

(3). 通过多实例优化,使得不同工作条件下的产品性能均达到最优。

(4). 输出调节参数和目标变量迭代过程,优化结束时生成结果变量差异图。

3. 基于仿真的多目标优化

考虑优化问题的三要素:优化变量、目标函数、约束条件,其中,优化变量对应仿真模型中的参数,通过优化算法进行调整;目标函数作为优化算法的计算准则,是对模型性能的一种期望;约束条件限制了变量的变动范围,是必须满足的性能指标。

在基于仿真的优化过程中,优化目标通常根据仿真结果来计算,实际上是将模型求解器作为目标函数来调用,参数优化的执行过程大致如下。

(1). 根据算法需要收集优化变量、目标函数和约束条件,建立优化模型。

(2). 执行(3)—(6)的过程。

(3). 将参数初值或优化算法返回的参数值作为输入参数送入求解器。

(4). 运行求解器得到目标变量的时间序列。

(5). 调用变量估值函数对时序数据进行分析,计算得到一个标量值,将该值作为目标函数值提交给优化算法。更复杂的计算可借助其他分析过程实现,例如频域分析、特征值分析等。

(6). 根据优化变量值和目标函数值判断算法是否达到期望目标,如果达到则迭代过程终止;否则,根据目标函数和约束条件计算得到新的参数值(其中决策过程因算法而异),转(3)继续迭代。

(7). 算法运行结束。

对于多目标优化情况,通常情况下最优解不是唯一的。为此需要对优化目标进行权衡,以获得一种使所有目标“最小化”并且符合用户设计意图的最优解。实际应用一般采用“加权法”将多个目标函数值聚合为一个标量值,将该值作为最终的目标函数值提交给优化算法进行处理。

MWorks在具体操作时,也使用“加权法”这种比较实用的方法支持多目标优化与多实例优化。

4. 单目标优化

下面结合具体实例介绍MWorks参数优化工具的使用方法。

4.1 简单的数学算例

4.1.1 问题描述

首先看一个简单的算例。已知一个矩形的周长,求当长度和宽度分别为何值时矩形的面积最大?

这个问题的答案是众所周知的:当长度等于宽度时矩形的面积是最大的。 下面建立该问题对应的Modelica模型,使用参数优化工具进行求解。

对应的模型文件参考“MWorks\Samples\rectangle_area.mo”。

model rectangle_area

parameter Real perimeter = 400

parameter Real length = 10

Real width

Real area

equation

width = perimeter / 2 - length;

area = length * width;

end rectangle_area;

其中,矩形初值设为:周长perimeter = 400,长度length = 10;此时,宽度width = 190,面积area = 1900。

该问题的精确解为:

length = width = 100,面积最大值area = 10000。

对上述问题,可取参数length为优化变量、area为优化目标建立优化模型,该问题视为无约束的单目标优化问题。

4.1.2 使用前的准备

进行参数优化之前的操作步骤如下:

(1). 启动MWorks Studio,点击菜单“文件→打开”,选择“MWorks\Samples\ rectangle_area.mo”打开rectangle_area模型,初始界面如图4-1所示。

图4-1 打开rectangle_area模型并进行编译

(2). 点击菜单“仿真→编译”,编译生成可运行的求解器。

(3). 点击菜单“仿真→转到仿真环境”,MWorks Simulator在启动时自动更新求解器,生成对应的仿真实例“rectangle_area-1”,结果如图4-2所示。

图4-2 生成仿真实例rectangle_area-1

提示:如果MWorks Simulator正在运行,点击菜单“文件→更新求解器”,也可生成仿真实例“rectangle_area-1”。

至此准备工作结束,点击“试验→模型优化”菜单进行参数优化。

4.1.3 参数优化

下面介绍如何通过参数优化求解矩形面积问题,并详细说明参数配置过程。 从图4-2开始,点击菜单“试验→模型优化”,弹出图4-3所示的参数配置界面。

图4-3 模型优化参数配置向导

模型优化参数配置向导包括8个属性页。

(1). 源模型:选择将要进行参数优化的仿真实例,当参数变动时,系统自动调用与该实例关联的求解器。

(2). 调节参数:选择一个或多个进行调节的参数,对应优化问题的优化变量。显然,所选择的参数必须对目标变量有影响才是可行的,如果改变调节参数之后目标变量输出不变,参数优化将失败。

(3). 优化目标:选择一个或多个目标变量。目标变量泛指模型所需要优化的性能指标,对于优化问题来说,目标变量既可用来计算目标函数值,也可以用来计算约束条件值。

(4). 实例:设置进行多实例优化的实例选项。这里,“实例”对应仿真模型所处的工作条件,由实例参数来定义,例如不同的产品型号、运行工况等。多实例优化是通过改变调节参数,使得仿真模型在不同情况的性能指标均达到最优。

(5). 实例参数:选择一个或多个固定不变的参数,设置各个实例所对应的参数值,这些参数在优化过程中是保持不变的。在多实例优化中,通过不同的实例参数来区分“实例”。

(6). 期望值:设置目标变量对应的期望值。目标变量用来计算目标函数值时,该值视为“权值”;否则视为约束值。对于单目标优化问题,“权值”被忽略。

(7). 求解设置:设置求解起止时间、步长、算法、误差等选项。

(8). 选项:设置优化算法选项,例如收敛误差、最大迭代步数等。

下面结合rectangle_area模型介绍具体的操作步骤(其中部分属性页在后续的实例中进行说明)。

A.首先选择进行参数优化的仿真实例。如图4-3所示,“源模型”列表中显示了当前候选的仿真实例,其中,当前实例“rectangle_area-1”缺省已被选中。

B.下一步,点击图4-3左侧列表中的“调节参数”切换属性页,选择进行优化的参数,如图4-4所示。

图4-4 调节参数属性页(参数集为空)

调节参数来自仿真模型,通过交互方式进行选择。点击“选择”按钮,弹出图4-5所示的选择变量对话框。

图4-5 选择调节参数

按本例要求,从中勾选参数“length”(矩形长度)。注意,选择变量对话框与MWorks Simulator变量浏览器面板中的显示内容有点不同,这一步中只列出允许修改的参数(非独立参数和非参数节点已排除)。

完成参数选择之后,点击“确定”回到调节参数属性页,在其中的列表框中显示出已选中的参数集,如图4-6所示。

图4-6 调节参数属性页

图4-6中列出了选中的参数列表及其全部属性。

(1). 名字:即参数全名。为避免出错,限制不能修改参数名。

(2). 是否生效:指定该参数是否要进行调节(缺省为true)。如果选择不生效(设为false),该参数在模型优化过程中视为固定参数(将调节参数设为不生效实际上改变了模型参数的缺省值,对应改变了模型的运行状态)。MWorks参数优化工具要求必须提供至少1个有效的调节参数。

(3). 名义值:调节参数初始值,缺省来自仿真模型实例,允许修改。

(4). 最小值:设置调节参数的下界,“-1e100”表示不作限制。

(5). 最大值:设置调节参数的上界,“+1e100”表示不作限制。

调节参数由优化算法根据优化目标来确定,并且保证不会超出所指定的参数范围。另外,调节参数的最小值和最大值可以简化算法运行,建议总是设置参数上下界。

本例中,调节参数“length”的名义值设为“10.0”,参数上下界均不作限制。 提示:使用“上移”、“下移”按钮可以改变调节参数生效顺序;使用“删除”按钮可以去除多余的参数。

C.下一步,点击图4-3左侧列表中的“优化目标”切换属性页,选择目标变量,如图4-7所示。

图4-7 优化目标属性页(变量集为空)

结果变量同样来自仿真模型,点击“选择”按钮,弹出图4-8所示对话框。

图4-8 选择优化目标变量

按本例要求,从中勾选变量“area”(矩形面积)。注意,这一步的显示内容与图4-5不同,树形列表中不显示参数。

完成选择之后,点击“确定”回到结果变量属性页,在其中的列表框中显示出已选中的变量集,如图4-9所示。

图4-9 优化目标属性页

图4-9中列出了选中的变量列表及其全部属性。

(1). 名字:即变量全名。为避免出错,限制不能修改变量名。

(2). 是否生效:缺省为true,如果选择不生效(设为false),该变量在模型优化过程中将不参与计算目标函数(或约束条件)。

(3). 估值:选择变量估值函数,本例中的仿真模型为一般非线性时不变模型,选择缺省选项“FinalValue”表示使用变量在求解终止时刻的值计算目标函数(或约束条件)。更多其他选项参考MWorks_Toolkit_Parameter_Analysis.pdf。

(4). 约束:根据“估值”一栏中选择的变量估值函数对仿真结果进行处理后得到一个标量值,“约束”一栏中的属性确定该值的用途,或者是目标函数值,或者是约束条件值。图中选择“Maximize”(最大化)是根据优化问题来确定的,表示矩形面积越大越好。对应的目标权值或约束值在“期望值”属性页设置。

提示:使用“上移”、“下移”按钮可以改变目标变量在列表中的显示顺序,同时改变了其计算顺序;使用“删除”按钮可以去除多余的变量。

与约束相关的目标类型和约束条件参考表4-1。

表4-1 变量约束类型

D.下一步,点击图4-3左侧列表中的“实例”切换属性页,设置实例及其选项,如图

4-10所示。

图4-10 优化实例属性页

其中,

(1). 名字:用于标识不同的优化实例,允许修改。如果有多个实例,实例名不能重复。

(2). 是否生效:缺省为true。如果选择不生效(设为false),该实例将不参与优化过程计算,等同于没有定义。MWorks参数优化工具要求必须提供至少1个有效的优化实例。

(3). 权值:使用“权值”设置优化实例对于优化目标的不同期望,只有1个实例时,该值被忽略。显然,权值必须大于0。

本例中使用缺省实例“Normal”,关于多实例优化相关的应用场景以及界面操作详见第6节——多实例优化。

提示:使用“上移”、“下移”按钮可以改变优化实例在列表中的显示顺序,同时改变了其生效顺序;使用“增加”按钮设置新的(缺省)实例;使用“删除”按钮可以去除多余的实例。

E.下一步,点击图4-3左侧列表中的“实例参数”切换属性页,选择实例参数并赋值,如图4-11所示。

图4-11 实例参数属性页

如前所述,实例参数与优化实例对应的工作条件相关,对于一个具体的实例来说,实例参数是固定不变的。

本例中实际不需要设置实例参数,但为了说明界面元素,选择“perimeter”(矩形周长)作为示例(更一般的情况参考5.4节——多目标优化、第6节——多实例优化)。

(1). 实例参数列表栏目根据实例参数和优化实例建立,横向对应:参数名字、实例1、实例2、…;纵向逐行显示所选择的实例参数,行列顺序与对应属性页中的参数和实例保持一致,例如本例中的缺省实例“Normal”。

(2). 对本例中的优化问题,改变“perimeter”没有使问题的性质发生变化,但直接影响最终的优化结果。为了不破坏前述假设,仍然设置perimeter = 400。

提示:使用“上移”、“下移”按钮可以改变实例参数在列表中的显示顺序;使用“选择”按钮选择实例参数;使用“删除”按钮可以去除多余的参数。 F.下一步,点击图4-3左侧列表中的“期望值”切换属性页,设置优化目标权值或约束条件值,如图4-12所示。

图4-12 期望值属性页

其中,

(1). 期望值列表栏目根据“优化目标”和“实例”属性页中设置的目标变量和优化实例建立,横向对应:目标变量名字、实例1、实例2、…;纵向逐行显示具体的目标变量,行列顺序与对应属性页中的变量和实例保持一致,例如本例中的目标变量“area”和实例“Normal”。更一般的情况参考5.4节——多目标优化、第6节——多实例优化。

(2). 目标变量作为优化目标使用时,期望值视为“权值”(要求大于0);如果作为约束条件,期望值根据优化问题进行赋值。

本例中优化实例为1个缺省实例“Normal”(见图4-10),目标变量有1个“area”(见图4-9),并且作为优化目标使用,故期望值视为“权值”,此处设为缺省值“1.0”(单目标优化时该值被忽略)。

G.下一步,点击图4-3左侧列表中的“求解设置”切换属性页,设置求解器运行选项,如图4-13所示。

图4-13 求解设置属性页

考虑本例中的仿真模型为非线性时不变模型,故全部属性取缺省选项。

提示:对于其他时变模型,需要根据所选目标变量的变化趋势、对应的变量估值函数等因素设置合理的仿真区间、输出步长和积分选项。

H.最后一步,点击图4-3左侧列表中的“选项”切换属性页,设置优化算法选项,如图

4-14所示。

图4-14 优化算法选项

其中,

(1). 优化方法:选择优化算法,缺省为“CVM”(约束变尺度法)。

(2). 相对误差:作为迭代收敛误差,该值范围为1e-8—0.1,缺省值为1e-3。

(3). 最大迭代步数:不能小于10,缺省为100。

(4). 目标聚合方式:适用于多目标优化,只有1个优化目标时该选项被忽略。缺省为“Default”,表示由优化算法决定如何处理。可选的多目标聚合方式参考表7-1。

(5). 步长因子:控制调节参数变更精度,该值范围为1e-6—1.0,缺省为5e-3。

(6). 分步显示迭代信息:缺省true,这样,在迭代过程中输出栏将分步显示调节参数的变动细节,以及对应的优化目标和约束条件在该步的结果。

本例中,步长因子设为1e-4,其余取缺省选项。

I. 参数配置完成,建议将本次参数配置结果保存为外部脚本文件,以便复用。 点击“确定”执行模型优化,经过7次迭代之后得到结果,如图4-15所示。

图4-15 参数优化的输出结果

其中,

(1). 曲线窗口中显示了目标变量在优化前后的结果,分别用蓝色曲线和红色曲线表示。本例中优化前后area(矩形面积)分别等于1900、9999.9999,优化结果对比精确解的相对误差为1e-8。

(2). 在输出栏中给出了调节参数的最优解。本例中length = 100.01,优化结果对比精确解的相对误差为1e-4。如果选中了“分步显示迭代信息”(参考图4-14),在迭代过程中输出栏还将分步显示调节参数的变动细节,以及对应的优化目标值和约束条件值。

(3). 变量浏览器中生成了模型标定之后的仿真实例“rectangle_area-2”,其中调节参数已设为其最优解(如果存在实例参数,其参数值也并入实例中),可以从中观察模型其他变量指标在优化前后的差异情况。

从图4-15看出,参数优化后得到期望的结果。

4.2 典型的OPB算例

4.2.1 问题描述

接下来测试OPB算法库中的考题7,这是一个典型的非线性、单目标约束优化问题,数学模型如下。

min f(x) = x1*x4*(x1+x2+x3)+x3

s.t. 25 - x1*x2*x3*x4≤0

x1+x2+x3+x4−40=0

1≤xi≤5, i=1, 2, 3, 4

该问题的理论最优值如下:

x[]={ 1, 4.7429994, 3.8211503, 1.3794082 };min f(x)=17.0140173。 2222

下面建立该问题对应的Modelica模型,使用参数优化工具进行求解。对应的模型文件参考“MWorks\Samples\opb_cvm_ex7.mo”。 model opb_cvm_ex7

parameter Real x1 = 1

parameter Real x2 = 5

parameter Real x3 = 5

parameter Real x4 = 1

Real f

Real eq_c

Real ne_c

equation

f = x1 * x4 * (x1 + x2 + x3) + x3;

eq_c = x1 * x1 + x2 * x2 + x3 * x3 + x4 * x4;

ne_c = x1 * x2 * x3 * x4;

end opb_cvm_ex7;

本例中,取参数 x1, x2, x3, x4 为优化变量,初值 x[]={1,5,5,1}、f 为优化目标(初始时极值等于16)、eq_c, ne_c 为约束条件建立优化模型。

注意所选的参数初值不满足等式约束条件 ne_c,因而是“不可行点”。

4.2.2 使用前的准备

进行参数优化之前的操作步骤如下:

(1). 启动MWorks Studio,点击菜单“文件→打开”,选择“MWorks\Samples\ opb_cvm_ex7.mo”打开opb_cvm_ex7模型,初始界面如图4-16所示。

图4-16 打开opb_cvm_ex7模型并进行编译

(2). 点击菜单“仿真→编译”,编译生成可运行的求解器。

(3). 点击菜单“仿真→转到仿真环境”,MWorks Simulator在启动时自动更新求解器,生成对应的仿真实例“opb_cvm_ex7-1”,结果如图4-17所示。

图4-17 生成仿真实例opb_cvm_ex7-1

至此准备工作结束,点击“试验→模型优化”菜单进行参数优化。

4.2.3 参数优化

下面简要介绍如何通过参数优化求解该优化问题。

从图4-17开始,点击菜单“试验→模型优化”,弹出参数配置界面,如图4-18所示。

图4-18 模型优化参数配置向导

下面依次介绍各个属性页的参数配置情况(详细的操作步骤参考4.1.3节)。

按本例要求,选择 x1, x2, x3, x4 为调节参数,初值 x[]={ 1, 5, 5, 1 },参数上下界 1≤xi≤5, i=1, 2, 3, 4,如图

4-19所示。

图4-19 调节参数属性页

B.按本例要求,选择 f, eq_c, ne_c 为目标变量,其中 f作为目标函数,eq_c为等式约束条件(“EqualTo”),ne_c为不等式约束条件(“GreaterThan”),如图

4-20所示。

图4-20 优化目标属性页

按本例要求,目标变量 f 权值取缺省值1.0、等式约束变量 eq_c 约束值设为40(表示eq_c==40)、不等式约束变量 ne_c 约束值设为25(表示

,如图

4-21所示。 ne_c≥25)

图4-21 期望值属性页

D.本例中没有特别说明的选项全部取缺省值。

参数配置完成,建议将本次参数配置结果保存为外部脚本文件,以便复用。 点击“确定”执行模型优化,经过6次迭代之后得到结果,如图4-22所示。

图4-22 参数优化的输出结果

参数优化工具得到的最优解如下:

x[]={ 1, 4.74297, 3.8212, 1.37941 };min f(x)=17.0141

可以看出与理论最优值非常接近:

x[]={ 1, 4.7429994, 3.8211503, 1.3794082 };min f(x)=17.0140173

如果提高求解器的计算精度和优化算法的收敛精度,适当减小其步长因子,结果精度会进一步提高,但导致迭代次数因此而增加。

5. 多目标优化

5.1 多领域仿真模型F14

下面以一个简化的飞机模型F14为例(参考MWorks\Samples\F14.mo)介绍MWorks参数优化工具在复杂仿真模型参数分析中的应用。具体的模型路径为“F14.ControllerDesign_F14”,如图5-1所示。

图5-1 简化的飞机模型F14

该模型用于飞机纵向运动过程的仿真和分析,

(1). 控制器仿真模型ControllerDesign_F14使用阶跃信号“const”来驱动;

(2). 组件“aircraft”包含飞机的动力学方程;

(3). 组件“controller”对应飞机纵向运动的控制器,本例中将要进行调节的控制参数在该组件中定义,并与实际使用的界面参数通过变型方程来关联,变量“controller.alpha”作为反馈单元用于跟踪飞机的相对运动;

(4). 组件“criteria”中包含本例中将要进行优化的目标变量。

本例中的优化目标是通过改变controller的参数,使得飞机对某种阶跃响应的输出——纵向运动保持在最合理的范围之内。

5.1.1 问题描述

下面先给出模型在初始情况下(Ki=−2,Kf=-6,Kq=0.5)仿真10秒的结果曲线,如图5-2所示,分别对应alpha_c_deg(俯仰角)、alpha_deg(攻击角);q_degs(俯仰角速度);delta_deg(升角偏离量)。

图5-2 初始情况下飞机运动曲线

存在的问题是,alpha_deg(攻击角)与q_degs(俯仰角速度)相对alpha_c_deg(=1°)的超调量太大,delta_deg(升角偏离量)在开始一段时间以及达到稳态之后远离期望值。

具体数值可通过命令脚本获取: >> GetOvershootValue(

0.238367(=24%) >> GetMaxDeviationValue(

3.53047(大于2°)

本例中,通过参数优化将alpha_deg(攻击角)相对于q_degs(俯仰角速度)的超调量减小到1%以下,同时保持delta_deg(升角偏离量)在2°以内。

对上述问题建立优化模型如下,

(1). 优化变量:选择控制器参数“Ki”、“Kf”、“Kq”;

(2). 目标变量:选择alpha_deg(攻击角)、delta_deg(升角偏离量);

(3). 优化目标:减小alpha_deg相对alpha_c_deg的最大超调量,并且使得delta_deg在期望值范围内。

提示:为便于访问组件内部的参数与变量,模型ControllerDesign_F14使用了很多外层别名变量,参考下面给出的代码片段,后续操作中直接使用这些短名变量。 parameter Real Ki(max = -0.5, min = -10) = -2;

parameter Real Kf(max = -0.5, min = -10) = -6;

parameter Real Kq(max = 10, min = 0.1) = 0.5;

……

Controller controller(Kf = Kf, Ki = Ki, Kq = Kq, Ts = Ts);

……

Angle_deg alpha_deg = criteria.to_alpha.degree;

Angle_deg delta_deg = criteria.to_delta.degree;

……

Criteria criteria(alpha_c_deg = alpha_c_deg);

……

5.1.2 使用前的准备

进行参数优化之前的操作步骤如下。

(1). 启动MWorks Studio,打开“MWorks\Samples\F14.mo”。在模型浏览器中找到“F14.ControllerDesign_F14”,双击打开该模型,初始界面如图5-1所示。

(2). 点击菜单“仿真→编译”,编译生成可运行的求解器。

(3). 点击菜单“仿真→转到仿真环境”,MWorks Simulator在启动时自动更新求解器,生成对应的仿真实例“ControllerDesign_F14-1”,结果如图5-3所示。

图5-3 生成仿真实例ControllerDesign_F14-1

至此准备工作结束,下面将依次介绍单个调节参数、多个调节参数、多目标优化与多实例优化的使用场景,通过参数优化,使得期望的设计目标得到满足。

5.2 单个调节参数情况

先测试只调节1个控制参数的情况。从图5-3开始,点击菜单“试验→模型优化”,弹出图5-4所示的参数配置界面。

图5-4 模型优化参数配置向导

下面依次介绍各个属性页的参数配置情况(详细的操作步骤参考4.1.3节)。

A.如图5-4所示,本例选择缺省实例“ControllerDesign_F14-1”。

B.按本例要求,选择控制器参数“Kf”作为调节参数,名义值“-6.0”缺省取自模型实例,最小值、最大值分别设为“-10.0”、“0.0”,如图

5-5所示。

图5-5 调节参数属性页

C.按本例要求,选择攻击角alpha_deg、升角偏离量delta_deg作为目标变量,如图5-6所示。其中,alpha_deg的“估值”函数选择“Overshoot(最大超调量)”,实参设为“1.0”(注意俯仰角alpha_c_deg = 1.0);delta_deg的“估值”函数选择“MaxDeviation(最大偏差)”,实参设为“0.0”、“5.0”、“0.05”(表示相对“0.0”的偏差,最大值不超过“5.0”

)。

图5-6 优化目标属性页

变量估值函数“Overshoot(最大超调量)”和“MaxDeviation(最大偏差)”的参数输入界面如图5-7所示。

图5-7 函数Overshoot和MaxDeviation的参数列表

关于变量估值函数的说明详见MWorks_Toolkit_Parameter_Analysis.pdf。

D.本例中使用缺省实例“Normal”,关于多实例优化相关的应用场景以及界面操作详见第6节——多实例优化。

E.按本例要求,选择俯仰角alpha_c_deg作为实例参数,设为“1.0”(注意按“角度”单位赋值),如图

5-8所示。

图5-8 实例参数属性页

F.参考图5-6,本例中的2个目标变量均作为优化目标,故此处的期望值视为“权值”,用于考量不同优化目标之间的关系。

本例中,攻击角alpha_deg、升角偏离量delta_deg的权值分别设为“100.0”、“0.5”,表示期望的攻击角alpha_deg小于0.01=1/100°,升角偏离量delta_deg小于2=1/0.5°,如图5-9所示。

图5-9 期望值属性页

G.本例中,求解起止时间设为0—10秒,步长设为1e-4,求解精度设为1e-4,其他求解选项取缺省值,如图

5-10所示。

图5-10 求解设置属性页

H.本例中,相对误差设为1e-4,步长因子设为1e-4,勾选“分步显示迭代信息”以便观察调节参数和目标变量的变更细节,其他选项取缺省值,如图5-11所示。

图5-11 优化算法选项

I. 参数配置完成,建议将本次参数配置结果保存为外部脚本文件,以便复用。 执行模型优化,经过20次迭代之后得到结果,如图5-12所示。

图5-12 参数优化的输出结果

其中,

(1). 输出栏中给出了控制器参数“Kf”的最优解“-1.68371”,变化幅度为“+4.31629”。

(2). 观察迭代过程信息,优化前后,攻击角alpha_deg对俯仰角alpha_c_deg的最大超调量从“0.23799”(=24%)减小至“0.0279645”(=2.8%>1/100),升角偏离量delta_deg从“-3.53231”减小至“-1.19165”(小于1/0.5)。

可以看出,改变调节参数“Kf”使得升角偏离量delta_deg达到预期目标,但攻击角alpha_deg相对于俯仰角速度q_degs的超调量仍然大于1%。

注意在变量浏览器中生成了新的优化实例“ControllerDesign_F14-2”,其中调节参数设为最优解,并且实例参数也同时写入,接下来测试增加调节参数“Ki”和“Kq”的优化效果。

提示:后续操作将基于新的模型实例“ControllerDesign_F14-2”进行,注意保持MWorks Simulator当前运行状态。如果前次操作中保存了参数配置文件,后续操作可将其读入进来,此举可加快参数配置过程。

5.3 多个调节参数

如前所述,仅调节参数“Kf”不能满足期望目标,本节测试调节多个控制器参数的优化效果,将控制器参数“Ki”、“Kq”补充选为调节参数,并且引入新的优化目标——上升时间(RiseTime)和稳态时间(SettlingTime)。

5.3.1 优化最大超调量(Overshoot)

A.

从图5-12开始,点击菜单“试验→模型优化”,弹出图5-13所示的参数配置界面。

图5-13 模型优化参数配置向导

这次选择前次操作所生成的模型实例“ControllerDesign_F14-2”,如果该实例是当前实例,会被自动选中。

B.按本例要求,选择控制器参数“Ki”、“Kf”、“Kq”作为调节参数,名义值取自模型实例“ControllerDesign_F14-2”,分别为“-2.0”、“-1.68371”、“0.5”,参数范围分别为:-10.0≤Ki、Kf≤0.0,0≤Kq≤10.0,如图

5-14所示。

图5-14 调节参数属性页

注意,这里先将参数“Ki”的生效状态设为“false”,意味着“Ki”在本次优化过程中视为固定参数,看看通过调节“Kf”、“Kq”能否满足期望目标。

C.本例中,在前次基础上增加攻击角alpha_deg的上升时间(RistTime)和criteria.feedback.y的稳态时间(SettlingTime)作为新的优化目标,参考图5-15,其中,函数RistTime实参设为“1.0”、“0.1”、“0.9”(注意俯仰角alpha_c_deg = 1.0);函数SettlingTime实参设为“0.0”、“0.01

”。

图5-15 优化目标属性页

注意,这里先将此次新增优化目标的生效状态设为“false”,意味着在优化过程中不参与计算目标函数(或约束条件)。

变量估值函数“RistTime(上升时间)”和“SettlingTime(稳态时间)”的参数输入界面如图5-16所示。

图5-16 函数RistTime和SettlingTime的参数列表

关于变量估值函数的说明详见MWorks_Toolkit_Parameter_Analysis.pdf。

D.

注意上一步中增加了新的优化目标,尽管上升时间(RistTime)和稳态时间(SettlingTime)的生效状态设为“false”(本次优化中被忽略),还是应该设置其期望值。本例中分别设为“2.0”、“0.2”,表示期望的上升时间RistTime小于0.5=1/2秒,稳态时间SettlingTime小于5=1/0.2秒,如图5-17所示。

图5-17 期望值属性页

E.本次操作中,目标聚合方式改为“1-Norm”(线性加权法),其他选项保持不变,如图5-18所示。

图5-18 优化算法选项

F.参数配置完成,建议将本次参数配置结果保存为外部脚本文件,以便复用。 执行模型优化,经过47次迭代之后得到结果,如图

5-19所示。

图5-19 参数优化的输出结果

其中,

(1). 输出栏中给出了调节参数的最优解,( Ki, Kf, Kq ) = ( -2.0, -1.37425, 0.727119 ),注意“Ki”保持不变。

(2). 观察迭代过程信息,优化前后,攻击角alpha_deg对俯仰角alpha_c_deg的最大超调量从“0.0279645”减小至“4.78822e-6”(远小于1/100),同时升角偏离量delta_deg从“1.19165”减小至“0.91534”(小于1/0.5)。

可以看出,改变调节参数“Kf”、“Kq”使得攻击角alpha_deg对俯仰角alpha_c_deg的最大超调量、升角偏离量delta_deg均达到预期目标。但由于“Kq”的因素,使得攻击角alpha_deg的上升时间(RiseTime)延长了。

注意在变量浏览器中生成了新的优化实例“ControllerDesign_F14-3”,其中调节参数“Kf”、“Kq”已设为最优解,接下来测试调节参数“Ki”的优化效果。

5.3.2 优化上升时间(RiseTime)

这一小节中将使用3个控制器参数作为调节参数,并将新增优化目标置恢复为有效,参数配置过程如下。

A.从图5-19开始,点击菜单“试验→模型优化”,弹出参数配置界面,如图

5-20所示。

图5-20 模型优化参数配置向导

这次选择前次操作所生成的模型实例“ControllerDesign_F14-3”,如果该实例是当前实例,会被自动选中。

B.本次优化中,控制器参数“Ki”、“Kf”、“Kq”的生效状态全部设为“true”,其中“Kf”、“Kq”的名义值“-1.37425”、“0.727119”取自前次优化结果,该值已写入模型实例“ControllerDesign_F14-3”,其他设置保持不变,如图5-21所示。

图5-21 调节参数属性页

C.本次优化中,对于在前次操作中新增的优化目标:上升时间(RistTime)、稳态时间(SettlingTime),将其生效状态改为“true”(对比图5-15),其他设置保持不变,如图

5-22所示。

图5-22 优化目标属性页

D.本次操作中,相对误差和步长因子设为1e-3(影响收敛准则判断),将目标聚合方式设为“MaximumNorm”(最大的目标函数值),其他选项保持不变,如图5-23所示。

图5-23 优化算法选项

E.参数配置完成,建议将本次参数配置结果保存为外部脚本文件,以便复用。 点击“确定”执行模型优化,经过45次迭代之后得到结果,如图

5-24所示。

图5-24 参数优化的输出结果

其中,

(1). 输出栏中给出了调节参数的最优解,( Ki, Kf, Kq ) = ( Ki, Kf, Kq ) = ( -2.39438, -2.82251, 0.669992 )。

(2). 观察迭代过程信息,优化前后,攻击角alpha_deg对俯仰角alpha_c_deg的最大超调量从“4.78822e-6”略有增加,现为“0.00737139”(0.74%<1%),升角偏离量delta_deg从“1.747128”略有增加,现为“1.75355”,但处于期望值以内(小于1/0.5)。

(3). 本次操作中增加的优化目标中,攻击角alpha_deg的上升时间(RistTime)从“0.818822”秒缩短到“0.441234”秒(小于1/2);然而,criteria.feedback.y的稳态时间(SettlingTime)从“1.5738”秒延长到“4.0525”秒(但仍然小于1/0.2)。

注意在变量浏览器中生成了新的优化实例“ControllerDesign_F14-4”,其中控制器参数“Ki”、“Kf”、“Kq”已设为最优解,可以从中观察其他指标变量。

5.4 多目标优化

在上一节中已提及多目标优化,并测试了一组参数配置。下面通过更多测例来考察参数初值、目标权值和约束条件对多目标优化结果的影响。

5.4.1 使用不同的参数初值

先看不同的参数初值对多目标优化的影响。

A.

本次操作中,选择控制器参数“Ki”、“Kf”、“Kq”作为调节参数,名义值改为“-2.0”、“-3.0”、“0.5”,参数范围保持不变,如图5-25所示。

图5-25 调节参数属性页

本次操作中,有效的优化目标包括4项:Overshoot、MaxDeviation、RiseTime、SettlingTime,函数实参保持不变,约束类型均为“Minimize”(最小化),如图

5-26所示。

图5-26 优化目标属性页

C.本次操作中,目标变量“权值”分别设为“100.0”、“0.4”、“2.0”、“0.3”,表示期望的攻击角alpha_deg小于0.01=1/100°,升角偏离量delta_deg小于

2.5=1/0.4°,上升时间RistTime小于0.5=1/2秒,稳态时间SettlingTime小于3=1/0.3秒,如图

5-27所示。

图5-27 期望值属性页

本次操作中,相对误差设为1e-5,目标聚合方式选择“MaximumNorm”(最大的目标函数值),步长因子设为1e-4,如图

5-28所示。

图5-28 优化算法选项

E. 执行模型优化,经过78次迭代之后得到结果,最优解 ( Ki, Kf, Kq ) = ( -4.51274, -4.64094, 1.05199 ),优化前后目标变量结果对比图

5-29所示。

图5-29 参数优化的输出结果

5.4.2 改变目标权值

在上一节操作基础上,将优化目标Overshoot(最大超调量)的“权值”从“100”改为“10”,参数配置过程如下。

本次操作中在前次操作基础上进行,控制器参数“Ki”、“Kf”、“Kq”设为“-4.51274”、“-4.64094”、“1.05199”,参数范围保持不变,如图

5-30所示。

图5-30 调节参数属性页

B.

本次操作中,目标权值分别设为“10.0”、“0.3”、“2.0”、“0.4”,表示期望的攻击角alpha_deg小于0.1=1/10°,升角偏离量delta_deg小于3=1/0.3°,上升时间RistTime小于0.5=1/2秒,稳态时间SettlingTime小于2.5=1/0.4秒,如图

5-31所示。

图5-31 期望值属性页

C.其他未特别说明的选项使用前次操作相同的配置。

执行模型优化,经过33次迭代之后得到结果,最优解 ( Ki, Kf, Kq ) = ( -4.27225, -3.96667, 0.829078 ),优化前后目标变量曲线如图5-32所示。

图5-32 参数优化的输出结果

5.4.3 使用不等式约束条件

在上一节操作基础上,将优化目标“MaxDeviation(最大偏差)”改为不等式约束,参数配置过程如下。

A.本次操作中在前次操作基础上进行,控制器参数“Ki”、“Kf”、“Kq”设为“-4.51274”、“-4.64094”、“1.05199”,参数范围保持不变,如图

5-33所示。

图5-33 调节参数属性页

B.本次操作中,模型求解选项参考图5-22设置,有效的优化目标包括4项:

Overshoot、MaxDeviation、RiseTime、SettlingTime,函数实参保持不变,注意MaxDeviation约束类型设为“LessThan”,表示该目标变量用作不等式约束条件“≤”,如图5-34所示。

图5-34 优化目标属性页

C.本次操作中,期望值分别设为“10.0”、“3.0”、“2.0”、“0.4”,表示期望的攻击角alpha_deg小于0.1=1/10°,升角偏离量delta_deg小于3.0°(注意此处视为约束值,即要求delta_deg≤3.0),上升时间RistTime小于0.5=1/2秒,稳态时间SettlingTime小于2.5=1/0.4秒,如图

5-35所示。

图5-35 期望值属性页

D.其他未特别说明的选项使用前次操作相同的配置。

执行模型优化,经过10次迭代之后得到结果,最优解 ( Ki, Kf, Kq ) = ( -4.67529, -4.59681, 0.925857 ),优化前后目标变量曲线如图5-36所示。

图5-36 参数优化的输出结果

5.4.4 结果分析与小结

从上述结果中可以看出,多目标优化结果对调节参数、目标权值和约束条件是比较敏感的,不同的参数配置情况得到不同的参数最优解(属于Pareto解集),但优化结果能够满足预期目标。注意到算法迭代次数也受到这些因素影响,本例中迭代次数分别是78次、33次、10次。实际使用时需根据具体的场景进行多次测试,以期得到最满意的结果。

6. 多实例优化

如前所述,多实例优化旨在解决不同工作条件下产品性能最优化问题。这里工作条件可对应实例的产品型号、运行工况等,由实例参数来定义。多实例优化是通过改变调节参数,使得仿真模型在不同情况的性能指标均达到最优。

6.1 定义实例参数

本例中,选择空气动力学参数 { Ma, Md, Mq, Za, Zd } 定义仿真模型所处的工作条件,选择控制器参数 { Ki, Kf, Kq } 作为调节参数,并沿用前文提及的4个优化目标 { Overshoot, MaxDeviation, RiseTime, SettlingTime }。

6.2 检查目标变量指标

从图5-3开始(注意先不对仿真实例“ControllerDesign_F14-1”进行求解),操作步骤如下:

(1). 在变量浏览器中输入下列参数,如图6-1所示:

控制器参数 { Ki, Kf, Kq } = { -2, -1.72, 0.5 },

空气动力学参数 { Ma, Md, Mq, Za, Zd } = { -5, -7.5, -0.7, -0.67, -0.2 }。

图6-1 输入控制器参数和空气动力学参数

(2). 点击菜单“仿真→求解”,调用求解器进行求解。提示:如果该实例已经求解,这一步将自动生成新的模型实例“ControllerDesign_F14-2”。

(3). 检查目标变量相关的性能指标是否满足。这一步在命令窗口中手工输入命令脚本来进行,结果参见表6-1。

表6-1 检查目标变量相关的性能指标

其中,除了“RiseTime(上升时间)”不满足要求之外,其余变量指标都在期望值范围内。

6.3 优化上升时间(RiseTime)

本次优化试图解决“alpha_deg”(攻击角)性能指标“RiseTime”(上升时间)不符合期望值的问题。参数配置过程如下。

A.

本次操作中,选择控制器参数“Ki”、“Kf”、“Kq”作为调节参数,名义值设为“-2.0”、“-1.72”、“0.5”,如图6-2所示。

图6-2 调节参数属性页

B.本次操作中,有效的优化目标包括4项:Overshoot、MaxDeviation、RiseTime、SettlingTime,函数实参保持不变,约束类型均为“Minimize”(最小化),如图6-3所示。

图6-3 优化目标属性页

C.本次操作中,使用缺省实例“Normal”,如图

6-4所示。

图6-4 设置实例选项

D.本次操作中,选择{ Ma, Md, Mq, Za, Zd }作为实例参数,参数值设为{ -5, -7.5, -0.7, -0.67, -0.2 },如图6-5所示。

图6-5 实例参数属性页

E.本次操作中,期望值分别设为“100.0”、“0.5”、“2.0”、“0.25”,表示期望的攻击角alpha_deg小于0.01=1/100°,升角偏离量delta_deg小于2=1/0.5°,上升时间RistTime小于0.5=1/2秒,稳态时间SettlingTime小于4=1/0.25秒,如图

6-6所示。

图6-6 期望值属性页

F.本次操作中,求解起止时间设为0—10秒,步长设为1e-3,求解精度设为1e-4,其他选项设为缺省值,如图6-7所示。

MWorks试验设计工具

模型优化

苏州同元软控信息技术有限公司

2010年10月

目录

1. 概述 .......................................................................................................................... 1

2. 功能特征 .................................................................................................................. 1

3. 基于仿真的多目标优化 .......................................................................................... 1

4. 单目标优化 .............................................................................................................. 2

4.1 简单的数学算例............................................................................................. 2

4.1.1 问题描述.............................................................................................. 2

4.1.2 使用前的准备...................................................................................... 3

4.1.3 参数优化.............................................................................................. 4

4.2 典型的OPB算例 ........................................................................................... 15

4.2.1 问题描述............................................................................................ 15

4.2.2 使用前的准备.................................................................................... 16

4.2.3 参数优化............................................................................................ 17

5. 多目标优化 ............................................................................................................ 20

5.1 多领域仿真模型F14 .................................................................................... 20

5.1.1 问题描述............................................................................................ 21

5.1.2 使用前的准备.................................................................................... 23

5.2 单个调节参数情况....................................................................................... 24

5.3 多个调节参数............................................................................................... 29

5.3.1 优化最大超调量(Overshoot) ............................................................ 29

5.3.2 优化上升时间(RiseTime) ................................................................. 33

5.4 多目标优化................................................................................................... 36

5.4.1 使用不同的参数初值........................................................................ 36

5.4.2 改变目标权值.................................................................................... 38

5.4.3 使用不等式约束条件........................................................................ 40

5.4.4 结果分析与小结................................................................................ 42

6. 多实例优化 ............................................................................................................ 42

6.1 定义实例参数............................................................................................... 42

6.2 检查目标变量指标....................................................................................... 43

6.3 优化上升时间(RiseTime) ............................................................................ 44

6.4 优化最大超调量(Overshoot) ....................................................................... 48

6.5 结果分析与小结........................................................................................... 51

7. 高级选项 ................................................................................................................ 51

7.1 复用先前的设置........................................................................................... 51

7.2 使用命令接口............................................................................................... 52

7.3 多目标聚合方式........................................................................................... 53

8. 参考文献 ................................................................................................................ 53

1. 概述

针对物理系统开发的仿真模型包含许多决定系统行为的参数,例如变速箱的传动比、弹簧系数、控制器的结构参数等,调节这些参数值可以改变系统行为,寻找使得系统整体性能趋向最优的参数值是建模与仿真的关键问题之一。

常见的“启发式”方式,即反复进行“修改参数→仿真→比较结果”,可以起到一定的参数优化效果,但得到的结果精度不高,而且显得效率低下。对线性SISO系统,一般的分析方法(例如最小二乘法)也能得到近似优化的结果。

MWorks参数优化采用基于仿真的多目标优化方法进行参数分析,帮助解决复杂系统建模与仿真中的参数调节问题。在数学上,参数调节过程实为一种优化过程:将调节参数视为优化变量,通过不断改变参数值,如果优化目标达到某种意义上的“最小”,则将当前参数值视为最优参数值。其中,优化目标通常根据仿真结果来计算,例如针对某种响应的最大超调量、上升时间等。

参数优化工具在仿真环境(MWorks Simulator)中运行,与物理模型的编译结果(仿真实例及其对应的求解器)紧密集成,参见“试验→模型优化”菜单。

2. 功能特征

MWorks参数优化工具提供向导式的窗口,支持设置参数研究所要求的各种细节规则,主要特征如下。

(1). 允许多个调节参数,每个参数可设置不同的上下界。

(2). 支持针对多个优化变量定义相应的优化目标,并使用“权值”进行多目标聚合。

(3). 通过多实例优化,使得不同工作条件下的产品性能均达到最优。

(4). 输出调节参数和目标变量迭代过程,优化结束时生成结果变量差异图。

3. 基于仿真的多目标优化

考虑优化问题的三要素:优化变量、目标函数、约束条件,其中,优化变量对应仿真模型中的参数,通过优化算法进行调整;目标函数作为优化算法的计算准则,是对模型性能的一种期望;约束条件限制了变量的变动范围,是必须满足的性能指标。

在基于仿真的优化过程中,优化目标通常根据仿真结果来计算,实际上是将模型求解器作为目标函数来调用,参数优化的执行过程大致如下。

(1). 根据算法需要收集优化变量、目标函数和约束条件,建立优化模型。

(2). 执行(3)—(6)的过程。

(3). 将参数初值或优化算法返回的参数值作为输入参数送入求解器。

(4). 运行求解器得到目标变量的时间序列。

(5). 调用变量估值函数对时序数据进行分析,计算得到一个标量值,将该值作为目标函数值提交给优化算法。更复杂的计算可借助其他分析过程实现,例如频域分析、特征值分析等。

(6). 根据优化变量值和目标函数值判断算法是否达到期望目标,如果达到则迭代过程终止;否则,根据目标函数和约束条件计算得到新的参数值(其中决策过程因算法而异),转(3)继续迭代。

(7). 算法运行结束。

对于多目标优化情况,通常情况下最优解不是唯一的。为此需要对优化目标进行权衡,以获得一种使所有目标“最小化”并且符合用户设计意图的最优解。实际应用一般采用“加权法”将多个目标函数值聚合为一个标量值,将该值作为最终的目标函数值提交给优化算法进行处理。

MWorks在具体操作时,也使用“加权法”这种比较实用的方法支持多目标优化与多实例优化。

4. 单目标优化

下面结合具体实例介绍MWorks参数优化工具的使用方法。

4.1 简单的数学算例

4.1.1 问题描述

首先看一个简单的算例。已知一个矩形的周长,求当长度和宽度分别为何值时矩形的面积最大?

这个问题的答案是众所周知的:当长度等于宽度时矩形的面积是最大的。 下面建立该问题对应的Modelica模型,使用参数优化工具进行求解。

对应的模型文件参考“MWorks\Samples\rectangle_area.mo”。

model rectangle_area

parameter Real perimeter = 400

parameter Real length = 10

Real width

Real area

equation

width = perimeter / 2 - length;

area = length * width;

end rectangle_area;

其中,矩形初值设为:周长perimeter = 400,长度length = 10;此时,宽度width = 190,面积area = 1900。

该问题的精确解为:

length = width = 100,面积最大值area = 10000。

对上述问题,可取参数length为优化变量、area为优化目标建立优化模型,该问题视为无约束的单目标优化问题。

4.1.2 使用前的准备

进行参数优化之前的操作步骤如下:

(1). 启动MWorks Studio,点击菜单“文件→打开”,选择“MWorks\Samples\ rectangle_area.mo”打开rectangle_area模型,初始界面如图4-1所示。

图4-1 打开rectangle_area模型并进行编译

(2). 点击菜单“仿真→编译”,编译生成可运行的求解器。

(3). 点击菜单“仿真→转到仿真环境”,MWorks Simulator在启动时自动更新求解器,生成对应的仿真实例“rectangle_area-1”,结果如图4-2所示。

图4-2 生成仿真实例rectangle_area-1

提示:如果MWorks Simulator正在运行,点击菜单“文件→更新求解器”,也可生成仿真实例“rectangle_area-1”。

至此准备工作结束,点击“试验→模型优化”菜单进行参数优化。

4.1.3 参数优化

下面介绍如何通过参数优化求解矩形面积问题,并详细说明参数配置过程。 从图4-2开始,点击菜单“试验→模型优化”,弹出图4-3所示的参数配置界面。

图4-3 模型优化参数配置向导

模型优化参数配置向导包括8个属性页。

(1). 源模型:选择将要进行参数优化的仿真实例,当参数变动时,系统自动调用与该实例关联的求解器。

(2). 调节参数:选择一个或多个进行调节的参数,对应优化问题的优化变量。显然,所选择的参数必须对目标变量有影响才是可行的,如果改变调节参数之后目标变量输出不变,参数优化将失败。

(3). 优化目标:选择一个或多个目标变量。目标变量泛指模型所需要优化的性能指标,对于优化问题来说,目标变量既可用来计算目标函数值,也可以用来计算约束条件值。

(4). 实例:设置进行多实例优化的实例选项。这里,“实例”对应仿真模型所处的工作条件,由实例参数来定义,例如不同的产品型号、运行工况等。多实例优化是通过改变调节参数,使得仿真模型在不同情况的性能指标均达到最优。

(5). 实例参数:选择一个或多个固定不变的参数,设置各个实例所对应的参数值,这些参数在优化过程中是保持不变的。在多实例优化中,通过不同的实例参数来区分“实例”。

(6). 期望值:设置目标变量对应的期望值。目标变量用来计算目标函数值时,该值视为“权值”;否则视为约束值。对于单目标优化问题,“权值”被忽略。

(7). 求解设置:设置求解起止时间、步长、算法、误差等选项。

(8). 选项:设置优化算法选项,例如收敛误差、最大迭代步数等。

下面结合rectangle_area模型介绍具体的操作步骤(其中部分属性页在后续的实例中进行说明)。

A.首先选择进行参数优化的仿真实例。如图4-3所示,“源模型”列表中显示了当前候选的仿真实例,其中,当前实例“rectangle_area-1”缺省已被选中。

B.下一步,点击图4-3左侧列表中的“调节参数”切换属性页,选择进行优化的参数,如图4-4所示。

图4-4 调节参数属性页(参数集为空)

调节参数来自仿真模型,通过交互方式进行选择。点击“选择”按钮,弹出图4-5所示的选择变量对话框。

图4-5 选择调节参数

按本例要求,从中勾选参数“length”(矩形长度)。注意,选择变量对话框与MWorks Simulator变量浏览器面板中的显示内容有点不同,这一步中只列出允许修改的参数(非独立参数和非参数节点已排除)。

完成参数选择之后,点击“确定”回到调节参数属性页,在其中的列表框中显示出已选中的参数集,如图4-6所示。

图4-6 调节参数属性页

图4-6中列出了选中的参数列表及其全部属性。

(1). 名字:即参数全名。为避免出错,限制不能修改参数名。

(2). 是否生效:指定该参数是否要进行调节(缺省为true)。如果选择不生效(设为false),该参数在模型优化过程中视为固定参数(将调节参数设为不生效实际上改变了模型参数的缺省值,对应改变了模型的运行状态)。MWorks参数优化工具要求必须提供至少1个有效的调节参数。

(3). 名义值:调节参数初始值,缺省来自仿真模型实例,允许修改。

(4). 最小值:设置调节参数的下界,“-1e100”表示不作限制。

(5). 最大值:设置调节参数的上界,“+1e100”表示不作限制。

调节参数由优化算法根据优化目标来确定,并且保证不会超出所指定的参数范围。另外,调节参数的最小值和最大值可以简化算法运行,建议总是设置参数上下界。

本例中,调节参数“length”的名义值设为“10.0”,参数上下界均不作限制。 提示:使用“上移”、“下移”按钮可以改变调节参数生效顺序;使用“删除”按钮可以去除多余的参数。

C.下一步,点击图4-3左侧列表中的“优化目标”切换属性页,选择目标变量,如图4-7所示。

图4-7 优化目标属性页(变量集为空)

结果变量同样来自仿真模型,点击“选择”按钮,弹出图4-8所示对话框。

图4-8 选择优化目标变量

按本例要求,从中勾选变量“area”(矩形面积)。注意,这一步的显示内容与图4-5不同,树形列表中不显示参数。

完成选择之后,点击“确定”回到结果变量属性页,在其中的列表框中显示出已选中的变量集,如图4-9所示。

图4-9 优化目标属性页

图4-9中列出了选中的变量列表及其全部属性。

(1). 名字:即变量全名。为避免出错,限制不能修改变量名。

(2). 是否生效:缺省为true,如果选择不生效(设为false),该变量在模型优化过程中将不参与计算目标函数(或约束条件)。

(3). 估值:选择变量估值函数,本例中的仿真模型为一般非线性时不变模型,选择缺省选项“FinalValue”表示使用变量在求解终止时刻的值计算目标函数(或约束条件)。更多其他选项参考MWorks_Toolkit_Parameter_Analysis.pdf。

(4). 约束:根据“估值”一栏中选择的变量估值函数对仿真结果进行处理后得到一个标量值,“约束”一栏中的属性确定该值的用途,或者是目标函数值,或者是约束条件值。图中选择“Maximize”(最大化)是根据优化问题来确定的,表示矩形面积越大越好。对应的目标权值或约束值在“期望值”属性页设置。

提示:使用“上移”、“下移”按钮可以改变目标变量在列表中的显示顺序,同时改变了其计算顺序;使用“删除”按钮可以去除多余的变量。

与约束相关的目标类型和约束条件参考表4-1。

表4-1 变量约束类型

D.下一步,点击图4-3左侧列表中的“实例”切换属性页,设置实例及其选项,如图

4-10所示。

图4-10 优化实例属性页

其中,

(1). 名字:用于标识不同的优化实例,允许修改。如果有多个实例,实例名不能重复。

(2). 是否生效:缺省为true。如果选择不生效(设为false),该实例将不参与优化过程计算,等同于没有定义。MWorks参数优化工具要求必须提供至少1个有效的优化实例。

(3). 权值:使用“权值”设置优化实例对于优化目标的不同期望,只有1个实例时,该值被忽略。显然,权值必须大于0。

本例中使用缺省实例“Normal”,关于多实例优化相关的应用场景以及界面操作详见第6节——多实例优化。

提示:使用“上移”、“下移”按钮可以改变优化实例在列表中的显示顺序,同时改变了其生效顺序;使用“增加”按钮设置新的(缺省)实例;使用“删除”按钮可以去除多余的实例。

E.下一步,点击图4-3左侧列表中的“实例参数”切换属性页,选择实例参数并赋值,如图4-11所示。

图4-11 实例参数属性页

如前所述,实例参数与优化实例对应的工作条件相关,对于一个具体的实例来说,实例参数是固定不变的。

本例中实际不需要设置实例参数,但为了说明界面元素,选择“perimeter”(矩形周长)作为示例(更一般的情况参考5.4节——多目标优化、第6节——多实例优化)。

(1). 实例参数列表栏目根据实例参数和优化实例建立,横向对应:参数名字、实例1、实例2、…;纵向逐行显示所选择的实例参数,行列顺序与对应属性页中的参数和实例保持一致,例如本例中的缺省实例“Normal”。

(2). 对本例中的优化问题,改变“perimeter”没有使问题的性质发生变化,但直接影响最终的优化结果。为了不破坏前述假设,仍然设置perimeter = 400。

提示:使用“上移”、“下移”按钮可以改变实例参数在列表中的显示顺序;使用“选择”按钮选择实例参数;使用“删除”按钮可以去除多余的参数。 F.下一步,点击图4-3左侧列表中的“期望值”切换属性页,设置优化目标权值或约束条件值,如图4-12所示。

图4-12 期望值属性页

其中,

(1). 期望值列表栏目根据“优化目标”和“实例”属性页中设置的目标变量和优化实例建立,横向对应:目标变量名字、实例1、实例2、…;纵向逐行显示具体的目标变量,行列顺序与对应属性页中的变量和实例保持一致,例如本例中的目标变量“area”和实例“Normal”。更一般的情况参考5.4节——多目标优化、第6节——多实例优化。

(2). 目标变量作为优化目标使用时,期望值视为“权值”(要求大于0);如果作为约束条件,期望值根据优化问题进行赋值。

本例中优化实例为1个缺省实例“Normal”(见图4-10),目标变量有1个“area”(见图4-9),并且作为优化目标使用,故期望值视为“权值”,此处设为缺省值“1.0”(单目标优化时该值被忽略)。

G.下一步,点击图4-3左侧列表中的“求解设置”切换属性页,设置求解器运行选项,如图4-13所示。

图4-13 求解设置属性页

考虑本例中的仿真模型为非线性时不变模型,故全部属性取缺省选项。

提示:对于其他时变模型,需要根据所选目标变量的变化趋势、对应的变量估值函数等因素设置合理的仿真区间、输出步长和积分选项。

H.最后一步,点击图4-3左侧列表中的“选项”切换属性页,设置优化算法选项,如图

4-14所示。

图4-14 优化算法选项

其中,

(1). 优化方法:选择优化算法,缺省为“CVM”(约束变尺度法)。

(2). 相对误差:作为迭代收敛误差,该值范围为1e-8—0.1,缺省值为1e-3。

(3). 最大迭代步数:不能小于10,缺省为100。

(4). 目标聚合方式:适用于多目标优化,只有1个优化目标时该选项被忽略。缺省为“Default”,表示由优化算法决定如何处理。可选的多目标聚合方式参考表7-1。

(5). 步长因子:控制调节参数变更精度,该值范围为1e-6—1.0,缺省为5e-3。

(6). 分步显示迭代信息:缺省true,这样,在迭代过程中输出栏将分步显示调节参数的变动细节,以及对应的优化目标和约束条件在该步的结果。

本例中,步长因子设为1e-4,其余取缺省选项。

I. 参数配置完成,建议将本次参数配置结果保存为外部脚本文件,以便复用。 点击“确定”执行模型优化,经过7次迭代之后得到结果,如图4-15所示。

图4-15 参数优化的输出结果

其中,

(1). 曲线窗口中显示了目标变量在优化前后的结果,分别用蓝色曲线和红色曲线表示。本例中优化前后area(矩形面积)分别等于1900、9999.9999,优化结果对比精确解的相对误差为1e-8。

(2). 在输出栏中给出了调节参数的最优解。本例中length = 100.01,优化结果对比精确解的相对误差为1e-4。如果选中了“分步显示迭代信息”(参考图4-14),在迭代过程中输出栏还将分步显示调节参数的变动细节,以及对应的优化目标值和约束条件值。

(3). 变量浏览器中生成了模型标定之后的仿真实例“rectangle_area-2”,其中调节参数已设为其最优解(如果存在实例参数,其参数值也并入实例中),可以从中观察模型其他变量指标在优化前后的差异情况。

从图4-15看出,参数优化后得到期望的结果。

4.2 典型的OPB算例

4.2.1 问题描述

接下来测试OPB算法库中的考题7,这是一个典型的非线性、单目标约束优化问题,数学模型如下。

min f(x) = x1*x4*(x1+x2+x3)+x3

s.t. 25 - x1*x2*x3*x4≤0

x1+x2+x3+x4−40=0

1≤xi≤5, i=1, 2, 3, 4

该问题的理论最优值如下:

x[]={ 1, 4.7429994, 3.8211503, 1.3794082 };min f(x)=17.0140173。 2222

下面建立该问题对应的Modelica模型,使用参数优化工具进行求解。对应的模型文件参考“MWorks\Samples\opb_cvm_ex7.mo”。 model opb_cvm_ex7

parameter Real x1 = 1

parameter Real x2 = 5

parameter Real x3 = 5

parameter Real x4 = 1

Real f

Real eq_c

Real ne_c

equation

f = x1 * x4 * (x1 + x2 + x3) + x3;

eq_c = x1 * x1 + x2 * x2 + x3 * x3 + x4 * x4;

ne_c = x1 * x2 * x3 * x4;

end opb_cvm_ex7;

本例中,取参数 x1, x2, x3, x4 为优化变量,初值 x[]={1,5,5,1}、f 为优化目标(初始时极值等于16)、eq_c, ne_c 为约束条件建立优化模型。

注意所选的参数初值不满足等式约束条件 ne_c,因而是“不可行点”。

4.2.2 使用前的准备

进行参数优化之前的操作步骤如下:

(1). 启动MWorks Studio,点击菜单“文件→打开”,选择“MWorks\Samples\ opb_cvm_ex7.mo”打开opb_cvm_ex7模型,初始界面如图4-16所示。

图4-16 打开opb_cvm_ex7模型并进行编译

(2). 点击菜单“仿真→编译”,编译生成可运行的求解器。

(3). 点击菜单“仿真→转到仿真环境”,MWorks Simulator在启动时自动更新求解器,生成对应的仿真实例“opb_cvm_ex7-1”,结果如图4-17所示。

图4-17 生成仿真实例opb_cvm_ex7-1

至此准备工作结束,点击“试验→模型优化”菜单进行参数优化。

4.2.3 参数优化

下面简要介绍如何通过参数优化求解该优化问题。

从图4-17开始,点击菜单“试验→模型优化”,弹出参数配置界面,如图4-18所示。

图4-18 模型优化参数配置向导

下面依次介绍各个属性页的参数配置情况(详细的操作步骤参考4.1.3节)。

按本例要求,选择 x1, x2, x3, x4 为调节参数,初值 x[]={ 1, 5, 5, 1 },参数上下界 1≤xi≤5, i=1, 2, 3, 4,如图

4-19所示。

图4-19 调节参数属性页

B.按本例要求,选择 f, eq_c, ne_c 为目标变量,其中 f作为目标函数,eq_c为等式约束条件(“EqualTo”),ne_c为不等式约束条件(“GreaterThan”),如图

4-20所示。

图4-20 优化目标属性页

按本例要求,目标变量 f 权值取缺省值1.0、等式约束变量 eq_c 约束值设为40(表示eq_c==40)、不等式约束变量 ne_c 约束值设为25(表示

,如图

4-21所示。 ne_c≥25)

图4-21 期望值属性页

D.本例中没有特别说明的选项全部取缺省值。

参数配置完成,建议将本次参数配置结果保存为外部脚本文件,以便复用。 点击“确定”执行模型优化,经过6次迭代之后得到结果,如图4-22所示。

图4-22 参数优化的输出结果

参数优化工具得到的最优解如下:

x[]={ 1, 4.74297, 3.8212, 1.37941 };min f(x)=17.0141

可以看出与理论最优值非常接近:

x[]={ 1, 4.7429994, 3.8211503, 1.3794082 };min f(x)=17.0140173

如果提高求解器的计算精度和优化算法的收敛精度,适当减小其步长因子,结果精度会进一步提高,但导致迭代次数因此而增加。

5. 多目标优化

5.1 多领域仿真模型F14

下面以一个简化的飞机模型F14为例(参考MWorks\Samples\F14.mo)介绍MWorks参数优化工具在复杂仿真模型参数分析中的应用。具体的模型路径为“F14.ControllerDesign_F14”,如图5-1所示。

图5-1 简化的飞机模型F14

该模型用于飞机纵向运动过程的仿真和分析,

(1). 控制器仿真模型ControllerDesign_F14使用阶跃信号“const”来驱动;

(2). 组件“aircraft”包含飞机的动力学方程;

(3). 组件“controller”对应飞机纵向运动的控制器,本例中将要进行调节的控制参数在该组件中定义,并与实际使用的界面参数通过变型方程来关联,变量“controller.alpha”作为反馈单元用于跟踪飞机的相对运动;

(4). 组件“criteria”中包含本例中将要进行优化的目标变量。

本例中的优化目标是通过改变controller的参数,使得飞机对某种阶跃响应的输出——纵向运动保持在最合理的范围之内。

5.1.1 问题描述

下面先给出模型在初始情况下(Ki=−2,Kf=-6,Kq=0.5)仿真10秒的结果曲线,如图5-2所示,分别对应alpha_c_deg(俯仰角)、alpha_deg(攻击角);q_degs(俯仰角速度);delta_deg(升角偏离量)。

图5-2 初始情况下飞机运动曲线

存在的问题是,alpha_deg(攻击角)与q_degs(俯仰角速度)相对alpha_c_deg(=1°)的超调量太大,delta_deg(升角偏离量)在开始一段时间以及达到稳态之后远离期望值。

具体数值可通过命令脚本获取: >> GetOvershootValue(

0.238367(=24%) >> GetMaxDeviationValue(

3.53047(大于2°)

本例中,通过参数优化将alpha_deg(攻击角)相对于q_degs(俯仰角速度)的超调量减小到1%以下,同时保持delta_deg(升角偏离量)在2°以内。

对上述问题建立优化模型如下,

(1). 优化变量:选择控制器参数“Ki”、“Kf”、“Kq”;

(2). 目标变量:选择alpha_deg(攻击角)、delta_deg(升角偏离量);

(3). 优化目标:减小alpha_deg相对alpha_c_deg的最大超调量,并且使得delta_deg在期望值范围内。

提示:为便于访问组件内部的参数与变量,模型ControllerDesign_F14使用了很多外层别名变量,参考下面给出的代码片段,后续操作中直接使用这些短名变量。 parameter Real Ki(max = -0.5, min = -10) = -2;

parameter Real Kf(max = -0.5, min = -10) = -6;

parameter Real Kq(max = 10, min = 0.1) = 0.5;

……

Controller controller(Kf = Kf, Ki = Ki, Kq = Kq, Ts = Ts);

……

Angle_deg alpha_deg = criteria.to_alpha.degree;

Angle_deg delta_deg = criteria.to_delta.degree;

……

Criteria criteria(alpha_c_deg = alpha_c_deg);

……

5.1.2 使用前的准备

进行参数优化之前的操作步骤如下。

(1). 启动MWorks Studio,打开“MWorks\Samples\F14.mo”。在模型浏览器中找到“F14.ControllerDesign_F14”,双击打开该模型,初始界面如图5-1所示。

(2). 点击菜单“仿真→编译”,编译生成可运行的求解器。

(3). 点击菜单“仿真→转到仿真环境”,MWorks Simulator在启动时自动更新求解器,生成对应的仿真实例“ControllerDesign_F14-1”,结果如图5-3所示。

图5-3 生成仿真实例ControllerDesign_F14-1

至此准备工作结束,下面将依次介绍单个调节参数、多个调节参数、多目标优化与多实例优化的使用场景,通过参数优化,使得期望的设计目标得到满足。

5.2 单个调节参数情况

先测试只调节1个控制参数的情况。从图5-3开始,点击菜单“试验→模型优化”,弹出图5-4所示的参数配置界面。

图5-4 模型优化参数配置向导

下面依次介绍各个属性页的参数配置情况(详细的操作步骤参考4.1.3节)。

A.如图5-4所示,本例选择缺省实例“ControllerDesign_F14-1”。

B.按本例要求,选择控制器参数“Kf”作为调节参数,名义值“-6.0”缺省取自模型实例,最小值、最大值分别设为“-10.0”、“0.0”,如图

5-5所示。

图5-5 调节参数属性页

C.按本例要求,选择攻击角alpha_deg、升角偏离量delta_deg作为目标变量,如图5-6所示。其中,alpha_deg的“估值”函数选择“Overshoot(最大超调量)”,实参设为“1.0”(注意俯仰角alpha_c_deg = 1.0);delta_deg的“估值”函数选择“MaxDeviation(最大偏差)”,实参设为“0.0”、“5.0”、“0.05”(表示相对“0.0”的偏差,最大值不超过“5.0”

)。

图5-6 优化目标属性页

变量估值函数“Overshoot(最大超调量)”和“MaxDeviation(最大偏差)”的参数输入界面如图5-7所示。

图5-7 函数Overshoot和MaxDeviation的参数列表

关于变量估值函数的说明详见MWorks_Toolkit_Parameter_Analysis.pdf。

D.本例中使用缺省实例“Normal”,关于多实例优化相关的应用场景以及界面操作详见第6节——多实例优化。

E.按本例要求,选择俯仰角alpha_c_deg作为实例参数,设为“1.0”(注意按“角度”单位赋值),如图

5-8所示。

图5-8 实例参数属性页

F.参考图5-6,本例中的2个目标变量均作为优化目标,故此处的期望值视为“权值”,用于考量不同优化目标之间的关系。

本例中,攻击角alpha_deg、升角偏离量delta_deg的权值分别设为“100.0”、“0.5”,表示期望的攻击角alpha_deg小于0.01=1/100°,升角偏离量delta_deg小于2=1/0.5°,如图5-9所示。

图5-9 期望值属性页

G.本例中,求解起止时间设为0—10秒,步长设为1e-4,求解精度设为1e-4,其他求解选项取缺省值,如图

5-10所示。

图5-10 求解设置属性页

H.本例中,相对误差设为1e-4,步长因子设为1e-4,勾选“分步显示迭代信息”以便观察调节参数和目标变量的变更细节,其他选项取缺省值,如图5-11所示。

图5-11 优化算法选项

I. 参数配置完成,建议将本次参数配置结果保存为外部脚本文件,以便复用。 执行模型优化,经过20次迭代之后得到结果,如图5-12所示。

图5-12 参数优化的输出结果

其中,

(1). 输出栏中给出了控制器参数“Kf”的最优解“-1.68371”,变化幅度为“+4.31629”。

(2). 观察迭代过程信息,优化前后,攻击角alpha_deg对俯仰角alpha_c_deg的最大超调量从“0.23799”(=24%)减小至“0.0279645”(=2.8%>1/100),升角偏离量delta_deg从“-3.53231”减小至“-1.19165”(小于1/0.5)。

可以看出,改变调节参数“Kf”使得升角偏离量delta_deg达到预期目标,但攻击角alpha_deg相对于俯仰角速度q_degs的超调量仍然大于1%。

注意在变量浏览器中生成了新的优化实例“ControllerDesign_F14-2”,其中调节参数设为最优解,并且实例参数也同时写入,接下来测试增加调节参数“Ki”和“Kq”的优化效果。

提示:后续操作将基于新的模型实例“ControllerDesign_F14-2”进行,注意保持MWorks Simulator当前运行状态。如果前次操作中保存了参数配置文件,后续操作可将其读入进来,此举可加快参数配置过程。

5.3 多个调节参数

如前所述,仅调节参数“Kf”不能满足期望目标,本节测试调节多个控制器参数的优化效果,将控制器参数“Ki”、“Kq”补充选为调节参数,并且引入新的优化目标——上升时间(RiseTime)和稳态时间(SettlingTime)。

5.3.1 优化最大超调量(Overshoot)

A.

从图5-12开始,点击菜单“试验→模型优化”,弹出图5-13所示的参数配置界面。

图5-13 模型优化参数配置向导

这次选择前次操作所生成的模型实例“ControllerDesign_F14-2”,如果该实例是当前实例,会被自动选中。

B.按本例要求,选择控制器参数“Ki”、“Kf”、“Kq”作为调节参数,名义值取自模型实例“ControllerDesign_F14-2”,分别为“-2.0”、“-1.68371”、“0.5”,参数范围分别为:-10.0≤Ki、Kf≤0.0,0≤Kq≤10.0,如图

5-14所示。

图5-14 调节参数属性页

注意,这里先将参数“Ki”的生效状态设为“false”,意味着“Ki”在本次优化过程中视为固定参数,看看通过调节“Kf”、“Kq”能否满足期望目标。

C.本例中,在前次基础上增加攻击角alpha_deg的上升时间(RistTime)和criteria.feedback.y的稳态时间(SettlingTime)作为新的优化目标,参考图5-15,其中,函数RistTime实参设为“1.0”、“0.1”、“0.9”(注意俯仰角alpha_c_deg = 1.0);函数SettlingTime实参设为“0.0”、“0.01

”。

图5-15 优化目标属性页

注意,这里先将此次新增优化目标的生效状态设为“false”,意味着在优化过程中不参与计算目标函数(或约束条件)。

变量估值函数“RistTime(上升时间)”和“SettlingTime(稳态时间)”的参数输入界面如图5-16所示。

图5-16 函数RistTime和SettlingTime的参数列表

关于变量估值函数的说明详见MWorks_Toolkit_Parameter_Analysis.pdf。

D.

注意上一步中增加了新的优化目标,尽管上升时间(RistTime)和稳态时间(SettlingTime)的生效状态设为“false”(本次优化中被忽略),还是应该设置其期望值。本例中分别设为“2.0”、“0.2”,表示期望的上升时间RistTime小于0.5=1/2秒,稳态时间SettlingTime小于5=1/0.2秒,如图5-17所示。

图5-17 期望值属性页

E.本次操作中,目标聚合方式改为“1-Norm”(线性加权法),其他选项保持不变,如图5-18所示。

图5-18 优化算法选项

F.参数配置完成,建议将本次参数配置结果保存为外部脚本文件,以便复用。 执行模型优化,经过47次迭代之后得到结果,如图

5-19所示。

图5-19 参数优化的输出结果

其中,

(1). 输出栏中给出了调节参数的最优解,( Ki, Kf, Kq ) = ( -2.0, -1.37425, 0.727119 ),注意“Ki”保持不变。

(2). 观察迭代过程信息,优化前后,攻击角alpha_deg对俯仰角alpha_c_deg的最大超调量从“0.0279645”减小至“4.78822e-6”(远小于1/100),同时升角偏离量delta_deg从“1.19165”减小至“0.91534”(小于1/0.5)。

可以看出,改变调节参数“Kf”、“Kq”使得攻击角alpha_deg对俯仰角alpha_c_deg的最大超调量、升角偏离量delta_deg均达到预期目标。但由于“Kq”的因素,使得攻击角alpha_deg的上升时间(RiseTime)延长了。

注意在变量浏览器中生成了新的优化实例“ControllerDesign_F14-3”,其中调节参数“Kf”、“Kq”已设为最优解,接下来测试调节参数“Ki”的优化效果。

5.3.2 优化上升时间(RiseTime)

这一小节中将使用3个控制器参数作为调节参数,并将新增优化目标置恢复为有效,参数配置过程如下。

A.从图5-19开始,点击菜单“试验→模型优化”,弹出参数配置界面,如图

5-20所示。

图5-20 模型优化参数配置向导

这次选择前次操作所生成的模型实例“ControllerDesign_F14-3”,如果该实例是当前实例,会被自动选中。

B.本次优化中,控制器参数“Ki”、“Kf”、“Kq”的生效状态全部设为“true”,其中“Kf”、“Kq”的名义值“-1.37425”、“0.727119”取自前次优化结果,该值已写入模型实例“ControllerDesign_F14-3”,其他设置保持不变,如图5-21所示。

图5-21 调节参数属性页

C.本次优化中,对于在前次操作中新增的优化目标:上升时间(RistTime)、稳态时间(SettlingTime),将其生效状态改为“true”(对比图5-15),其他设置保持不变,如图

5-22所示。

图5-22 优化目标属性页

D.本次操作中,相对误差和步长因子设为1e-3(影响收敛准则判断),将目标聚合方式设为“MaximumNorm”(最大的目标函数值),其他选项保持不变,如图5-23所示。

图5-23 优化算法选项

E.参数配置完成,建议将本次参数配置结果保存为外部脚本文件,以便复用。 点击“确定”执行模型优化,经过45次迭代之后得到结果,如图

5-24所示。

图5-24 参数优化的输出结果

其中,

(1). 输出栏中给出了调节参数的最优解,( Ki, Kf, Kq ) = ( Ki, Kf, Kq ) = ( -2.39438, -2.82251, 0.669992 )。

(2). 观察迭代过程信息,优化前后,攻击角alpha_deg对俯仰角alpha_c_deg的最大超调量从“4.78822e-6”略有增加,现为“0.00737139”(0.74%<1%),升角偏离量delta_deg从“1.747128”略有增加,现为“1.75355”,但处于期望值以内(小于1/0.5)。

(3). 本次操作中增加的优化目标中,攻击角alpha_deg的上升时间(RistTime)从“0.818822”秒缩短到“0.441234”秒(小于1/2);然而,criteria.feedback.y的稳态时间(SettlingTime)从“1.5738”秒延长到“4.0525”秒(但仍然小于1/0.2)。

注意在变量浏览器中生成了新的优化实例“ControllerDesign_F14-4”,其中控制器参数“Ki”、“Kf”、“Kq”已设为最优解,可以从中观察其他指标变量。

5.4 多目标优化

在上一节中已提及多目标优化,并测试了一组参数配置。下面通过更多测例来考察参数初值、目标权值和约束条件对多目标优化结果的影响。

5.4.1 使用不同的参数初值

先看不同的参数初值对多目标优化的影响。

A.

本次操作中,选择控制器参数“Ki”、“Kf”、“Kq”作为调节参数,名义值改为“-2.0”、“-3.0”、“0.5”,参数范围保持不变,如图5-25所示。

图5-25 调节参数属性页

本次操作中,有效的优化目标包括4项:Overshoot、MaxDeviation、RiseTime、SettlingTime,函数实参保持不变,约束类型均为“Minimize”(最小化),如图

5-26所示。

图5-26 优化目标属性页

C.本次操作中,目标变量“权值”分别设为“100.0”、“0.4”、“2.0”、“0.3”,表示期望的攻击角alpha_deg小于0.01=1/100°,升角偏离量delta_deg小于

2.5=1/0.4°,上升时间RistTime小于0.5=1/2秒,稳态时间SettlingTime小于3=1/0.3秒,如图

5-27所示。

图5-27 期望值属性页

本次操作中,相对误差设为1e-5,目标聚合方式选择“MaximumNorm”(最大的目标函数值),步长因子设为1e-4,如图

5-28所示。

图5-28 优化算法选项

E. 执行模型优化,经过78次迭代之后得到结果,最优解 ( Ki, Kf, Kq ) = ( -4.51274, -4.64094, 1.05199 ),优化前后目标变量结果对比图

5-29所示。

图5-29 参数优化的输出结果

5.4.2 改变目标权值

在上一节操作基础上,将优化目标Overshoot(最大超调量)的“权值”从“100”改为“10”,参数配置过程如下。

本次操作中在前次操作基础上进行,控制器参数“Ki”、“Kf”、“Kq”设为“-4.51274”、“-4.64094”、“1.05199”,参数范围保持不变,如图

5-30所示。

图5-30 调节参数属性页

B.

本次操作中,目标权值分别设为“10.0”、“0.3”、“2.0”、“0.4”,表示期望的攻击角alpha_deg小于0.1=1/10°,升角偏离量delta_deg小于3=1/0.3°,上升时间RistTime小于0.5=1/2秒,稳态时间SettlingTime小于2.5=1/0.4秒,如图

5-31所示。

图5-31 期望值属性页

C.其他未特别说明的选项使用前次操作相同的配置。

执行模型优化,经过33次迭代之后得到结果,最优解 ( Ki, Kf, Kq ) = ( -4.27225, -3.96667, 0.829078 ),优化前后目标变量曲线如图5-32所示。

图5-32 参数优化的输出结果

5.4.3 使用不等式约束条件

在上一节操作基础上,将优化目标“MaxDeviation(最大偏差)”改为不等式约束,参数配置过程如下。

A.本次操作中在前次操作基础上进行,控制器参数“Ki”、“Kf”、“Kq”设为“-4.51274”、“-4.64094”、“1.05199”,参数范围保持不变,如图

5-33所示。

图5-33 调节参数属性页

B.本次操作中,模型求解选项参考图5-22设置,有效的优化目标包括4项:

Overshoot、MaxDeviation、RiseTime、SettlingTime,函数实参保持不变,注意MaxDeviation约束类型设为“LessThan”,表示该目标变量用作不等式约束条件“≤”,如图5-34所示。

图5-34 优化目标属性页

C.本次操作中,期望值分别设为“10.0”、“3.0”、“2.0”、“0.4”,表示期望的攻击角alpha_deg小于0.1=1/10°,升角偏离量delta_deg小于3.0°(注意此处视为约束值,即要求delta_deg≤3.0),上升时间RistTime小于0.5=1/2秒,稳态时间SettlingTime小于2.5=1/0.4秒,如图

5-35所示。

图5-35 期望值属性页

D.其他未特别说明的选项使用前次操作相同的配置。

执行模型优化,经过10次迭代之后得到结果,最优解 ( Ki, Kf, Kq ) = ( -4.67529, -4.59681, 0.925857 ),优化前后目标变量曲线如图5-36所示。

图5-36 参数优化的输出结果

5.4.4 结果分析与小结

从上述结果中可以看出,多目标优化结果对调节参数、目标权值和约束条件是比较敏感的,不同的参数配置情况得到不同的参数最优解(属于Pareto解集),但优化结果能够满足预期目标。注意到算法迭代次数也受到这些因素影响,本例中迭代次数分别是78次、33次、10次。实际使用时需根据具体的场景进行多次测试,以期得到最满意的结果。

6. 多实例优化

如前所述,多实例优化旨在解决不同工作条件下产品性能最优化问题。这里工作条件可对应实例的产品型号、运行工况等,由实例参数来定义。多实例优化是通过改变调节参数,使得仿真模型在不同情况的性能指标均达到最优。

6.1 定义实例参数

本例中,选择空气动力学参数 { Ma, Md, Mq, Za, Zd } 定义仿真模型所处的工作条件,选择控制器参数 { Ki, Kf, Kq } 作为调节参数,并沿用前文提及的4个优化目标 { Overshoot, MaxDeviation, RiseTime, SettlingTime }。

6.2 检查目标变量指标

从图5-3开始(注意先不对仿真实例“ControllerDesign_F14-1”进行求解),操作步骤如下:

(1). 在变量浏览器中输入下列参数,如图6-1所示:

控制器参数 { Ki, Kf, Kq } = { -2, -1.72, 0.5 },

空气动力学参数 { Ma, Md, Mq, Za, Zd } = { -5, -7.5, -0.7, -0.67, -0.2 }。

图6-1 输入控制器参数和空气动力学参数

(2). 点击菜单“仿真→求解”,调用求解器进行求解。提示:如果该实例已经求解,这一步将自动生成新的模型实例“ControllerDesign_F14-2”。

(3). 检查目标变量相关的性能指标是否满足。这一步在命令窗口中手工输入命令脚本来进行,结果参见表6-1。

表6-1 检查目标变量相关的性能指标

其中,除了“RiseTime(上升时间)”不满足要求之外,其余变量指标都在期望值范围内。

6.3 优化上升时间(RiseTime)

本次优化试图解决“alpha_deg”(攻击角)性能指标“RiseTime”(上升时间)不符合期望值的问题。参数配置过程如下。

A.

本次操作中,选择控制器参数“Ki”、“Kf”、“Kq”作为调节参数,名义值设为“-2.0”、“-1.72”、“0.5”,如图6-2所示。

图6-2 调节参数属性页

B.本次操作中,有效的优化目标包括4项:Overshoot、MaxDeviation、RiseTime、SettlingTime,函数实参保持不变,约束类型均为“Minimize”(最小化),如图6-3所示。

图6-3 优化目标属性页

C.本次操作中,使用缺省实例“Normal”,如图

6-4所示。

图6-4 设置实例选项

D.本次操作中,选择{ Ma, Md, Mq, Za, Zd }作为实例参数,参数值设为{ -5, -7.5, -0.7, -0.67, -0.2 },如图6-5所示。

图6-5 实例参数属性页

E.本次操作中,期望值分别设为“100.0”、“0.5”、“2.0”、“0.25”,表示期望的攻击角alpha_deg小于0.01=1/100°,升角偏离量delta_deg小于2=1/0.5°,上升时间RistTime小于0.5=1/2秒,稳态时间SettlingTime小于4=1/0.25秒,如图

6-6所示。

图6-6 期望值属性页

F.本次操作中,求解起止时间设为0—10秒,步长设为1e-3,求解精度设为1e-4,其他选项设为缺省值,如图6-7所示。


相关内容

  • 传统多目标优化方法和多目标遗传算法的比较综述
  • 2010年第32卷第3期第48页 电气传动自动化 ELECTRlCDRIVE V01.32,No.3 AUT()MATIoN2010.32(3):48-50 传统多目标优化方法和多目标遗传算法的比较综述 马小妹L2,李宇龙3,严浪3 (1.西安电子科技大学计算机学院.陕西西安710071:2.天水师 ...

  • 多目标优化的求解方法与发展
  • 多目标优化的求解方法与发展 耿玉磊 张翔 (福建农林大学机电工程学院,福州金山 350002) 摘要:本文首先介绍了传统多目标优化求解方法和改进:对遗传算法,模糊优化,神经网络等算法在多目标优化中的应用做了介绍:最后介绍了满意度. 关键词:多目标优化 遗传算法 神经网络 1前言 多目标优化(Mult ...

  • 最优化基础理论与方法
  • 目录 1.最优化的概念与分类 ................................................................................................................. 2 2. 最优化问题的求解方法 ..... ...

  • 多目标优化问题的研究综述
  • 多目标优化问题的研究概述 摘要: 本文在查阅相关资料的基础上对多目标优化问题进行了一般性描述,详细介绍了实际生活中存在的多目标优化问题以及解决多目标优化题的几种典型算法, 讨论了各个算法存在的优缺点. 关键词: 多目标优化; 进化算法; 粒子群算法; 蚁群算法; 模拟退火 生活中, 许多问题都是由相 ...

  • 机器学习中多目标优化算法的简述
  • 摘要:机器学习本质上就是多目标优化问题.解决机器学习问题的多目标优化方法有三种:标量式的多目标优化,按词典排序的多目标优化以及基于Pareto的多目标优化,而基于Pareto的多目标优化方法是目前使用最广泛的,也是研究较多的.文章概述了在机器学习中使用的多目标优化算法的优缺点.最后表明基于Paret ...

  • 约束多目标优化问题中约束处理方法综述
  • 研究与开发 文章编号:1007-1423(2012)36-0012-04DOI:10.3969/j.issn.1007-1423.2012.36.003 约束多目标优化问题中约束处理方法综述* 王杰文 (湖南第一师范学院信息科学与工程系,长沙410205) 摘 要:约束条件的处理是求解约束多目标优化 ...

  • 一维优化方法
  • 最优化设计数学模型中的基本概念: 1.设计变量 在机械设计中,区别不同的设计方案,通常是以一组取值不同的参数来表示.这些参数可以是表示构件形状.大小.位置等的几何量,也可以是表示构件质量.速度.加速度.力.力矩等的物理量.在构成一项设计方案的全部参数中,可能有一部分参数根据实际情况预先确定了数值,它 ...

  • 登录页最佳实践:如何优化你的登录页面?
  • 建站知识 可以说首页就是连接你与这个世界,你的客户,你的潜在客户或者任何人的桥梁.做好或不做好往往意味着一个成功的转化用户和一个一去不复返的用户之间的差别. 所以,你千万不能把它搞砸了!那么,我们就来看看一些登录页面的最佳实例,边看可以边思考你的登录页面还有哪些地方可以优化. 尽量保持登录页面简洁 ...

  • 简论土地利用结构优化与模型设计
  • 中国土地科学678+/9/+:;68 第*3卷第-期 =>?$*3@+>$- &探讨创新' 简论土地利用结构优化与模型设计 严金明 (中国人民大学土地管理系,北京* &摘要' 土地利用结构优化是土地利用总体规划的核心内容,如何按自然规律和经济规律来建立合理的土地利用 结构 ...