主要内容

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

这个例子展示了在存在不确定变量时如何优化设计。您优化连续搅拌槽式反应器(CSTR)的尺寸,以最大限度地减少产品浓度变化和生产成本,在变化或不确定的原料库存情况下。

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

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

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

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

$$\frac{d T}{dt}=\frac{F}{A*h}(T{feed}-T)-\frac{h}{c_p\rho}r
;-\frac{U}{c_p*\rho*h}(T-T{cool})$$

$ $ 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美元玻尔兹曼气体常数[千卡/(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]米的范围内。

(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(唯一([iminC,imaxC,iminT,imaxT]),:);

指定设计要求

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

记录以下信号:

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

浓缩的= Si万博1manbetxmulink.SimulationData.SignalLoggingInfo;浓缩的。BlockPath =“sdoCSTR /装运箱”;Conc.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,simulator,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)
优化开始于2021年9月1日16:58:04最大一阶Iter F计数F(x)约束步长最优性0 4 5.17535 0 1 8 3.81522 0 2.01 7.83 2 12 2.63963 0.57 3.03 3 16 2.52991 0.1590.27 4 20 2.51352 0.0156 0.453 5 24 2.50978 0.131 1.64 6 28 2.50087 0.102 0.314 32 2.48124 0.0164 0.179 8 39 2.47744 0.00748 0.316 9 48 2.46313 0 0 0.0323 0.468 10 10 2.462.0008当地可能最小值不满足。fmincon已停止,因为当前步长的大小小于步长公差的值,并且约束满足在约束公差的值内。pOpt(1,1)=名称:“A”值:2最小值:1最大值:2自由值:1比例:0.5000信息:[1x1结构]pOpt(2,1)=名称:“h”值:2.2037最小值:1最大值:3自由值:1比例:2信息:[1x1结构]2x1参数连续

评价优化设计

调用evalDesign功能与优化的CSTR尺寸。

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

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

sdoCSTR_plotModelResponse(pOpt、模拟器、pUnc、uSmpl);

相关的例子

要学习如何使用灵敏度分析来探索CSTR设计空间,并选择一个优化的初始设计,请参见使用参数取样的设计探索(代码)

工具书类

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

%关闭模型bdclose (“sdoCSTR”