www.gusucode.com > sloptim工具箱matlab源码程序 > sloptim/sloptobsolete/nlinopt.m

    function nlinopt(Model)
%NLINOPT  Obsolete NCD command for running the optimization algorithm.
%
%   NLINOPT(MODEL) starts a response optimization for the Simulink
%   model with name MODEL.  A valid ncdStruct variable must exist
%   in the workspace.
%
%   See also SROPROJECT, OPTIMIZE.

%   Author(s): A. Potvin, 12-1-92
%              M. Yeddanapudi, Sept. 24, '96
%   Copyright 1990-2012 The MathWorks, Inc.

% RE: Assumes old NCD blocks have already been upgraded

% Is there a valid ncdStruct variable in the workspace?
try 
   ncdStruct = evalin('base','ncdStruct');
catch E
   ctrlMsgUtils.error('Sloptim:sloptim:errNoNCDStruct')
end

% Is the model open?
LoadFlag = isempty( find_system('Name', Model, 'Type', 'block_diagram') );
if LoadFlag
   try
      load_system(Model)
   catch E
      throw(E)
   end
end

% Look for NCD blocks
NCDBlocks = find_system(Model,'MaskType','NCD Outport');
if ~isempty(NCDBlocks)
   ctrlMsgUtils.error('Sloptim:sloptim:errRunNCDUPDATE')
end

% Load optimization settings
if isa(ncdStruct,'struct')
   % Construct new project for Simulink model
   Proj = srogui.SimProjectForm;
   Proj.Name = Model;
   % Initialize project with one constraint per block in MODEL
   Proj.init(Model)
   % Read data from NCD struct
   Proj.loadNCDStruct(ncdStruct)
elseif isa(ncdStruct,'srogui.SimProjectForm')
   % Data already reformatted 
   Proj = ncdStruct;
else
   ctrlMsgUtils.error('Sloptim:sloptim:errInvalidNCDStruct')
end

% Evaluate form
RunProj = evalForm(Proj);

% Start optimization
try
   optimize(RunProj)
catch E
   throw(E)
end

% Clean up
if LoadFlag
   close_system(Model,0);
end