设计探索使用参数抽样(代码)
这个例子展示了如何样本和探索设计空间。你探索不断搅拌釜反应器的设计产物浓度变化和生产成本降到最低。设计包括原料的不确定性。
你探索装运箱设计,使用概率分布描述设计参数。你使用分布生成随机抽样的设计空间和执行蒙特卡罗评估设计这些采样点。然后创建情节形象化的设计空间和选择最好的设计。然后,您可以使用最好的设计作为优化设计的初始猜测。
您还可以使用空间和蒙特卡罗抽样设计评价输出分析设计参数对设计的影响;看到识别关键参数估计(代码)。
连续搅拌釜反应器(装运箱)模型
连续搅拌釜反应器(装运箱)是常见的在这个过程中产业。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”);
装运箱设计问题
假设装运箱是圆柱形,冷却剂应用于圆柱的底部。优化装运箱横截面积,装运箱的高度,,以满足以下设计目标:
减少残余浓度的变化,。残留浓度变化影响装运箱的质量的产品。减少变化也提高了装运箱利润。
减少意味着冷却液温度。加热或冷却夹克冷却液温度是昂贵的。冷却剂平均温度提高装运箱利润最小化。
变化的设计必须允许供应饲料的质量浓度,进料温度,。从不同的供应商装运箱是用饲料。饲料的质量不同于供应商,供应商也在每个不同批量供应。
指定设计变量
选择下面的模型参数作为设计变量:
圆柱横截面积
气缸高度
p = sdo.getParameterFromModel (“sdoCSTR”,{“一个”,“h”});
限制范围的横截面积(0.2 - 2)m ^ 2。
(1页)。最小值= 0.2;(1页)。最大= 2;
限制高度范围(0.5 - 3)。
(2页)。最小值= 0.5;(2页)。最大= 3;
样品的设计空间
创建一个参数为设计变量空间。参数空间特征容许参数值和参数值的组合。
pSpace = sdo.ParameterSpace (p);
参数空间使用默认设计变量的均匀分布。上下边界分布将分别设计变量最小和最大值。
使用sdo.sample
函数生成样本参数空间。你使用的样品评估模型,探索设计空间。
rng默认的;%的再现性pSmpl = sdo.sample (pSpace 30);
使用sdo.scatterPlot
命令来可视化参数空间采样。散点图显示了参数分布在对角线次要情节和成对参数组合的对角线次要情节。
图中,sdo.scatterPlot (pSmpl)
指定不确定变量
选择饲料的浓度和进料温度作为不确定的变量。你评估设计使用不同价值观的进料温度和浓度。
标点= 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));
进料浓度与饲料温度呈负相关。将这些信息添加到参数空间。
uSpace。RankCorrelation = [1 -0.6;-0.6 - 1];
等级相关矩阵的行和列的每个参数(i, j)条目指定i和j参数之间的相关性。
样本参数空间。散点图显示浓度和温度之间的关系。
冷色系色光变化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]),:)
uSmpl x2 = 4表FeedCon0 FeedTemp0 ________ _____ 9.4555 303.58 11.175 288.13 11.293 290.73 8.9308 294.16
创建评价函数
创建一个函数评估设计对于一个给定的样本点在设计空间。设计评估对它最小化剩余浓度和平均冷却液温度的变化。
指定设计要求
评估一个点在设计空间需要信号测井模型。记录信号是用来评估设计要求。
日志以下信号:
装运箱浓度,可以在第二个输出端口
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
。
类型sdoCSTR_design
功能设计= sdoCSTR_design (p,模拟器、标点、smplUnc) % sdoCSTR_design % % sdoCSTR_design函数是用来评估一个装运箱的设计。% % | p |装运箱的输入参数是向量维度。% % | |模拟器的输入参数是一个sdo。万博1manbetxSimulinkTest对象用于%模拟| sdoCSTR |模型和测井模拟信号。% % |标点|输入参数是一个向量的参数指定装运箱%输入进料浓度和进料温度。的| smplUnc |论点是%表不同进料浓度和温度的值。% % |设计|返回包含的信息设计的论证% | sdo的评价,可以使用。优化| %设计优化函数。% %也看到sdo。优化,sdoExampleCostFunction % % 2012 - 2013版权MathWorks, Inc . % % % %为每个模型模拟和评估价值| smplUnc |,配置和模拟模型。使用%记录的浓度和冷却剂的信号来计算设计成本。 % costConc = 0; costCoolant = 0; for ct=1:size(smplUnc,1) %Set the feed concentration and temperature values 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); %Compute Concentration cost based on the standard deviation of the %concentration from a nominal value. Sig = find(simLog,'Concentration'); costConc = costConc+10*std(Sig.Values-2); %Compute coolant cost based on the mean deviation from room %temperature. Sig = find(simLog,'Coolant'); costCoolant = costCoolant+abs(mean(Sig.Values - 294))/30; end %% Return Total Cost % % Compute the total cost as a sum of the concentration and coolant costs. % design.F = costConc + costCoolant; %% % Add the individual cost terms to the return argument. These are not used % by the optimizer, but included for convenience. design.costConc = costConc; design.costCoolant = costCoolant; end
评估
使用sdo.evaluate
命令来评估模型的样本设计点。
y = sdo.evaluate (evalDesign p pSmpl);
模型评估30样品。
视图使用散点图的结果评价。每个设计变量的散点图显示两两块(A, h)和设计成本。故事情节包括总成本,F
以及冷却液浓度和成本,costCoolant
和costConc
分别。
sdo.scatterPlot (pSmpl y);
情节表明更大的横截面区域导致较低的总成本。但是很难告诉高度如何影响总成本。
创建一个网格图显示的总成本函数和h。
Ftotal = scatteredInterpolant (pSmpl.A pSmpl.h y.F);xR = linspace (min (pSmpl.A), max (pSmpl.A)、60);年= linspace (min (pSmpl.h), max (pSmpl.h)、60);[xx, yy] = meshgrid (xR,年);zz = Ftotal (xx, yy);网格(xx, yy, zz)视图(56岁,30)标题(“总成本函数和h”)zlabel (“Ftotal”)包含(p (1) . name), ylabel (p (2) . name);
情节显示高值的A股和h导致更低的成本。最好的设计采样空间对应于设计最低的成本价值。
[~,idx] = min (y.F);pb = [y (idx:), pSmpl (idx:)]
pb = 1 x5表F costConc costCoolant ah _____ ________ ___________交2.106 1.5505 0.55552 1.9271 2.3867
细化设计空间
总成本曲面图表明,低成本设计的范围(1.5 - 2)和h(2 3)范围。修改的参数空间分布和h和重新取样设计空间关注这一地区。
pSpace = setDistribution (pSpace,“一个”makedist (“统一”,1.5,2));pSpace = setDistribution (pSpace,“h”makedist (“统一”、2、3);pSmpl = sdo.sample (pSpace 30);
添加pb
发现早期的新样品,以便它是精致的设计空间。
pSmpl = [pSmpl; pb (:, 4:5)];sdo.scatterPlot (pSmpl)
评估使用精炼的设计空间
y = sdo.evaluate (evalDesign p pSmpl);
模型评估在31日样本。
为这部分创建一个网格图的设计空间。附近的表面显示,更好的设计一个= 1.9,h = 2.1点。
Ftotal = scatteredInterpolant (pSmpl.A pSmpl.h y.F);xR = linspace (min (pSmpl.A), max (pSmpl.A)、60);年= linspace (min (pSmpl.h), max (pSmpl.h)、60);[xx, yy] = meshgrid (xR,年);zz = Ftotal (xx, yy);网格(xx, yy, zz)视图(56岁,30)标题(“总成本函数和h”)zlabel (“Ftotal”)包含(p (1) . name), ylabel (p (2) . name);
找到最好的设计从新的设计空间,与最好的设计点早发现。
[~,idx] = min (y.F);pb =[铅;[y (idx:), pSmpl (idx:)]]
pb = 2 x5表F costConc costCoolant ah ______月______ ___________交2.106 1.5505 0.55552 1.9271 2.3867 1.9754 1.4824 0.49295 1.9695 2.1174
最好的设计精致设计空间比设计早发现。这表明可能有更好的设计在同一地区,需要进一步细化设计空间。或者你可以使用最好的设计点作为优化的初始猜测。
相关的例子
学会如何探索装运箱设计空间使用灵敏度分析仪,请参阅设计探索使用参数抽样(GUI)。
学习如何优化装运箱设计使用sdo.optimize
命令,看到优化设计和不确定的变量(代码)。
学习如何分析设计参数的影响在设计使用sdo.analyze
命令,看到识别关键参数估计(代码)
引用
[1]Bequette B.W.过程动力学:建模、分析和仿真。第1版。上台北:普伦蒂斯霍尔,1998年。
关闭模式
bdclose (“sdoCSTR”)