PSO (particle swarm optimization) Error Coding
    조회 수: 5 (최근 30일)
  
       이전 댓글 표시
    
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
채택된 답변
  Walter Roberson
      
      
 2018년 2월 18일
        You have
GlobalBest = inf;
so GlobalBest is numeric, not a struct.
댓글 수: 6
추가 답변 (0개)
참고 항목
카테고리
				Help Center 및 File Exchange에서 Particle Swarm에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

