主要内容

使用参数采样设计探索(代码)

此示例显示如何采样和探索设计空间。您探索了连续搅拌罐式反应器的设计,以最大限度地减少产品浓度变化和生产成本。该设计包括饲料股票不确定性。

您可以通过使用概率分布描述设计参数来探索CSTR设计。您可以使用分布在设计空间中生成随机样本,并在这些样本点上执行设计的蒙特卡罗评估。然后创建图形来可视化设计空间并选择最佳设计。然后,您可以使用最佳设计作为优化设计的初始猜测。

您还可以使用采样的设计空间和Monte-Carlo评估输出来分析设计参数对设计的影响,见确定估算的关键参数(代码)

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

连续搅拌的罐式反应器(CSTR)在工艺业中很常见。Simu金宝applink模型,Sdocstr.,模拟[1]中描述的夹套的糖尿病(即非绝热)罐反应器。假设CSTR完全混合,单一的一阶放热和不可逆的反应,$ a \ lightarrow b $$ a $,反应物,转化为$ b $,产品。

在此示例中,您使用以下两个状态CSTR模型,它使用基本会计和节能原则:

$$ \ frac {d c_a} {dt} = \ frac {f} {a * h}(c_ {feed}  -  c_a)-r * c_a $$

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

$$ = k_0 * e ^ {\ frac {-e} {r * t}} $$

  • $C_A$,及$ c_ {feed} $-CSTR和进料中A的浓度[kgmol/m^3]

  • $T$$ t_ {feed} $,及$ t_ {cool} $- CSTR,饲料和冷却剂温度[K]

  • $F$$\rho$- 体积流量[m ^ 3 / h]和Cstr中的材料密度[1 / m ^ 3]

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

  • $ k_0 $- 预先指数的非热因子进行反应$ a \ lightarrow b $[1/h]

  • $E$$ h $-反应活化能和反应热$ a \ lightarrow b $[kcal / kgmol]

  • $ r $- Boltzmann的气体常数[kcal /(kgmol * k)]

  • $ c_p $美元$-热容[kcal/K]和传热系数[kcal/(m^2*K*h)]

打开Simulin金宝appk模型。

开放式系统('sdocstr');

CSTR设计问题

假设CSTR是圆柱形的,冷却剂施加到气缸的基部。调整CSTR横截面积,$ a $和cstr高度,h美元,以满足以下设计目标:

  • 最小化残留浓度的变化,$C_A$。残留浓度的变化负面影响CSTR产品的质量。最小化变化也提高了CSTR利润。

  • 将平均冷却液温度降至最低$ t_ {cool} $.加热或冷却夹套冷却液温度非常昂贵。将平均冷却液温度降至最低可提高CSTR的利润。

设计必须考虑进料浓度质量的变化,$ c_ {feed} $,以及进料温度,$ t_ {feed} $。CSTR从不同供应商饲料供给。饲料的质量不同于供应商到供应商,并且在每个供应批次内也有所不同。

指定设计变量

选择以下型号参数作为设计变量:

  • 气缸横截面积$ a $

  • 气缸高度h美元

p = sdo.getparameterfrommodel('sdocstr',{'一种''H'});

将横截面积限制在[0.2 2] m ^ 2的范围内。

p(1).minimum = 0.2;p(1).maximum = 2;

将高度限制在[0.5 3]m范围内。

p(2).minimum = 0.5;p(2).maximum = 3;

样本设计空间

为设计变量创建一个参数空间。参数空间表征允许参数值和参数值的组合。

pspace = sdo.parameterspace(p);

参数空间对设计变量使用默认均匀分布。分布下限和上限分别设置为设计变量最小值和最大值。

使用sdo.sample.函数从参数空间生成样本。使用样本评估模型并探索设计空间。

rng默认;%为了再现性psmpl = sdo.sample(pspace,30);

使用sdo.scatterplot.命令可视化采样参数空间。散点图显示对角子批次上的参数分布和非对角子批次上的成对参数组合。

图,sdo.scatterplot(psmpl)

指定不确定的变量

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

pUnc=sdo.getParameterFromModel('sdocstr',{'feedcon0''feedtemp0'});

为不确定变量创建一个参数空间。使用正常分布对于两个变量。将均值指定为当前参数值。指定饲料浓度的5%的方差为饲料浓度的5%,其中1%的温度的平均值。

