首页 > 代码库 > 一个C++的粒子群(PSO)算法实现
一个C++的粒子群(PSO)算法实现
收集和修改的PSO算法,可用于参考实现:
#include <cstring> #include <iostream> #include <cmath> #include <algorithm> #include <ctime> #define rand_01 ((float)rand() / (float)RAND_MAX) const int numofdims = 30; const int numofparticles = 50; using namespace std; //typedef void (*FitnessFunc)(float X[numofparticles][numofdims], float fitnesses[numofparticles]); void fitnessfunc(float X[numofparticles][numofdims], float fitnesses[numofparticles]) { memset(fitnesses, 0, sizeof (float) * numofparticles); for(int i = 0; i < numofparticles; i++) { for(int j = 0; j < numofdims; j++) { fitnesses[i] += X[i][j] * X[i][j]; //(pow(X[i][j], 2)); } } } void rosenBroekFunc(float X[numofparticles][numofdims], float fitnesses[numofparticles]) { float x1, x2, t1, t2; memset(fitnesses, 0, sizeof (float) * numofparticles); for(int i = 0; i < numofparticles; i++) for(int j = 0; j < numofdims - 1; j++) { x1 = X[i][j]; x2 = X[i][j+1]; t1 = (x2 - x1 * x1); t1 *= t1; t1 *= 100; t2 = x1 - 1; t2 *= t2; fitnesses[i] = t1 + t2; } } float mean(float inputval[], int vallength) { float addvalue = http://www.mamicode.com/0;>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。