www.gusucode.com > mbcdata 工具箱 matlab 源码程序 > mbcdata/@cgoptim/getinitialvaluedata.m
function [data, pVal] = getinitialvaluedata(optim, pVal, RunIdx) %GETINITIALVALUEDATA A short description of the function % % [DATA, PVAL] = GETINITIALVALUEDATA(OPTIM) returns a matrix containing % the initial free values and the fixed values for all of the variables % that are used in the optimization. % % [DATA, PVAL] = GETINITIALVALUEDATA(OPTIM, PVAL) specifies the inports % that initial data is required for. % % [DATA, PVAL] = GETINITIALVALUEDATA(OPTIM, PVAL, RUNIDX) specifies the % runs that the initial data is required for. % Copyright 2005-2006 The MathWorks, Inc. and Ford Global Technologies, Inc. if nargin<2 % Get data for all values ObjInputs = mbccellarrayeval(getObjectiveFunc(optim), @getInputs); ConInputs = mbccellarrayeval(getEnabledConstraints(optim), @getInputs); pVal = unique([optim.values, ObjInputs{:}, ConInputs{:}]); end if nargin<3 RunIdx = 1:optim.NumberOfRuns; end data = cell(size(pVal)); % Get all inports that data is saved for pAvailDataVal = [getfreevalues(optim), getfixedvalues(optim)]; isStored = ismember(pVal, pAvailDataVal); if ~all(isStored) % Also go direct to store for variables that do not depend on the known % stored data [indep, pLinks] = cgisindependentvars(pVal(~isStored), pAvailDataVal); isStored(~isStored) = indep; if ~all(isStored) % Take other values by setting known data into variables and % getting the values for n = find(~indep) linkdata = pGetInputData(optim, pLinks(n), RunIdx); pLinks(n).info = pLinks(n).setvalue(linkdata(:)); data{n} = reshape(pVal(n).getdata, size(linkdata)); end end end % Take available values directly from the stores data(isStored) = pGetInputData(optim, pVal(isStored), RunIdx);