В этом примере показано, как сконфигурировать sbiofit выполнять гибридную оптимизацию первым выполнением глобального решателя particleswarm, сопровождаемый другой функцией минимизации, fmincon.
Загрузите выборочные данные, чтобы соответствовать. Данные хранятся как таблица с переменными ID, Время, CentralConc и PeripheralConc. Эти синтетические данные представляют ход времени плазменных концентраций, измеренных в восьми различных моментах времени и для центральных и для периферийных отсеков после капельного внутривенного введения для трех индивидуумов. Суммарная доза составляет 100 миллиграммов, и мощность дозы составляет 50 миллиграммов/час.
load('data10_32R.mat') gData = groupedData(data); gData.Properties.VariableUnits = {'','hour','milligram/liter','milligram/liter'}; sbiotrellis(gData,'ID','Time',{'CentralConc','PeripheralConc'},'Marker','+',... 'LineStyle','none');

Создайте модель 2D отсека с капельным внутривенным введением.
pkmd = PKModelDesign; pkc1 = addCompartment(pkmd,'Central'); pkc1.DosingType = 'Infusion'; pkc1.EliminationType = 'linear-clearance'; pkc1.HasResponseVariable = true; pkc2 = addCompartment(pkmd,'Peripheral'); model = construct(pkmd); configset = getconfigset(model); configset.CompileOptions.UnitConversion = true; dose = sbiodose('dose','TargetName','Drug_Central'); dose.StartTime = 0; dose.Amount = 100; dose.Rate = 50; dose.AmountUnits = 'milligram'; dose.TimeUnits = 'hour'; dose.RateUnits = 'milligram/hour'; responseMap = {'Drug_Central = CentralConc','Drug_Peripheral = PeripheralConc'};
Используйте estimatedInfo объект задать предполагаемые параметры.
paramsToEstimate = {'log(Central)','log(Peripheral)','Q12','Cl_Central'};
estimatedParam = estimatedInfo(paramsToEstimate,'InitialValue',[1 1 1 1],...
'Bounds',[0 10]);Задайте опции для глобального решателя и гибридного решателя. Поскольку параметры ограничены, убедитесь, что вы используете совместимую гибридную функцию для ограниченной оптимизации, такой как fmincon. Используйте optimset задавать опции для fminsearch. Используйте optimoptions задавать опции для fminunc, patternsearch, и fmincon.
rng('default'); globalMethod = 'particleswarm'; options = optimoptions(globalMethod); hybridMethod = 'fmincon'; hybridopts = optimoptions(hybridMethod,'Display','none'); options = optimoptions(options,'HybridFcn',{hybridMethod,hybridopts});
Оцените параметры модели. Включите ProgressPlot видеть живую обратную связь на состоянии подбора кривой. Первая строка графиков является качественными графиками меры для глобального решателя. Вторые графики строки для гибридной функции. Для получения дополнительной информации см. График Прогресса.
unpooledFit = sbiofit(model,gData,responseMap,estimatedParam,dose,globalMethod,... options,'Pooled',false,'ProgressPlot',true);

plot(unpooledFit);
