В этом примере показано, как настроить sbiofit для выполнения гибридной оптимизации путем первого запуска глобального решателя particleswarmс последующей другой функцией минимизации, fmincon.
Загрузите образцы данных для подгонки. Данные хранятся в виде таблицы с переменными ID, Time, CentralConc и DepartingConc. Эти синтетические данные представляют временной ход концентраций в плазме, измеренных в восемь различных моментов времени как для центрального, так и для периферического отделения после инфузионной дозы для трех индивидуумов. Количество дозы составляет 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 для просмотра прямой обратной связи о состоянии фитинга. Первая строка графиков - это графики измерения качества для глобального решателя. Графики второй строки предназначены для гибридной функции. Дополнительные сведения см. в разделе График хода выполнения.
unpooledFit = sbiofit(model,gData,responseMap,estimatedParam,dose,globalMethod,... options,'Pooled',false,'ProgressPlot',true);

plot(unpooledFit);
