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);