USPACE = SDO.ParametersPace(Punc);USPACE = SETDISTRIBURENT(USPACE,'feedcon0',制造主义者('普通的',Punc(1).Value,0.05 * punc(1).Value);USPACE = SETDISTRIBURENT(USPACE,'feedtemp0',制造主义者('普通的',Punc(2).Value,0.01 * punc(2).Value);

进料浓度与进料温度相反。将此信息添加到参数空间。

uSpace.RankCorrelation=[1-0.6;-0.61];

等级相关矩阵为每个参数的行和列具有(i,j)条目,指定I和J参数之间的相关性。

采样参数空间。散点图显示浓度和温度之间的相关性。

usmpl = sdo.sample(USPace,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]),:)
USMPL = 4x2表FeedCON0 FeedTemp0 ________ __________9.4555 303.58 11.175 288.13 11.293 290.73 8.9308 294.16

创建评估功能

创建一个函数,用于评估设计空间中给定采样点的设计。对设计进行评估如何最小化残留浓度和平均冷却剂温度的变化。

指定设计要求

评估设计空间中的点需要记录模型信号。记录的信号用于评估设计要求。

记录以下信号:

  • CSTR浓度,可在第二个输出端口提供Sdocstr / Cstr.堵塞

cenc = 金宝appsimulink.simulationdata.signalloggingInfo;conc.blockpath =.“sdoCSTR/CSTR”;浓缩的。OutputPortIndex = 2;Conc.LoggingInfo.NameMode = 1;Conc.LoggingInfo.LoggingName =“专注”;
  • 冷却剂温度,可在第一个输出处提供Sdocstr / Controller.堵塞

冷却液=Simuli金宝appnk.SimulationData.SignalLoggingInfo;冷却液.BlockPath=“sdoCSTR/控制器”;CoolAnt.outputportIndex = 1;coolant.logginginfo.nameMode = 1;coolant.logginginfo.loggingName =.'冷却';

创建和配置模拟测试对象以记录所需的信号。

模拟器=sdo.SimulationTest('sdocstr');simulator.logginginfo.signals = [粗,冷却液];

评估功能

使用一个调用的一个参数使用匿名函数sdocstr_design.功能。

评估设计=@(p)sdoCSTR_设计(p、模拟器、pUnc、uSmpl);

evaldesign.功能:

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

  • 返回优化目标值

sdocstr_design.功能使用A.为了循环通过为饲料浓度和温度指定的样本值迭代。在循环中,功能:

  • 使用当前设计点,饲料浓度和馈电温度值模拟模型

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

要查看目标函数,请键入编辑sdocstr_design.

类型sdocstr_design.
功能设计=sdoCSTR_设计(p、模拟器、pUnc、smplUnc)%SDOCSTR|u DESIGN%%SDOCSTR|u DESIGN函数用于评估CSTR设计。%%| p |输入参数是CSTR维度的向量。%%|模拟器|输入参数是用于%模拟| SDOCSTR |模型和日志模拟信号的sdo.SimulinkTest对象。%%| pUnc |输入参数是用于指定CS的参数向量TR%输入进料浓度和进料温度。|smplUnc |参数是一个包含不同进料浓度和温度值的表格。%%| design |返金宝app回参数包含有关设计%评估的信息,可由| sdo.optimize |函数用于优化%设计。%%另请参见sdo.optimize,sdoExampleCostfunci在%%Copyright 2012-2013上,MathWorks,Inc.%%模型模拟和评估%%针对| smplUnc |中的每个值,配置和模拟模型。使用%记录的浓度和冷却液信号来计算设计成本。%costConc=0;costCoolant=0;对于ct=1:尺寸(smplUnc,1)%设置进料浓度和温度值pUnc(1).Value=smplUnc{ct,1};pUnc(2).Value=smplUnc{ct,2};%Simulate model simulator.Parameters=[p;pUnc];simulator=sim(simulator);logName=get_param('sdoCSTR','SignalLoggingName');simLog=get(simulator.LoggedData,logName);%基于%浓度与标称值的标准偏差计算浓度成本。Sig=find(simLog,“浓度”);costConc=costConc+10*std(信号值-2);%根据与室温的平均偏差计算冷却液成本。Sig=find(simLog,“冷却液”);costConc=costConc+abs(平均值(信号值-294))/30;end%%Return Total Cost%%将总成本计算为浓度成本和冷却液成本的总和。%design.F=costConc+costcontrol;%%将各个成本术语添加到返回参数中。优化程序不使用这些术语,但为了方便起见,将其包括在内。design.costConc=costConc;design.costcostcontrol=costcostcontrol;end

