@@ 818-836 (lines=19) @@ | ||
815 | kwargs.pop('vMin', None), kwargs.pop('vMax', None) |
|
816 | MutatedCenterParticleSwarmOptimization.setParameters(self, vMin=-np.inf, vMax=np.inf, **kwargs) |
|
817 | ||
818 | def updateVelocity(self, V, p, pb, gb, w, vMin, vMax, task, **kwargs): |
|
819 | r"""Update particle velocity. |
|
820 | ||
821 | Args: |
|
822 | V (numpy.ndarray): Current velocity of particle. |
|
823 | p (numpy.ndarray): Current position of particle. |
|
824 | pb (numpy.ndarray): Personal best position of particle. |
|
825 | gb (numpy.ndarray): Global best position of particle. |
|
826 | w (numpy.ndarray): Weights for velocity adjustment. |
|
827 | vMin (numpy.ndarray): Minimal velocity allowed. |
|
828 | vMax (numpy.ndarray): Maxmimal velocity allowed. |
|
829 | task (Task): Optimization task. |
|
830 | kwargs: Additional arguments. |
|
831 | ||
832 | Returns: |
|
833 | numpy.ndarray: Updated velocity of particle. |
|
834 | """ |
|
835 | r3 = self.rand(task.D) |
|
836 | return self.Repair(w * V + self.C1 * self.rand(task.D) * (pb - p) * r3 + self.C2 * self.rand(task.D) * (gb - p) * (1 - r3), vMin, vMax) |
|
837 | ||
838 | class ComprehensiveLearningParticleSwarmOptimizer(ParticleSwarmAlgorithm): |
|
839 | r"""Implementation of Mutated Particle Swarm Optimization. |
|
@@ 167-184 (lines=18) @@ | ||
164 | d.update({'popb': pop.copy(), 'fpopb': fpop.copy()}) |
|
165 | return pop, fpop, d |
|
166 | ||
167 | def updateVelocity(self, V, p, pb, gb, w, vMin, vMax, task, **kwargs): |
|
168 | r"""Update particle velocity. |
|
169 | ||
170 | Args: |
|
171 | V (numpy.ndarray): Current velocity of particle. |
|
172 | p (numpy.ndarray): Current position of particle. |
|
173 | pb (numpy.ndarray): Personal best position of particle. |
|
174 | gb (numpy.ndarray): Global best position of particle. |
|
175 | w (numpy.ndarray): Weights for velocity adjustment. |
|
176 | vMin (numpy.ndarray): Minimal velocity allowed. |
|
177 | vMax (numpy.ndarray): Maximal velocity allowed. |
|
178 | task (Task): Optimization task. |
|
179 | kwargs: Additional arguments. |
|
180 | ||
181 | Returns: |
|
182 | numpy.ndarray: Updated velocity of particle. |
|
183 | """ |
|
184 | return self.Repair(w * V + self.C1 * self.rand(task.D) * (pb - p) + self.C2 * self.rand(task.D) * (gb - p), vMin, vMax) |
|
185 | ||
186 | def runIteration(self, task, pop, fpop, xb, fxb, popb, fpopb, w, vMin, vMax, V, **dparams): |
|
187 | r"""Core function of Particle Swarm Optimization algorithm. |