exponenta event banner

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

Этот пример показывает, как сконфигурировать sbiofit, чтобы выполнить гибридную оптимизацию первым выполнением глобального решателя particleswarm, сопровождаемый другой функцией минимизации, fmincon.

Загрузка данных

Загрузите выборочные данные, чтобы соответствовать. Данные хранятся как таблица с переменными ID, Время, CentralConc и PeripheralConc. Эти синтетические данные представляют ход времени плазменных концентраций, измеренных в восьми различных моментах времени и для центральных и для периферийных отсеков после дозы вливания для трех человек.

clear all
load(fullfile(matlabroot,'examples','simbio','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);

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

Похожие темы