使用sbiofit执行混合优化
本示例展示如何配置sbiofit
首先运行全局求解器来执行混合优化particleswarm
,然后是另一个最小化函数,fmincon
.
加载数据
加载样本数据以适应。数据存储为带有变量的表ID,时间,CentralConc,PeripheralConc.这一合成数据代表了三个人在输注剂量后,在中央和外周室的八个不同时间点测量的血浆浓度的时间过程。剂量为100毫克,剂量率为50毫克/小时。
负载(“data10_32R.mat”) gData = groupedData(data);gData.Properties.VariableUnits = {”,“小时”,毫克/升的,毫克/升的};sbiotrellis (gData“ID”,“时间”, {“CentralConc”,“PeripheralConc”},“标记”,“+”,...“线型”,“没有”);
创建模型
按注射剂量建立一个两室模型。
pkmd = PKModelDesign;pkc1 = add隔间(pkmd,“中央”);pkc1。DosingType =“注入”;pkc1。EliminationType =“linear-clearance”;pkc1。HasResponseVariable = true;pkc2 = add隔间(pkmd,“外围”);Model = construct(pkmd);Configset = getconfigset(模型);configset.CompileOptions.UnitConversion = true;剂量= sbiodose(“剂量”,“TargetName”,“Drug_Central”);剂量。StartTime = 0;剂量。金额= 100;剂量。费率= 50;剂量。AmountUnits =毫克的;剂量。时间Units =“小时”;剂量。RateUnits =“毫克/小时”;responseMap = {'Drug_Central = CentralConc','Drug_Peripheral = PeripheralConc'};
定义要估计的参数
使用estimatedInfo
对象来定义估计的参数。
paramsToEstimate = {“日志(中央)”,的日志(外围),“12”,“Cl_Central”};estimatedParam = estimatedInfo(paramsToEstimate,“InitialValue”,[1 1 1 1 1],...“界限”10 [0]);
定义混合优化的选项
定义全局求解器和混合求解器的选项。因为参数是有界的,所以要确保使用兼容的混合函数进行有约束的优化,例如fmincon
.使用optimset
定义的选项fminsearch
.使用optimoptions
定义的选项fminunc
,patternsearch
,fmincon
.
rng (“默认”);globalMethod =“particleswarm”;options = optimoptions(globalMethod);hybridMethod =“fmincon”;hybridopts = optimoptions(混合方法,“显示”,“没有”);选项= optimoptions(选项,“HybridFcn”, {hybridMethod, hybridopts});
合适的数据
估计模型参数。打开ProgressPlot
查看现场对装配状态的反馈。第一行图是全局求解器的质量度量图。第二行图是用于混合函数的。详细信息请参见情节进展.
unpooledFit = sbiofit(模型,gData,responseMap,estimatedParam,剂量,globalMethod,...选项,“池”假的,“ProgressPlot”,真正的);
阴谋的结果
情节(unpooledFit);