Class Undefined Function or Variable
    4 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 Particle Swarm 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!
