-#include "rand.h"
-
-typedef struct particle particle;
-
-typedef struct {
- double *x;
- double fitness;
-} particle_state;
-
-typedef struct {
- int dim;
- int particlec;
- range *rrange;
- double (*f)(double*); // fitness function
- double eps; // convergence tolerance
- double w; // inertia
- double c; // cognitive factor
- double s; // social factor
-} pso_parameters;
-
-typedef struct {
- particle *particles;
- particle *global_best;
-} swarm;
-
-struct particle {
- particle_state current;
- particle_state best;
- double *velocity;
-};
-
-void swarm_alloc(pso_parameters *par, swarm *sw);
-void swarm_free(pso_parameters *par, swarm *sw);
-void swarm_populate(pso_parameters *par, swarm *sw, const range *rrange);
-void swarm_velocity_update(pso_parameters *par, swarm *sw);
-void pso_optimize(pso_parameters *par, particle_state *res);