评估

使用评估命令在样例设计点评估模型。

y = sdo.evaluate(evaldesign,p,psmpl);
模型在30个样品中进行评估。

使用散点图查看评估结果。散点图显示每个设计变量(A、h)和设计成本的成对图。该地块包括总成本,F以及冷却剂和浓度成本,太空冷水Cosconc.分别。

散点图(pSmpl,y);

从图中可以看出,截面面积越大,总成本越低。然而,很难说高度是如何影响总成本的。

创建网格图,显示作为A和H函数的总成本。

Ftotal =散射interpolant(psmpl.a,psmpl.h,Y.F);XR = Linspace(min(psmpl.a),max(psmpl.a),60);Yr = Linspace(min(psmpl.h),max(psmpl.h),60);[xx,yy] = meshgrid(xr,yr);zz = ftotal(xx,yy);网格(XX,YY,ZZ)查看(56,30)标题('作为A和H的功能总成本)Zlabel(“总共”)Xlabel(p(1).name),Ylabel(p(2).name);

该曲线表明,高值A和H导致成本更低。采样空间中的最佳设计对应于具有最低成本值的设计。

[〜,IDX] = min(Y.F);pbest = [y(idx,:),psmpl(idx,:)]
Pbest = 1x5表F CostConc CostCoolant A H _____ ________ ________ ________________________________________________________________________________555552 1.9271 2.3867

优化设计空间

总成本表面图表明,低成本设计是在范围内的[1.5 2]和H范围内的设计[2 3]。修改A和H的参数空间分布,并重新确定设计空间以专注于该区域。

pSpace=setDistribution(pSpace,'一种',制造主义者('制服',1.5,2)); pSpace=setDistribution(pSpace,'H',制造主义者('制服',2,3));psmpl = sdo.sample(pspace,30);

添加Pbest.早期发现新样本使其是精制设计空间的一部分。

pSmpl = [pSmpl; pb (:, 4:5)];sdo.scatterPlot (pSmpl)

评估使用精制的设计空间

y = sdo.evaluate(evaldesign,p,psmpl);
在31个样品中评估的模型。

为设计空间的本节创建网状图。表面表示更好的设计在A = 1.9附近,H = 2.1点。

Ftotal =散射interpolant(psmpl.a,psmpl.h,Y.F);XR = Linspace(min(psmpl.a),max(psmpl.a),60);Yr = Linspace(min(psmpl.h),max(psmpl.h),60);[xx,yy] = meshgrid(xr,yr);zz = ftotal(xx,yy);网格(XX,YY,ZZ)查看(56,30)标题('作为A和H的功能总成本)Zlabel(“总共”)Xlabel(p(1).name),Ylabel(p(2).name);

从新的设计空间中找到最佳设计,并与前面发现的最佳设计点进行比较。

[〜,IDX] = min(Y.F);pbest = [pbest;[y(idx,:),psmpl(idx,:)]]
pBest=2x5表F成本浓缩冷却液A h(u)u(u)u(u)u(u)u(u)u(u)u(u)u(u)u)u(u)u)u(u)u)u(u)u)u(u)u)

优化设计空间中的最佳设计优于先前发现的设计。这表明在同一区域可能有更好的设计,并保证进一步优化设计空间。或者,您可以使用最佳设计点作为优化的初始猜测。

相关例子

学习如何使用的是探索CSTR设计空间灵敏度分析仪, 看使用参数抽样(GUI)设计探索

学习如何使用CSTR设计SDO.Optimize.命令,参见使用不确定变量(代码)设计优化

学习如何使用该方法分析设计参数对设计的影响分析命令,参见确定估算的关键参数(代码)

参考文献

[1] 贝奎特,B.W。过程动态:建模,分析和仿真。1 ed。上部马鞍河,新罕布什尔州:Prentice Hall,1998。

关闭模型

bdclose('sdocstr'

相关的话题