PSO (particle swarm optimization) Error Coding
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Ali Ali
el 18 de Feb. de 2018
Comentada: Ali Ali
el 20 de Feb. de 2018
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
end
end
and have an error:
Struct contents reference from a non-struct array object.
Error in particle (line 51)
if obj.bestCost < obj.GlobalBest.Cost
0 comentarios
Respuesta aceptada
Walter Roberson
el 18 de Feb. de 2018
You have
GlobalBest = inf;
so GlobalBest is numeric, not a struct.
6 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Particle Swarm en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!