I've coded a PSO as below:
classdef particle %PARTICLES Summary of this class goes here
% Detailed explanation goes here
properties % Parameters
VarMin = -10; VarMax = 10; VarSize = 2; % Template
position = []; velocity = []; cost = []; bestPosition = []; bestCost = []; % Initialize Global Best
GlobalBest = inf; end methods function [ obj ] = particle( varargin ) function circle = CostFunction(x,y) circle = (x.^2)+(y.^2); end % Generate Random Solution
obj.position = unifrnd(obj.VarMin, obj.VarMax, obj.VarSize); % Initialize Velocity
obj.velocity = zeros(obj.VarSize); % Evaluation
obj.cost = CostFunction(obj.position,obj.position); % Update the Personal Best
obj.bestPosition = obj.position; obj.bestCost = obj.cost; % Update Global Best
if obj.bestCost < obj.GlobalBest.Cost obj.GlobalBest = obj.GlobalBest.best; end end endend
and have an error:
Struct contents reference from a non-struct array object.Error in particle (line 51) if obj.bestCost < obj.GlobalBest.Cost
Best Answer