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

    function [pTradeOff,pTab2TradeOff,pFill] = getTradeOffs(obj,cgp,pTabs)
%GETTRADEOFFS get dependent tradeoffs
%
% [pTradeOff,pTab2TradeOff,pFill] = getTradeOffs(obj,cgp,pTabs)
% A tradeoff is dependent on this fill action if a table being filled by
% the optimization results belongs to a tradeoff. 
%  Inputs
%   obj:    cgoptimtablefiller object
%   cgp:    pointer to CAGE project
%   pTabs:  array of pointer to tables. Default is tables in cgoptimtablefiller
%  Outputs
%   pTradeOffs:     list of dependent tradeoffs for all tables 
%   pTab2TradeOff:  cell array containing tradeoff dependencies for each
%                   table
%   pFill:          fill factors from tradeoffs. If a table is used by more
%                   than one tradeoff pFill is set to null if the tradeoffs
%                   have different fill factors.

%   Copyright 2009 The MathWorks, Inc. and Ford Global Technologies,Inc.

if nargin<3
    pTabs = getTables(obj);
end
A = cgp.getConnections;
pTab2TradeOff = cell(1,length(pTabs));
pFill = mbcpointer(1,length(pTabs));
for i=1:length(pTabs)
    [OK,loc]= ismember(pTabs(i),A.pData);
    ind = getUsers(A,loc);
    % find dependent trade offs
    IsDptTradeOff = strcmp('Tradeoff',A.Type(ind));
    LocTO = ind(IsDptTradeOff);
    pTO = A.pNode(LocTO);
    if ~isempty(pTO)
        pFill(i) = getFillExpression(pTO(1).info,pTabs(i));
        for j = 2:length(pTO)
            % do all tradeoffs have the same fill factor
            pFillOtherTO = getFillExpression(pTO(j).info,pTabs(i));
            if pFillOtherTO~=pFill(i)
                pFill(i) = xregpointer;
            end
        end
    end
    pTab2TradeOff{i} = pTO;
end

 pTradeOff = unique( [pTab2TradeOff{:}] );