/*
取得最大值
*/#include
#include
#include
#include
#include
#define c1 1.49445 //加速度因子一般是根據大量實驗所得
#define c2 1.49445
#define maxgen 2000 // 迭代次數
#define sizepop 800 // 種群規模
#define popmax 10 // 個體最大取值
#define popmin -10 // 個體最小取值
#define vmax 0.5 // 速度最大值
#define vmin -0.5 //速度最小值
#define dim 10 // 粒子的維數
double pop[sizepop][dim]; // 定義種群陣列
double v[sizepop][dim]; // 定義種群速度陣列
double fitness[sizepop]; // 定義種群的適應度陣列
double result[maxgen]; //定義存放每次迭代種群最優值的陣列
double pbest[sizepop][dim]; // 個體極值的位置
double gbest[dim]; //群體極值的位置
double fitnesspbest[sizepop]; //個體極值適應度的值
double fitnessgbest; // 群體極值適應度值
double genbest[maxgen][dim]; //每一代最優值取值粒子
//適應度函式
double func(double * arr, int n)
return fitness;
// 種群初始化
void pop_init(void)
fitness[i] = func(pop[i], dim); //計算適應度函式值}}
// max()函式定義
double * max(double * fit, int size)
}best_fit_index[0] = index;
best_fit_index[1] = max;
return best_fit_index;
}// 迭代尋優
void pso_func(void)
// 個體極值位置
for (int i = 0; i < sizepop; i++)
}// 個體極值適應度值
for (int i = 0; i < sizepop; i++)
//群體極值適應度值
double bestfitness = *(best_fit_index + 1);
fitnessgbest = bestfitness;
//迭代尋優
for (int i = 0; i < maxgen; i++)
fitness[j] = func(pop[j], dim); //新粒子的適應度值
} for (int j = 0; j < sizepop; j++)
fitnesspbest[j] = fitness[j];
} // 群體極值更新
if (fitness[j] < fitnessgbest)
}for (int k = 0; k < dim; k++)
result[i] = fitnessgbest; // 每代的最優值記錄到陣列
}
// 主函式
int main(int argc,char**ar**)
mpi_barrier(mpi_comm_world);
for (m = 0; m < 10; m++) }}
}mpi_bcast(&j, 1, mpi_int, 0, mpi_comm_world);
mpi_bcast(gbest, dim, mpi_double, j, mpi_comm_world);
mpi_finalize();
best_arr = max(result, maxgen);
best_gen_number = *best_arr;
best = *(best_arr + 1);
printf(「迭代了%d次,在第%d次取到最優值,最優值為:%lf.\n」, maxgen, best_gen_number + 1, best);
printf(「取到最優值的位置為(%lf,%lf).\n」, genbest[best_gen_number][0], genbest[best_gen_number][1]);
finish = clock(); //結束時間
double duration = (double)(finish - start) / clocks_per_sec; // 程式執行時間
printf(「程式執行耗時:%lf\n」, duration);
system(「pause」);
return 0;
}
粒子群演算法python實現
1 概述 粒子群演算法作為一種優化演算法,在很多領域都有應用。所謂優化,我的理解是對乙個問題求出它足夠好的解,目前的優化演算法有很多,如蟻群演算法 遺傳演算法等。粒子群演算法相對於這些演算法來說,它更簡單,而且有很快的收斂速度。2 演算法描述 舉乙個優化問題的例子,若求 粒子群演算法思想 於實際生活...
粒子群演算法簡單實現
pso演算法相關定義 pso中的每個粒子p包含兩個向量 x,v o位置向量x 粒子在解空間中的當前位置 x x1,x2,xdim o速度向量v 粒子在解空間中的飛行速度 v v1,v2,vdim pbest 粒子自身的歷史最優位置 gbest 群體全域性最優向量 粒子速度與位置更新 p.v omeg...
粒子群演算法實現之python
python實現粒子群演算法 粒子群演算法 pso 又可以叫做鳥群演算法,是學者觀察模仿鳥群的行為而發展的一種智慧型搜尋演算法,和遺傳演算法一樣,也是一種群智慧型演算法。總的來說,粒子群演算法也是一種進化演算法,粒子分布在空間中,粒子在空間中的座標組成的向量可以看做成遺傳演算法中的個體,或者是鳥群中...