优化设计和不确定的变量(代码)
这个例子展示了如何优化设计时不确定的变量。你优化不断搅拌釜反应器的尺寸(装运箱)来减少产物浓度变化和生产成本在不同的情况下,或者不确定的时候,原料。
连续搅拌釜反应器(装运箱)模型
连续搅拌釜反应器(装运箱)是常见的在这个过程中产业。Simu万博1manbetxlink仿真®模型,sdoCSTR
夹套传热(即,模型。,non-adiabatic) tank reactor described in [1]. The CSTR is assumed to be perfectly mixed, with a single first-order exothermic and irreversible reaction,。、反应物转化为,产品。
在本例中,您使用以下两个装运箱模型,它使用基本的会计和能量守恒原则:
,- - -的浓度在装运箱和提要(kgmol / m ^ 3)
,,——装运箱,饲料,和冷却剂的温度[K]
和——体积流率(m ^ 3 / h)和材料的密度在装运箱(1 / m ^ 3)
和——高度[m]和激烈的横截面积(m ^ 2)装运箱。
——Pre-exponential非热能的因素的反应(1 / h)
和——反应的活化能和热(千卡/ kgmol)
玻耳兹曼的气体常数(千卡/ (kgmol * K))
和——热容(千卡/ K)和传热系数(千卡/ (m ^ 2 * K * h)]
打开仿真软件模型。万博1manbetx
open_system (“sdoCSTR”);
模型包括一个级联的PID控制器控制器
子系统。控制器调节反应堆温度,反应堆剩余浓度,。
装运箱设计问题
假设装运箱是圆柱形,冷却剂应用于圆柱的底部。优化装运箱横截面积,装运箱的高度,,以满足以下设计目标:
减少残余浓度的变化,。残留浓度变化影响装运箱的质量的产品。减少变化也提高了装运箱利润。
减少意味着冷却液温度。加热或冷却夹克冷却液温度是昂贵的。冷却剂平均温度提高装运箱利润最小化。
变化的设计必须允许供应饲料的质量浓度,进料温度,。从不同的供应商装运箱是用饲料。饲料的质量不同于供应商,供应商也在每个不同批量供应。
指定设计变量
选择下面的模型参数作为设计变量的优化:
圆柱横截面积
气缸高度
p = sdo.getParameterFromModel (“sdoCSTR”,{“一个”,“h”});
限制范围的横截面积(1 2)m ^ 2。
(1页)。最小值= 1;(1页)。最大= 2;
限制高度一系列3 [1]。
(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,情报,imaxT]),:);
指定设计要求
需要记录模型信号的设计要求。在优化过程中,模型是模拟使用设计变量的当前值。记录信号是用来评估设计要求。
日志以下信号:
装运箱浓度,可以在第二个输出端口
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.SimulationTest (“sdoCSTR”);simulator.LoggingInfo。信号=(浓缩的,冷却剂);
创建目标/约束函数
创建一个函数来评估装运箱的设计。这个函数在每个优化迭代。
使用一个匿名函数调用的一个参数sdoCSTR_design
函数。
evalDesign = @ (p) sdoCSTR_design (p,模拟器、标点、uSmpl);
的evalDesign
功能:
有一个输入参数,用于指定装运箱的尺寸吗
返回优化客观价值
的sdoCSTR_design
函数使用一个为
循环遍历指定的样本值的饲料的浓度。在循环中,功能:
使用当前迭代模拟模型,进料浓度、进料温度的值
计算剩余浓度变化和冷却液温度的成本
查看目标函数类型编辑sdoCSTR_design
。
评估初步设计
调用evalDesign
函数与初始装运箱尺寸。
dInit = evalDesign (p)
dInit =结构体字段:F: 11.3356 costConc: 6.4390 costCoolant: 4.8965
模型响应初始设计的阴谋。模拟模型使用示例提要集中值。图显示了残留浓度和冷却液温度的变化。
sdoCSTR_plotModelResponse (p,模拟器、标点、uSmpl);
的sdoCSTR_plotModelResponse
功能块模型响应。要查看这个函数,类型编辑sdoCSTR_plotModelResponse
。
优化设计
通过目标函数和初始装运箱尺寸sdo.optimize
。
pOpt = sdo.optimize (evalDesign, p)
优化开始2023 - 3月- 03,09:12:51 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 0 0.102 0.314 2.48124 7 32 0 0.0164 0.179 8 39 2.47744 0 0.00748 0.316 9 48 2.46313 0 0.0323 0.468 10 57 2.46313 0 0.000778 0.468局部最小值。约束满足。fmincon停止因为当前步骤的大小小于一步尺寸公差的值和约束满足约束的值公差内。pOpt(1, - 1) =名字:A值:2最小:1最大:2自由:1比例:0.5000信息:[1 x1 struct] pOpt(2, 1) =名字:“h”值:2.2037最小:1最大:3自由:1规模:2信息:[1 x1 struct] 2 x1 param.Continuous
评估优化设计
调用evalDesign
函数优化装运箱尺寸。
dFinal = evalDesign (pOpt)
dFinal =结构体字段:F: 2.4631 costConc: 1.4415 costCoolant: 1.0217
模型响应优化设计的阴谋。模拟模型使用示例提要集中值。优化设计降低了残余浓度变异和冷却剂平均温度对不同饲料股票。
sdoCSTR_plotModelResponse (pOpt模拟器、标点、uSmpl);
相关的例子
学习如何使用敏感性分析来探索装运箱的设计空间和选择一个初始设计优化,明白了设计探索使用参数抽样(代码)。
引用
[1]Bequette B.W.过程动力学:建模、分析和仿真。第1版。上台北:普伦蒂斯霍尔,1998年。
%关闭模式bdclose (“sdoCSTR”)
另请参阅
sdo.optimize
|sdo.getValueFromModel
|sdo.getParameterFromModel