В этом примере показано, как сконфигурировать sbiofit выполнить гибридную оптимизацию первым запуском глобального решателя particleswarm, далее следует другая функция минимизации, fmincon.
Загрузите выборочные данные в соответствии. Данные хранятся как таблица с идентификаторами переменных, Time, 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');

Создайте модель с двумя отсеками с капельным внутривенным введением.
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 для просмотра live обратной связи о состоянии подбора кривой. Первая строка графиков являются графиками измерения качества для глобального решателя. Графики второй строки предназначены для гибридной функции. Для получения дополнительной информации смотрите График прогресса.
unpooledFit = sbiofit(model,gData,responseMap,estimatedParam,dose,globalMethod,... options,'Pooled',false,'ProgressPlot',true);

plot(unpooledFit);
