主要内容

不确定变量下的设计优化(代码)

这个例子展示了当存在不确定变量时如何优化设计。您可以优化连续搅拌釜反应器(CSTR)的尺寸,在原料变化或不确定的情况下,将产品浓度变化和生产成本降至最低。

连续搅拌釜反应器(CSTR)模型

连续搅拌槽式反应器(CSTRs)在工艺工业中很常见。Simu万博1manbetxlink仿真®模型,sdoCSTR,对[1]中描述的夹套绝热(即非绝热)罐式反应器进行建模。假设CSTR完全混合,有一个单一的一阶放热不可逆反应,B \ rightarrow美元一个美元,反应物,被转化为B美元,产品。

在本例中,您使用了以下两种状态CSTR模型,该模型使用了基本的会计和节能原则:

$ $ \压裂{d C_A} {dt} = \压裂{F} {* h} (C_{饲料}- C_A) - r * C_A $ $

$ $ \压裂{d T} {dt} = \压裂{F} {* h} (T_{饲料}识别- T) - \压裂{h} {c_p \ρ}

$ $ r = k_0 * e ^{\压裂{- e} {r * T}} $ $

  • C_A美元,美元C_{饲料}$- CSTR和饲料中A的浓度[kgmol/m^3]

  • 元新台币T_{饲料}识别美元,T_{酷}识别美元- CSTR,进料温度,冷却温度[K]

  • $ F $\ρ美元-容积流量[m^3/h]和CSTR中物料的密度[1/m^3]

  • h美元一个美元- CSTR的高度[m]和受热截面积[m^2]。

  • k_0美元-反应的指数前非热因子B \ rightarrow美元(1 / h)

  • E美元H美元-的活化能和反应热B \ rightarrow美元(千卡/ kgmol)

  • R美元-玻尔兹曼气体常数[kcal/(kgmol * K)]

  • c_p美元你美元-热容量[千卡/K]和传热系数[千卡/(m^2 * K * h)]

打开Simulin万博1manbetxk模型。

open_system (“sdoCSTR”);

该模型中包含了级联PID控制器控制器子系统。控制器调节反应堆温度,元新台币,反应器剩余浓度,C_A美元

装运箱设计问题

假设CSTR是圆柱形的,冷却剂应用在圆柱体的底部。调整CSTR横截面面积,一个美元, CSTR高度,h美元,以达到以下设计目标:

  • 使残余浓度的变化最小,C_A美元.残余浓度的变化会对CSTR产品的质量产生负面影响。减少变化也可以提高CSTR的利润。

  • 使平均冷却剂温度最小化T_{酷}识别美元.加热或冷却夹套冷却剂的温度是昂贵的。降低冷却剂的平均温度可以提高CSTR的利润。

设计必须考虑到供给饲料浓度质量的变化,美元C_{饲料}$,饲料温度,T_{饲料}识别美元.CSTR使用来自不同供应商的饲料。饲料的质量因供应商而异,也因每个供货批次而异。

指定设计变量

选取以下模型参数作为设计变量进行优化:

  • 圆柱横截面积一个美元

  • 气缸高度h美元

p = sdo.getParameterFromModel (“sdoCSTR”, {“一个”“h”});

截面积限制在[1 2]m^2范围内。

(1页)。最小值= 1;(1页)。最大= 2;

将高度限制在[13]m的范围内。

(2页)。最小值= 1;(2页)。最大= 3;

指定不确定变量

选择饲料浓度和饲料温度作为不确定变量。您可以使用不同的饲料温度和浓度值来评估设计。

标点= sdo.getParameterFromModel (“sdoCSTR”, {“FeedCon0”“FeedTemp0”});

为不确定变量创建一个参数空间。对两个变量都使用正态分布。指定平均值作为当前参数值。指定饲料浓度平均值的5%和温度平均值的1%的方差。

uSpace = sdo.ParameterSpace(标点);冷色系色光变化uSpace = setDistribution (,“FeedCon0”makedist (“正常”、标点(1)value, 0.05 *标点(1)value));冷色系色光变化uSpace = setDistribution (,“FeedTemp0”makedist (“正常”、标点(2)value, 0.01 *标点(2)value));

进料浓度与进料温度呈负相关。将这些信息添加到参数空间中。

冷色系色光变化%。RankCorrelation = [1 -0.6;-0.6 - 1];

秩相关矩阵对每个参数都有一行和一列,其中(i,j)项指定i和j参数之间的相关性。

对参数空间进行采样。散点图显示了浓度与温度之间的相关性。

rng (“默认”);%的再现性冷色系色光变化uSmpl = sdo.sample (60);sdo.scatterPlot (uSmpl)

理想情况下,你应该针对设计和不确定空间中的每个点组合来评估设计,这意味着30*60 = 1800次模拟。每次模拟大约需要0.5秒。您可以使用并行计算来加快计算速度。对于本例,您只使用具有最大和最小浓度和温度值的样品,将评估时间减少到1分钟左右。

