A problem in __init__ of class PSO
phys-chem opened this issue · 0 comments
phys-chem commented
self.X = np.random.uniform(low=self.lb, high=self.ub, size=(self.pop, self.n_dim))
v_high = self.ub - self.lb
self.V = np.random.uniform(low=-v_high, high=v_high, size=(self.pop, self.n_dim)) # speed of particles
self.Y = self.cal_y() # y = f(x) for all particles
self.pbest_x = self.X.copy() # personal best location of every particle in history
self.pbest_y = np.array([[np.inf]] * pop) # best image of every particle in history
self.gbest_x = self.pbest_x.mean(axis=0).reshape(1, -1) # global best location for all particles
self.gbest_y = np.inf # global best y for all particles
self.gbest_y_hist = [] # gbest_y of every iteration
self.update_gbest()
"pbest" is not updated in initiation before updating "gbest". It should be added:
self.update_pbest()
Otherwise, "best_y" is "inf" when max_iter==0.