www.gusucode.com > mbcmodels 工具箱 matlab 源码程序 > mbcmodels/@xregoptmgr/omnbi.m
function [om, OK] = omnbi(om,Context) % omNBI. Create an options manager for NBI, a Multi-Objective Genetic algorithm. % Copyright 2000-2010 The MathWorks, Inc. and Ford Global Technologies, Inc. %[om, OK] = omNBI % make a structure with all the necessary fields to be an optmgr % adjust some of those fields om.name = 'Normal Boundary Intersection'; om.RunFcn = @i_runnbi; %make an optmgr from it om = AddOption(om,'NumberOfPoints',10,{'int',[2 Inf]}, 'Tradeoff points per objective pair'); om = AddOption(om,'ShadowOptions',omshadow(xregoptmgr,Context),'xregoptmgr', 'Shadow minima options'); om = AddOption(om,'NBISubproblemOptions',omnbisubproblem(xregoptmgr,Context),'xregoptmgr', 'NBI subproblem options'); OK = 1; function [cos,Fmat,OK,Xmat,OUTPUT] = i_runnbi(cos,omNBI,x0,varargin) OK=1; NBIoptions = om2options(omNBI); [LB,UB,A,C,nlconfun]= getConstraints(omNBI); NumberOfPoints = get(omNBI,'NumberOfPoints'); NumberOfObjectives = get(cos,'NumberOfObjectives'); % call main [Xmat,Fmat,~,OUTPUT] = cgnbi(omNBI.costFcn,x0,NumberOfObjectives, NumberOfPoints,A,C,[], [], LB, UB, nlconfun, NBIoptions,cos, varargin{:}); function options = om2options(NBIom) % take an NBI om and return an NBI options structure ShadowOm = get(NBIom, 'ShadowOptions'); NBISubproblemOm = get(NBIom, 'NBISubproblemOptions'); NBIoptions = cgnbi('defaults'); ShadowOptions = NBIoptions.ShadowOptions; NBISubproblemOptions = NBIoptions.NBISubproblemOptions; ShadowOptions= optimset(ShadowOptions, ... 'Display', get(ShadowOm ,'Display'),... 'GradObj',get(ShadowOm ,'GradObj'),... 'GradConstr',get(ShadowOm ,'GradConstr'),... 'MaxFunEvals',get(ShadowOm ,'MaxFunEvals'),... 'MaxIter',get(ShadowOm ,'MaxIter'),... 'TolFun', get(ShadowOm ,'TolFun'),... 'TolX', get(ShadowOm ,'TolX'),... 'TolCon', get(ShadowOm ,'TolCon')); NBISubproblemOptions= optimset(NBISubproblemOptions, ... 'Display', get(NBISubproblemOm ,'Display'),... 'GradObj',get(NBISubproblemOm ,'GradObj'),... 'GradConstr',get(NBISubproblemOm ,'GradConstr'),... 'MaxFunEvals',get(NBISubproblemOm ,'MaxFunEvals'),... 'MaxIter',get(NBISubproblemOm ,'MaxIter'),... 'TolFun', get(NBISubproblemOm ,'TolFun'),... 'TolX', get(NBISubproblemOm ,'TolX'),... 'TolCon', get(NBISubproblemOm ,'TolCon')); options = cgnbioptimset(ShadowOptions, NBISubproblemOptions);