[~, iminC] = min (uSmpl.FeedCon0);[~, imaxC] = max (uSmpl.FeedCon0);[~, iminT] = min (uSmpl.FeedTemp0);[~, imaxT] = max (uSmpl.FeedTemp0);uSmpl = uSmpl(unique([iminC,imaxC,iminT,imaxT]),:);

指定设计要求

设计要求需要记录模型信号。在优化过程中,利用设计变量的当前值对模型进行仿真。记录的信号用于评估设计要求。

记录以下信号:

  • CSTR浓度,可在第二输出端口sdoCSTR /装运箱

浓缩的= Si万博1manbetxmulink.SimulationData.SignalLoggingInfo;浓缩的。BlockPath =“sdoCSTR /装运箱”;浓缩的。OutputPortIndex = 2;Conc.LoggingInfo.NameMode = 1;Conc.LoggingInfo.LoggingName =“浓度”
  • 冷却剂温度,可在第一时间输出sdoCSTR /控制器

冷却剂= Simul万博1manbetxink.SimulationData.SignalLoggingInfo;冷却剂。BlockPath =“sdoCSTR /控制器”;冷却剂。OutputPortIndex = 1;Coolant.LoggingInfo.NameMode = 1;Coolant.LoggingInfo.LoggingName =“冷却”

创建并配置一个模拟测试对象来记录所需的信号。

模拟器= sdo。模拟(“sdoCSTR”);simulator.LoggingInfo.Signals =(浓缩的,冷却剂);

创建目标/约束函数

创建一个函数来评估CSTR设计。这个函数在每次优化迭代时调用。

方法的一个带参数的匿名函数sdoCSTR_design函数。

evalDesign = @(p) sdoCSTR_design(p,模拟器,pUnc,uSmpl);

evalDesign功能:

  • 有一个输入参数指定CSTR维度

  • 返回优化目标值

sdoCSTR_design函数使用一个循环遍历为饲料浓度指定的样本值。在循环中,函数:

  • 使用当前迭代、饲料浓度和饲料温度值来模拟模型

  • 计算残余浓度变化和冷却剂温度成本

要查看目标函数,输入编辑sdoCSTR_design

评估初步设计

调用evalDesign函数的初始CSTR维。

dInit = evalDesign (p)
dInit = struct with fields: F: 11.3356 costConc: 6.4390 costCoolant: 4.8965

绘制初始设计的模型响应图。使用样品进料浓度值来模拟模型。该图显示了残余浓度和冷却剂温度的变化。

sdoCSTR_plotModelResponse (p,模拟器、标点、uSmpl);

sdoCSTR_plotModelResponse函数绘制模型响应。要查看此函数,输入编辑sdoCSTR_plotModelResponse

优化设计

通过目标函数和初始CSTR维数sdo.optimize

pOpt = sdo.optimize (evalDesign, p)
优化01 - 9月- 2021年开始16:58:04 max一阶Iter F-count f (x)约束步长最优0 4 5.17535 0 1 8 3.81522 0 2.01 7.83 - 2 12 2.63963 2.52991 0.57 3.03 - 3 16 0 0.159 0.27 - 4 20 2.51352 0 0.0156 0.453 - 5 24 2.50978 0 0.131 1.64 6 28 2.50087 2.48124 0.102 0.314 7 32 0 2.47744 0.0164 0.179 8 39 0 0.00748 0.316 9 48 2.46313 00.0323 0.468 10 57 2.46313 0 0.000778 0.468局部最小可能。约束满足。Fmincon停止是因为当前步长小于步长公差的值,并且约束满足于约束公差的值之内。pOpt(1,1) = Name: 'A'值:2最小:1最大值:2空闲:1比例:0.5000信息:[1x1 struct] pOpt(2,1) = Name: 'h'值:2.2037最小:1最大值:3空闲:1比例:2信息:[1x1 struct] 2x1 param。连续

评估优化设计

调用evalDesign函数与优化的CSTR尺寸。

dFinal = evalDesign (pOpt)
dFinal = struct with fields: F: 2.4631 costConc: 1.4415 costCoolant: 1.0217

绘制优化设计的模型响应图。使用样品进料浓度值来模拟模型。优化后的设计减小了不同原料的残留浓度变化和平均冷却液温度。

sdoCSTR_plotModelResponse (pOpt模拟器、标点、uSmpl);

相关的例子

要了解如何使用敏感性分析来探索CSTR设计空间,并选择一个初始设计进行优化,请参见使用参数采样(代码)进行设计探索

参考文献

[1] Bequette B.W.过程动力学:建模、分析和仿真。第1版。上鞍河,新泽西:普伦蒂斯厅,1998。

%关闭模型bdclose (“sdoCSTR”