This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

Local Designs

This example shows how to use the command-line functionality to generate local designs at each global operating point. This particular example shows how you can produce local maps for a diesel engine calibration.

Create Project and Test Plan

Speed (N) and fuel (F) are global inputs. Injection (soi), fuel pressure (fuelpress), variable geometry turbo rack position (grackmea) and exhaust gas recirculation (EGR) are local inputs.

project = mbcmodel.CreateProject('DieselMulti');

% Define Inputs for test plan
LocalInputs = mbcmodel.modelinput('Symbol',{'S','P','G','E'},...
    'Range',{[-9 3],[60 160],[0.2 0.9],[0.5 5]});
GlobalInputs = mbcmodel.modelinput('Symbol',{'N','F'},...
    'Range',{[1600 2200],[20 200]});
% create test plan
TP = CreateTestplan( project, {LocalInputs,GlobalInputs} );

Global Design

Generate a 15 point Latin Hypercube Sampling (LHS) design for the global inputs.

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;

Create a Local Design for Each Global Point

For each global point, adjust limits for fuel pressure and grackmea, and generate a 30 point LHS design.

% create a local design
localDesign = TP.CreateDesign(1,'Type','Latin Hypercube Sampling');
localDesignGenerator = localDesign.Generator;
localDesignGenerator.NumberOfPoints = 30;
DList = 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,...

    % Plot Design

    DList(i) = localDesign;

% 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:


Was this topic helpful?