资源简介
并行化实现了PSO算法,大大提高了算法的寻优效果。基于OpenMP和MPI两种方法实现。
代码片段和文件信息
//粒子群PSO算法
#include
#include
#include
#include
#include
#include
#define PI 3.141592653589
#define P_num 40000 //粒子数目
#define dim 30 //维度
#define N 10 // 每条进程执行数目
#define low -100 //搜索域范围
#define high 100
#define iter_num 1000
#define V_max 20 //速度范围
#define c1 1.5 //更新速度时的加速常量
#define c2 1.5 //更新速度时的加速常量
#define w 0.5 //更新速度时的权重
#define alp 1 //更新位置时的权重
double particle[P_num][dim]; //个体位置集合
double particle_loc_best[P_num][dim]; //每个个体局部最优向量
double particle_loc_fit[P_num]; //个体的局部最优适应度有局部最优向量计算而来
double particle_glo_best[dim]; //全局最优向量
double gfit; //全局最优适应度有全局最优向量计算而来
double particle_v[P_num][dim]; //记录每个个体的当前代速度向量
double particle_fit[P_num]; //记录每个粒子的当前代适应度
/*时间函数*/
double mytime()
{
double ts = 0.0;
struct timeval mt;
gettimeofday(&mt(struct timezone*)0);
ts = (double)(mt.tv_sec+mt.tv_usec*1.0e-6);
return (ts);
}
int get_rand(int comm_sz){
srand((unsigned)time(NULL));
return rand()%(P_num/comm_sz);
}
double Sphere(double a[])
{
int i;
double sum=0.0;
for(i=0; i {
sum+=a[i]*a[i];
}
return sum;
}
double Rosenbrock(double a[])
{
int i;
double sum=0.0;
for(i=0;i {
sum+= 100*(a[i+1]-a[i]*a[i])*(a[i+1]-a[i]*a[i])+(a[i]-1)*(a[i]-1);
}
return sum;
}
double Rastrigin(double a[])
{
int i;
double sum=0.0;
for(i=0;i {
sum+=a[i]*a[i]-10.0*cos(2*PI*a[i])+10.0;
}
return sum;
}
double fitness(double a[]) //适应度函数
{
return Rastrigin(a);
}
/*初始化粒子,包括初始化速度,位置,各自的适应度以及*/
void initial()
{
int ij;
for(i=0; i {
for(j=0; j {
particle[i][j] = low+(high-low)*1.0*rand()/RAND_MAX; //初始化群体位置随机
particle_loc_best[i][j] = particle[i][j]; //将当前最优结果写入局部最优集合
particle_v[i][j] = -V_max+2*V_max*1.0*rand()/RAND_MAX; //初始化速度
}
}
for(i=0; i {
particle_fit[i] = fitness(particle[i]);
particle_loc_fit[i] = particle_fit[i]; //当前局部适应度
}
gfit = particle_loc_fit[0]; //初始化全局最优适应度
j=0;
for(i=1; i {
if(particle_loc_fit[i] {
gfit = particle_loc_fit[i];
j = i; //记录下标
}
}
for(i=0; i {
particle_glo_best[i] = particle_loc_best[j][i];
}
}
/*更新位置函数*/
void renew_particle(int aint b)
{
int ij;
for(i=a; i {
for(j=0; j {
particle[i][j] += alp*particle_v[i][j];
if(particle[i][j] > high)
{
particle[i][j] = high;
}
if(particle[i][j] < low)
{
particle[i][j] = low;
}
}
}
}
/*更新粒子速度*/
void renew_var(int aint bint *m)
{
int i j;
for(i=a;i {
particle_fit[i] = fitness(particle[i]); //计算该粒子适应度
if(particle_fit[i] < p
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 44 2019-05-23 16:30 pso并行化算法\PSO_MPI\.vs\ProjectSettings.json
..A..H. 15872 2019-05-23 16:30 pso并行化算法\PSO_MPI\.vs\PSO_MPI\v15\.suo
文件 262144 2019-05-23 16:30 pso并行化算法\PSO_MPI\.vs\PSO_MPI\v15\Browse.VC.db
文件 77824 2019-05-23 16:30 pso并行化算法\PSO_MPI\.vs\slnx.sqlite
文件 78 2019-05-23 16:30 pso并行化算法\PSO_MPI\.vs\VSWorkspaceState.json
文件 18240 2018-06-14 13:41 pso并行化算法\PSO_MPI\pso
文件 6493 2018-06-14 13:41 pso并行化算法\PSO_MPI\pso.c
文件 13568 2018-06-14 13:47 pso并行化算法\PSO_MPI\pso_1
文件 4155 2018-06-14 13:48 pso并行化算法\PSO_MPI\pso_1.c
文件 52 2018-06-15 12:25 pso并行化算法\PSO_MPI\说明.txt
..A..H. 41984 2019-01-11 10:25 pso并行化算法\PSO_OpenMP\.vs\PSO_OpenMP\v15\.suo
文件 270336 2019-01-11 10:25 pso并行化算法\PSO_OpenMP\.vs\PSO_OpenMP\v15\Browse.VC.db
文件 393216 2019-01-11 10:13 pso并行化算法\PSO_OpenMP\.vs\PSO_OpenMP\v15\ipch\49029d25808f1cdb.ipch
文件 3670016 2018-06-15 10:18 pso并行化算法\PSO_OpenMP\.vs\PSO_OpenMP\v15\ipch\9620af6784343d4.ipch
文件 3670016 2018-06-14 11:42 pso并行化算法\PSO_OpenMP\.vs\PSO_OpenMP\v15\ipch\d137cd0d19fb87cd.ipch
文件 46592 2018-06-14 11:42 pso并行化算法\PSO_OpenMP\Debug\PSO_OpenMP.exe
文件 771888 2018-06-14 11:42 pso并行化算法\PSO_OpenMP\Debug\PSO_OpenMP.ilk
文件 700416 2018-06-14 11:42 pso并行化算法\PSO_OpenMP\Debug\PSO_OpenMP.pdb
文件 352 2019-01-11 10:17 pso并行化算法\PSO_OpenMP\PSO_OpenMP\Debug\PSO_OpenMP.log
文件 22921 2018-06-14 11:42 pso并行化算法\PSO_OpenMP\PSO_OpenMP\Debug\PSO_OpenMP.obj
文件 2883584 2018-06-14 08:47 pso并行化算法\PSO_OpenMP\PSO_OpenMP\Debug\PSO_OpenMP.pch
文件 1886 2018-06-14 11:42 pso并行化算法\PSO_OpenMP\PSO_OpenMP\Debug\PSO_OpenMP.tlog\CL.command.1.tlog
文件 7682 2018-06-14 11:42 pso并行化算法\PSO_OpenMP\PSO_OpenMP\Debug\PSO_OpenMP.tlog\CL.read.1.tlog
文件 1564 2018-06-14 11:42 pso并行化算法\PSO_OpenMP\PSO_OpenMP\Debug\PSO_OpenMP.tlog\CL.write.1.tlog
文件 1592 2018-06-14 11:42 pso并行化算法\PSO_OpenMP\PSO_OpenMP\Debug\PSO_OpenMP.tlog\li
文件 3954 2018-06-14 11:42 pso并行化算法\PSO_OpenMP\PSO_OpenMP\Debug\PSO_OpenMP.tlog\li
文件 838 2018-06-14 11:42 pso并行化算法\PSO_OpenMP\PSO_OpenMP\Debug\PSO_OpenMP.tlog\li
文件 233 2018-06-14 11:42 pso并行化算法\PSO_OpenMP\PSO_OpenMP\Debug\PSO_OpenMP.tlog\PSO_OpenMP.lastbuildstate
文件 6088 2018-06-14 08:47 pso并行化算法\PSO_OpenMP\PSO_OpenMP\Debug\stdafx.obj
文件 101376 2018-06-14 11:42 pso并行化算法\PSO_OpenMP\PSO_OpenMP\Debug\vc141.idb
............此处省略27个文件信息
- 上一篇:暴力破解MD5解密工具
- 下一篇:P2P、网贷后台原型
相关资源
- 三维可压缩流场MPI+OpenMP混合并行算法
- EPSON Stylus Photo R330 清零中文版
- EPson Photo1390 百度西EP601 ICC
- Epson L111 L211 L301 L303 L351 L353 L358 L551清
- EPSON L3115 L3118 l3119 打印机清零软件+教
- epson me350扫描驱动 官方版
- EPSON ME330 清零软件 免费
- EPSON L101+L201废墨清零
- EPSON L1110 Series 废墨清零软件含教程
- 爱普生Epson lq590k打印机驱动 v7.3.10sc
- EPSON L110-L210-L300-L350-L355 清零软件
- Epson爱普生LQ-50K针式打印机驱动 v1.0
- epson 690k pro驱动
-
epson
m>m m>101清 - 基于Grid-Search_PSO优化SVM回归预测矿井
- 赛普拉斯 电容触摸按键 PSoC4_CapSense
- PSoC4 入门中文资料
- PSOC 官方例程 赛普拉斯 RTC 实时时钟
- PSOC原理及操作教程
- 计算流体力学及其并行算法
- EPSON R270全系列相纸ICC色彩配置文件
- zcu102试验emio
- epsonLQ-136驱动
- HPSocket4C 静态库32和64位版本
- Epson Tm88打印指令集
- minicap 自动适应屏幕旋转
- Epson爱普生L3100 L3101 L3110 L3150 L3168系列
- 非数值并行算法第一册——模拟退火
- EPSON L130 L220 L310 L360 L365清零神器
- 粒子群优化算法代码及资料
评论
共有 条评论