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