超简洁的随机粒子群算法(PSO)程序(C/C++)

#include"stdio.h"

#include"stdlib.h"

#include"time.h"

#include"math.h"

const int NUM=40;//粒子数

const int DIM=30;//维数

const double c1=1.8;//参数

const double c2=1.8;//参数

double xmin=-100.0;//位置下限

double xmax=100.0;//位置上限

double gbestx[DIM];//全局最优位置

double gbestf;//全局最优适应度

struct particle {//定义一个粒子

doublex[DIM];//当前位置矢量

doublebestx[DIM];//历史最优位置

doublef;//当前适应度

doublebestf;//历史最优适应度

}swarm[NUM];//定义粒子群

#define randf((rand()%10000+rand()%10000*10000)/100000000.0) //产生-1随机浮点数

double f1(double x[]) {//测试函数:超球函数

floatz=0;

for(inti=0;i

z+=(x[i])*(x[i]);

returnz;

}

void main() {

for(int i=0;i

gbestx[i]=randf*(xmax-xmin)+xmin;

gbestf=[**************].0;

for(int i=0;i

particle* p1=&swarm[i];

for(int j=0; j

p1->x[j]=randf*(xmax-xmin)+xmin;

p1->f=f1(p1->x);

p1->bestf=[**************].0;

}

for(int t=0;t

for(int i=0; i

particle* p1=&swarm[i];

for(int j=0; j

p1->x[j]+=c1*randf*(p1->bestx[j]-p1->x[j])

+c2*randf*(gbestx[j]-p1->x[j]);

p1->f=f1(p1->x);

if(p1->fbestf){//改变历史最优

for(int j=0;j

p1->bestx[j]=p1->x[j];

p1->bestf=p1->f;

}

if(p1->f

for(int j=0;j

gbestx[j]=p1->x[j];

for(int j=0; j

p1->x[j]=randf*(xmax-xmin)+xmin;

gbestf=p1->f;

}

}

}

printf("%g\n", gbestf);

}

#include"stdio.h"

#include"stdlib.h"

#include"time.h"

#include"math.h"

const int NUM=40;//粒子数

const int DIM=30;//维数

const double c1=1.8;//参数

const double c2=1.8;//参数

double xmin=-100.0;//位置下限

double xmax=100.0;//位置上限

double gbestx[DIM];//全局最优位置

double gbestf;//全局最优适应度

struct particle {//定义一个粒子

doublex[DIM];//当前位置矢量

doublebestx[DIM];//历史最优位置

doublef;//当前适应度

doublebestf;//历史最优适应度

}swarm[NUM];//定义粒子群

#define randf((rand()%10000+rand()%10000*10000)/100000000.0) //产生-1随机浮点数

double f1(double x[]) {//测试函数:超球函数

floatz=0;

for(inti=0;i

z+=(x[i])*(x[i]);

returnz;

}

void main() {

for(int i=0;i

gbestx[i]=randf*(xmax-xmin)+xmin;

gbestf=[**************].0;

for(int i=0;i

particle* p1=&swarm[i];

for(int j=0; j

p1->x[j]=randf*(xmax-xmin)+xmin;

p1->f=f1(p1->x);

p1->bestf=[**************].0;

}

for(int t=0;t

for(int i=0; i

particle* p1=&swarm[i];

for(int j=0; j

p1->x[j]+=c1*randf*(p1->bestx[j]-p1->x[j])

+c2*randf*(gbestx[j]-p1->x[j]);

p1->f=f1(p1->x);

if(p1->fbestf){//改变历史最优

for(int j=0;j

p1->bestx[j]=p1->x[j];

p1->bestf=p1->f;

}

if(p1->f

for(int j=0;j

gbestx[j]=p1->x[j];

for(int j=0; j

p1->x[j]=randf*(xmax-xmin)+xmin;

gbestf=p1->f;

}

}

}

printf("%g\n", gbestf);

}


相关文章

  • 粒子群优化算法及其应用
  • 2006年第1期信息技术 InformationTechnology 中图分类号:TP391.9 文献标识码:A 文章编号:1009-2552(2006)01-0053-04 粒子群优化算法及其应用 范 娜,云庆夏 (西安建筑科技大学管理科 ...查看


  • 非线性规划的粒子群算法
  • XX 大学 智能优化算法课内实验报告书 院系名称 : 学生姓名 : 专业名称 : 班 级 : 学 时号 : 间 : 非线性规划问题的粒子群算法 1.1 背景介绍 1.1.1 非线性规划简介 具有非线性约束条件或目标函数的数学规划,是运筹学的 ...查看


  • 我的毕业论文_全
  • 班级 学号 03073004 本 科 毕 业 设 计 论 文 题 目 随机子空间方法在高维数据分析 中的应用与实现 学 院 计算机学院 专 业 教育技术学 学生姓名 王 博导师姓名 杨利英 毕业设计(论文)诚信声明书 本人声明:本人所提交的 ...查看


  • 软件测试用例自动生成算法综述_聂鹏
  • 第29卷第2期2012年2月计算机应用研究 Application Research of Computers Vol. 29No. 2Feb. 2012 软件测试用例自动生成算法综述 聂 摘 1,2 鹏,耿 11技,秦志光 * (1.电子 ...查看


  • 基于MATLAB的粒子群优化算法及其应用
  • 第20卷 第10期 文章编号:1006-9348(2003)10-0068-03 计 算 机 仿 真 2003年10月 基于MATLAB的粒子群优化算法及其应用 侯志荣,吕振肃 (兰州大学信息科学与工程学院,甘肃兰州730000) 摘要:该 ...查看


  • 智能优化算法概述
  • 本栏目责任编辑:李桂瑾人工智能及识别技术 智能优化算法概述 蒋腾旭 (九江职业大学计算机系,江西九江332000) 摘要:本文简要介绍了几种常见的智能优化算法,并给出了不同智能优化算法的优缺点及在优化应用领域的使用情况,指出了不同智能优化算 ...查看


  • 基本粒子群算法的原理和matlab程序
  • 基本粒子群算法的原理和matlab程序 作者--niewei120(nuaa) 一.粒子群算法的基本原理 粒子群优化算法源自对鸟群捕食行为的研究,最初由Kennedy和Eberhart提出,是一种通用的启发式搜索技术.一群鸟在区域中随机搜索 ...查看


  • 苏州大学本科生毕业设计(论文)
  • 目 录 前 言 ........................................................... 1 第一章 概述 ........................................... ...查看


  • 粒子群优化算法综述
  • 2004年5月第 6卷第5期 中国工程科学May.2004Vol16No15 综合述评 杨 维,(250061) [摘要] (PSO)算法是一种新兴的优化技术,其思想来源于人工生命和演化计算理论.PSO通 .该算法简单易实现,可调参数少,已 ...查看


热门内容