⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gposynomial.m

📁 HERE IS A GOOD PSO TOOL BOX
💻 M
字号:
function obj = gposynomial(varargin)% GPOSYNOMIAL is a generalized posynomial class constructor.%%	X = GPOSYNOMIAL creates an empty generalized posynomial object X.%%	Generalized posynomials can be formed from positive constants,%	GP variables, monomials, posynomials, and other generalized %	posynomials using addition, multiplication, positive powers, %	and maximum (using MAX function).%	You can also divide a generalized posynomial by a monomial.%%	Generalized posynomial is treated as a tree with the operation%	at the root node and arguments as the tree leaves.%superiorto('gpvar', 'monomial', 'posynomial');% create an empty generalized posynomialif nargin == 0    obj.op     = [];  obj.args   = {};  obj.gpvars = {};  obj = class(obj,'gposynomial');  returnendif nargin == 1 % one argument   % copy to a new object if genposynomial  if( isa(varargin{1},'gposynomial') )    obj = varargin{1};  % cast posynomial to a genposynomial  elseif( isa(varargin{1},'posynomial') )     obj.op     = 'obj';              % gposy's operation (obj, +, *, ^, max)    obj.args   = {varargin{1}};      % gposy's arguments    obj.gpvars = varargin{1}.gpvars; % gposy's gpvars    obj = class(obj,'gposynomial');  % cast monomial to a genposynomial  elseif( isa(varargin{1},'monomial') )     obj.op     = 'obj';              % gposy's operation (obj, +, *, ^, max)    obj.args   = {varargin{1}};      % gposy's arguments    obj.gpvars = varargin{1}.gpvars; % gposy's gpvars    obj = class(obj,'gposynomial');  % under obj flag can only have a monomial, posymonial, or generalized posynomial  elseif( isa(varargin{1},'gpvar') )     % first cast to monomial    obj = gposynomial(monomial(varargin{1}));  elseif( isnumeric(varargin{1}) )    % first cast to monomial    obj = gposynomial(monomial(varargin{1}));  else    error('Uncompatible object passed to the generalized posynomial constructor.');  end  returnendif nargin > 1  % create gposynomial out of input arguments  obj.op   = varargin{1};     % gposy's operation (obj, +, *, ^, max)  obj.args = varargin{2:end}; % gposy's arguments  obj.gpvars = {};            % gposy's gpvars    for k = 1:length(obj.args)    % the input list (now obj.args) has to be a list of scalar gp objects    if( length(obj.args{k}) > 1 )      error(['All GP objects have to be scalars when creating a generalized posynomial' ...            char(10) 'using an input list of several GP objects.']);    end    if isa(obj.args{k}, 'gpvar')      obj.gpvars = union({obj.args{k}.label}, obj.gpvars);    elseif isa(obj.args{k}, 'monomial')      obj.gpvars = union(obj.args{k}.gpvars, obj.gpvars);    elseif isa(obj.args{k}, 'posynomial')      obj.gpvars = union(obj.args{k}.gpvars, obj.gpvars);    elseif isa(obj.args{k}, 'gposynomial')      obj.gpvars = union(obj.args{k}.gpvars, obj.gpvars);    end  end  obj = class(obj,'gposynomial');end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -