Оптимальные проекты

Этот пример показывает, как создать оптимальный проект для полиномиальной модели с помощью интерфейса командной строки Model-Based Calibration Toolbox™.

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

Вам нужна модель, чтобы создать оптимальный проект.

inputs = mbcmodel.modelinput(...
    'Symbol', {'N','L','A'},...
    'Name',   {'n','load','afr'},...
    'Range',  {[1000 5000],[0.2 0.65],[10.9 14.65]});

model = mbcmodel.CreateModel( 'Polynomial', inputs );
model.Properties.Order = [2 2 2];

Создайте проект V-optimal

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

optimalDesign = CreateDesign( model,...
    'Type', 'V-optimal',...
    'Name', 'Optimal Design' );

Сгенерируйте проект

Создайте CandidateSet, чтобы использовать.

CandidateSet = optimalDesign.CreateCandidateSet( 'Type', 'Grid' );
CandidateSet.NumberOfLevels = [21 21 21];
% Pass in Generator properties to Generate
optimalDesign = Generate( optimalDesign,...
    'NumberOfPoints', 30,...
    'CandidateSet', CandidateSet,...
    'MaxIterations', 200,...
    'NoImprovement', 50 );

Альтернативный способ сгенерировать проект

Вместо передающих настроек генератора к Generate можно изменить генератор проекта. Эти два метода эквивалентны, потому что присвоение генератора назад к проекту вызывает вызов Generate.

anotherOptimalDesign = CreateDesign( model, 'Type', 'V-optimal', 'Name', 'Another Optimal Design' );
optimalGenerator = anotherOptimalDesign.Generator;
optimalGenerator.NumberOfPoints = 30;
optimalGenerator.CandidateSet.Type = 'Grid';
optimalGenerator.CandidateSet.NumberOfLevels = [21 21 21];
optimalGenerator.MaxIterations = 200;
optimalGenerator.NoImprovement = 50;

Установка Генератора заставляет Generate быть названным.

anotherOptimalDesign.Generator = optimalGenerator;

Оптимальные критерии

criteria = OptimalCriteria( optimalDesign );
fprintf( 'Optimality Criteria for "%s":\nV = %.3f\nD = %.3f\nA = %.3f\nG = %.3f\n', optimalDesign.Name, criteria );
Optimality Criteria for "Optimal Design":
V = 0.181
D = 2.492
A = 1.050
G = 0.552

Попарные графики проекта

Постройте каждый вход против других.

subplot(2,2,1);
Scatter2D( optimalDesign, 1, 2 );

subplot(2,2,3);
Scatter2D( optimalDesign, 1, 3 );

subplot(2,2,4);
Scatter2D( optimalDesign, 2, 3 );