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

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

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

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

Создайте модель 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);

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

Постройте результаты

plot(unpooledFit);

Figure contains 4 axes objects. Axes object 1 is empty. Axes object 2 with title 3 contains 4 objects of type line. Axes object 3 with title 2 contains 4 objects of type line. Axes object 4 with title 1 contains 4 objects of type line.

Смотрите также

Похожие темы