Class Undefined Function or Variable
5 views (last 30 days)
Show older comments
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 Comments
Accepted Answer
Walter Roberson
on 18 Feb 2018
You need to change
obj.position = unifrnd(VarMin, VarMax, VarSize);
to
obj.position = unifrnd(obj.VarMin, obj.VarMax, obj.VarSize);
More Answers (0)
See Also
Categories
Find more on Get Started with Optimization Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!