www.gusucode.com > mbcdata 工具箱 matlab 源码程序 > mbcdata/@cgoptimoutput/private/pEvaluateItems.m

    function data = pEvaluateItems(obj, type, indata, runIdx)
%PEVALUATEITEMS Evaluate optimization items
%

% Copyright 2005 The MathWorks, Inc.

% If empty input matrix specified, then just return
if isempty(indata)
    data = [];
    return
end

% Get number of items
switch type
    case 'objectives'
        [unused, nO] = numObjectives(obj.optimRunner);
    case 'constraints'
        [unused, nO] = numConstraints(obj.optimRunner);
end
        
% Initialise return matrix
data = zeros(size(indata, 1), nO, size(indata, 3));

% Evaluate required items
for i = 1:length(runIdx)
    indatainds = runIdx==runIdx(i);
    thisIndata = indata(indatainds, :, :);
    if size(thisIndata, 3) > 1 
        % Assumes that for 3-d input data, the size of the first dimension
        % will be NRUNS, with one run per row.
        IS3D = true;
        thisIndata = permute(thisIndata, [3 2 1]);
    else
        IS3D = false;
    end
    obj.optimRunner = nextRun(obj.optimRunner);
    switch type
        case 'objectives'
            thisdata = evaluateObjective(obj.optimRunner, thisIndata);
        case 'constraints'
            thisdata = evaluateConstraint(obj.optimRunner, thisIndata);
    end
    if IS3D
        data(indatainds, :, :) = permute(thisdata, [3 2 1]);
    else
        data(indatainds, :) = thisdata;
    end
end