exponenta event banner

Выполнение гибридной оптимизации с использованием sbiofit

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

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 для просмотра прямой обратной связи о состоянии фитинга. Первая строка графиков - это графики измерения качества для глобального решателя. Графики второй строки предназначены для гибридной функции. Дополнительные сведения см. в разделе График хода выполнения.

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.

См. также

Связанные темы