使用sbiofit执行混合优化
这个例子展示了如何配置sbiofit
进行混合优化首先运行全球解决者particleswarm
,其次是另一个最小化函数,fmincon
。
加载数据
加载示例数据符合。数据存储的表变量ID,时间,CentralConc,PeripheralConc。这种合成数据代表了等离子体浓度测量的时间进程在八个不同的时间点对中央和周边隔间后注入剂量3个人。金额100毫克剂量和剂量率是50毫克/小时。
负载(“data10_32R.mat”)gData = groupedData(数据);gData.Properties。VariableUnits = {”,“小时”,毫克/升的,毫克/升的};sbiotrellis (gData“ID”,“时间”,{“CentralConc”,“PeripheralConc”},“标记”,“+”,…“线型”,“没有”);
创建模型
创建一个两舱制模型与注入剂量。
pkmd = PKModelDesign;pkc1 = addCompartment (pkmd,“中央”);pkc1。DosingType =“注入”;pkc1。EliminationType =“linear-clearance”;pkc1。HasResponseVariable = true;pkc2 = addCompartment (pkmd,“外围”);模型=构造(pkmd);configset = getconfigset(模型);configset.CompileOptions。UnitConversion = true;剂量= sbiodose (“剂量”,“TargetName”,“Drug_Central”);剂量。开始时间= 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),…“界限”10 [0]);
为混合优化定义选项
定义的选项为全球解决者和混合解算器。因为参数是有界的,确保你使用兼容的混合函数约束优化,等fmincon
。使用optimset
定义的选项fminsearch
。使用optimoptions
定义的选项fminunc
,patternsearch
,fmincon
。
rng (“默认”);globalMethod =“particleswarm”;选择= optimoptions (globalMethod);hybridMethod =“fmincon”;hybridopts = optimoptions (hybridMethod,“显示”,“没有”);选择= optimoptions(选项,“HybridFcn”,{hybridMethod, hybridopts});
合适的数据
估计模型参数。打开ProgressPlot
看到现场反馈装置的状态。质量块的第一行是衡量全球解决情节。第二行情节的混合函数。有关详细信息,请参见情节进展。
unpooledFit = sbiofit(模型、gData responseMap estimatedParam,剂量,globalMethod,…选项,“池”假的,“ProgressPlot”,真正的);
阴谋的结果
情节(unpooledFit);