Borrar filtros
Borrar filtros

PSO (particle swarm optimization) Error Coding

1 visualización (últimos 30 días)
Ali Ali
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

Respuesta aceptada

Walter Roberson
Walter Roberson el 18 de Feb. de 2018
You have
GlobalBest = inf;
so GlobalBest is numeric, not a struct.
  6 comentarios
Walter Roberson
Walter Roberson el 20 de Feb. de 2018
I am not sure that you need to make any more changes.
Ali Ali
Ali Ali el 20 de Feb. de 2018
I appreciate this.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Particle Swarm en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by