Class Undefined Function or Variable
5 次查看(过去 30 天)
显示 更早的评论
in the class shown .. I got the errors as below:
1.
"Invalid default value for property 'VarSize' in class 'particle':
Undefined function or variable 'nVar'."
2.
"particle Undefined function or variable 'VarMin'.
Error in particle (line 45)
obj.position = unifrnd(VarMin, VarMax, VarSize); "
3.
"particle
Undefined function or variable 'CostFunction'.
Error in particle (line 51)
obj.cost = CostFunction(obj.position); "
code is:
classdef particle
%PARTICLES Summary of this class goes here
% Detailed explanation goes here
properties
CostFunction = @(x) Sphere(x); % Cost Function
nVar = 2; % Number of Unknown (Decision) Variables
VarSize = nVar; % Matrix Size of Decision Variables
VarMin = -10; % Lower Bound of Decision Variables
VarMax = 10; % Upper Bound of Decision Variables
MaxIt = 100; % Maximum Number of Iterations
nPop = 50; % Population Size (Swarm Size)
w = 1; % Inertia Coefficient
c1 = 2; % Personal Acceleration Coefficient
c2 = 2; % Social (Global) Acceleration Coefficient
position = [];
velocity = [];
cost = [];
bestPosition = [];
bestCost = [];
end
methods
function z = sphere(x)
z = sum(x.^2);
end
function [ obj ] = particle( varargin )
% Generate Random Solution
obj.position = unifrnd(VarMin, VarMax, VarSize);
% Initialize Velocity
obj.velocity = zeros([1 2]);
% Evaluation
obj.cost = CostFunction(obj.position);
% Update the Personal Best
obj.bestPosition = obj.position;
obj.bestCost = obj.cost;
end
end
end
0 个评论
采纳的回答
Walter Roberson
2018-2-18
You need to change
obj.position = unifrnd(VarMin, VarMax, VarSize);
to
obj.position = unifrnd(obj.VarMin, obj.VarMax, obj.VarSize);
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Get Started with Optimization Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!