Выполните гибридную оптимизацию, используя sbiofit

В этом примере показано, как сконфигурировать 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');

Figure contains 4 axes. Axes 1 with title ID 1 contains 2 objects of type line. These objects represent CentralConc, PeripheralConc. Axes 2 with title ID 3 contains 2 objects of type line. Axes 3 with title ID 2 contains 2 objects of type line. Axes 4 is empty.

Создайте модель

Создайте модель с двумя отсеками с капельным внутривенным введением.

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);

Figure Progress Plot for particleswarm with hybrid function fmincon contains 5 axes and other objects of type uicontrol, uipanel. Axes 1 with title Termination Conditions for particleswarm contains an object of type text. These objects represent Failed, Converged. Axes 2 with title Final Estimated Parameter Values contains an object of type histogram. Axes 3 with title Final Estimated Parameter Values contains an object of type histogram. Axes 4 with title Final Estimated Parameter Values contains an object of type histogram. Axes 5 with title Final Estimated Parameter Values contains an object of type histogram.

Графическое изображение результатов

plot(unpooledFit);

Figure contains 4 axes. Axes 1 with title Group 1 contains 4 objects of type line. These objects represent OBS1 (CentralConc), OBS2 (PeripheralConc), PRED1 (Central.Drug_Central), PRED2 (Peripheral.Drug_Peripheral). Axes 2 with title Group 3 contains 4 objects of type line. Axes 3 with title Group 2 contains 4 objects of type line. Axes 4 is empty.

См. также

Похожие темы