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{:}] );