天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 54|回复: 0

粒子群算法C++程序

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
#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 {//定义一个粒子
    double x[DIM];//当前位置矢量
    double bestx[DIM];//历史最优位置
    double f;//当前适应度
    double bestf;//历史最优适应度
}swarm[NUM];//定义粒子群

#define randf ((rand()%10000+rand()%10000*10000)/100000000.0) //产生-1随机浮点数
double f1(double x[]) {//测试函数:超球函数
    float z=0;              
    for(int i=0;i<DIM;i++)
        z+=(x[i])*(x[i]);
    return z;
}

void main() {
    for(int i=0; i<DIM; i++)//初始化全局最优
        gbestx[i]=randf*(xmax-xmin)+xmin;
    gbestf=100000000000000.0;
    for(int i=0; i<NUM; i++) {//初始化粒子群
        particle* p1=&swarm[i];
        for(int j=0; j<DIM; j++)
            p1->x[j]=randf*(xmax-xmin)+xmin;
        p1->f=f1(p1->x);
        p1->bestf=100000000000000.0;
    }
    for(int t=0; t<5000; t++) {
        for(int i=0; i<NUM; i++) {
            particle* p1=&swarm[i];
            for(int j=0; j<DIM; 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->f<p1->bestf) {//改变历史最优
                for(int j=0;j<DIM;j++)
                    p1->bestx[j]=p1->x[j];
                p1->bestf=p1->f;
            }
            if(p1->f<gbestf) {//改变全局最优
                for(int j=0;j<DIM;j++)
                    gbestx[j]=p1->x[j];
                for(int j=0; j<DIM; j++)//把当前全局最优的粒子随机放到另一位置
                    p1->x[j]=randf*(xmax-xmin)+xmin;
                gbestf=p1->f;
            }
        }
    }
    printf("%g\n", gbestf);
}

 

 

 

 

粒子群算法C++程序
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 11:32 , Processed in 0.133301 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表