Локальные проекты

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

Создайте проект и план тестирования

Скорость (N) и топливо (F) является глобальными входными параметрами. Инжекция (специальная инструкция), топливное давление (fuelpress), турбо положение стойки изменяемой геометрии (grackmea) и рециркуляция выхлопного газа (EGR) является локальными входными параметрами.

project = mbcmodel.CreateProject('DieselMulti');

% Define Inputs for test plan
LocalInputs = mbcmodel.modelinput('Symbol',{'S','P','G','E'},...
    'Name',{'soi','fuelpress','grackmea','egrlift'},...
    'Units',{'deg','MPa','ratio','mm'},...
    'Range',{[-9 3],[60 160],[0.2 0.9],[0.5 5]});
GlobalInputs = mbcmodel.modelinput('Symbol',{'N','F'},...
    'Name',{'measrpm','basefuelmass'},...
    'Units',{'rpm','mg/stroke'},...
    'Range',{[1600 2200],[20 200]});
% create test plan
TP = CreateTestplan( project, {LocalInputs,GlobalInputs} );

Глобальный проект

Сгенерируйте 15 проектов Латинской выборки гиперкуба (LHS) точки для глобальных входных параметров.

globalDesign = TP.CreateDesign(2, 'Type', 'Latin Hypercube Sampling');
% Fuel constraint:  Maximum 200 at 1600 rpm, 175 at 2200 rpm
C = globalDesign.CreateConstraint('Type','1D Table');
% set up the 1D Table constraint
C.InputFactor = 'N';
C.Breakpoints = [1600 2000];
C.TableFactor = 'F';
C.Table = [200 175];
% assign constraint to design
globalDesign.Constraints = C;
% generate a 15 point design
globalDesign = Generate(globalDesign, 15);
% set as best design in test plan
TP.BestDesign{2} = globalDesign;

Создайте локальный проект для каждой глобальной точки

Для каждой глобальной точки настройте пределы для топливного давления и grackmea, и сгенерируйте 30 точек проект LHS.

% create a local design
localDesign = TP.CreateDesign(1,'Type','Latin Hypercube Sampling');
localDesignGenerator = localDesign.Generator;
localDesignGenerator.NumberOfPoints = 30;
DList = mbcdoe.design.empty( 0, 1);
for i = 1:globalDesign.NumberOfPoints;
    GlobalPoint = globalDesign.Points(i,:);
    speed = GlobalPoint(1);
    % fuel pressure limits dependent on speed
    f = (speed-1600)/(2200-1600);
    % note because you use the Limits property to specify the input range
    % you get LHS designs with exactly 30 points.
    localDesignGenerator.Limits(2,:) = (1-f)*[90 120] + f*[110 160];
    % grackmea limits dependent on speed
    localDesignGenerator.Limits(3,:) = (1-f)*[0.2 0.4] + f*[0.6 0.9];

    % set design properties and generate local design
    localDesign.Generator = localDesignGenerator;

    % Make design name which reflects the global point
    localDesign.Name = sprintf('Test %2d (%s=%4.0f,%s=%3.0f)', i,...
        GlobalInputs(1).Symbol,GlobalPoint(1),....
        GlobalInputs(2).Symbol,GlobalPoint(2));

    % Plot Design
    Scatter2D(localDesign);

    DList(i) = localDesign;
end

% assign list of local designs to test plan
TP.Designs{1} = DList;
% List of local designs
localDesigns = TP.Designs{1}
localDesigns = 

  1x14 design array with properties:

    Style
    Type
    NumPoints
    NumInputs
    Name
    Points
    PointTypes
    Inputs
    Generator
    Constraints
    Model