www.gusucode.com > sloptim工具箱matlab源码程序 > sloptim/sloptim/@sroengine/@Optimization/schema.m

    function schema
% Generic Response Optimization project (runtime data-oriented object).

%   Copyright 1986-2015 The MathWorks, Inc.

% Register class 
c = schema.class(findpackage('sroengine'),'Optimization');
c.Description = 'Generic numeric Response Optimization problem';

%%%%%%%%%%%%%%%%%%%%%%
%-- Public Properties
%%%%%%%%%%%%%%%%%%%%%%
p = schema.prop(c,'Name','ustring');
p.Description = 'Project name';

p = schema.prop(c,'Parameters','handle vector');  % @modelpack.ParameterSpec vector
p.Description = 'Tuned parameters';

p = schema.prop(c,'OptimStatus','string');
p.Description = 'Optimization status [{idle}|run|stop|error]';
p.SetFunction = @localManageState;
p.FactoryValue = 'idle';
p.AccessFlags.Serialize = 'off';

p = schema.prop(c,'Specs','handle vector');  % @sroengine.Specification vector
p.Description = 'Specifications to conduct as part of design optimization';


%%%%%%%%%%%%%%%%%%%%%%%%%%
%--- Private Properties
%%%%%%%%%%%%%%%%%%%%%%%%%%
p = schema.prop(c,'OptimOptions','MATLAB array'); % @OptimOptions
p.Description = 'Optimizer settings';
p.AccessFlags.PublicGet = 'off';
p.AccessFlags.PublicSet = 'off';

% Version
p = schema.prop(c,'Version','double');
p.FactoryValue = 1.0;
p.AccessFlags.PublicSet = 'off';
p.AccessFlags.PublicGet = 'off';

% Listeners
p = schema.prop(c,'Listeners','mxArray');
p.Description = 'Listeners';
p.AccessFlags.PublicSet = 'off';
p.AccessFlags.PublicGet = 'off';
p.AccessFlags.Serialize = 'off';

%------------------ local functions --------------------

function NewState = localManageState(this,NewState)
% Manages state transitions
switch NewState
   case 'run'
      % Initialization tasks
      if isempty(this.Parameters)
         Parameters = [];
      else
         idxP = get(this.Parameters,'Known');
         if ~iscell(idxP), idxP = {idxP}; end
         Parameters = this.Parameters(cellfun(@(x) ~any(x(:)), idxP));
      end
      for ct=1:length(this.Specs)
         optimSetup(this.Specs(ct),Parameters,this)
      end
      
   case 'idle'
      if any(strcmp(this.OptimStatus,{'run','stop'}))
         % Normal termination tasks
         for ct=1:length(this.Specs)
            optimCleanup(this.Specs(ct))
         end
      end
      
   case 'error'
      % Clean up after error
      ctrlMsgUtils.error('sldo:general:errUnexpected','Optimization engine error.'); %REVISIT what to do here
end