www.gusucode.com > mbcdata 工具箱 matlab 源码程序 > mbcdata/@cgoptim/initializeSwitchData.m

    function optim = initializeSwitchData(optim,Type)
%INITIALIZESWITCHDATA initialize optimization with data from point-by-point model
%  optim = initializeSwitchData(optim,Type)
%    Type is 'Model operating points' (default) or 'Unique operating points'.

%  Copyright 2007-2009 The MathWorks, Inc.

if nargin<2
    Type = 'Model operating points';
end

pInputs = [getfreevalues(optim) getfixedvalues(optim)];
Model = info(getPrimaryExpression(optim));
SwitchModel = getSwitchModel(Model);
[OK,loc] = ismember(pInputs,getinputs(SwitchModel));
switchModel =  get(SwitchModel,'model') ;

switch Type
    case 'Model operating points' 
        % Use midpoints + operating point
        data = InitialValues(switchModel);
    case 'Unique operating points'
        DS= OpPointDataset(switchModel);
        data = DS.data;
    otherwise
        error(message('mbc:cgoptim:InvalidState12'))
end

% only use data that is a direct input to model
pInputs = pInputs(OK);
data = data(:,loc(OK));
NRUN = size(data,1);
optim = setNumRuns(optim, NRUN);
for i=1:length(pInputs)
    optim = setinitialvaluedata(optim, pInputs(i), 1:NRUN, data(:,i));
end

end