楼主: cherish1028
2051 0

[程序分享] 用R语言实现PSO算法 [推广有奖]

  • 0关注
  • 0粉丝

学前班

90%

还不是VIP/贵宾

-

威望
0
论坛币
7 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
90 点
帖子
2
精华
0
在线时间
1 小时
注册时间
2014-7-29
最后登录
2017-9-13

楼主
cherish1028 发表于 2017-8-7 15:58:18 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
#给定初始化条件
c1 <- 2            #学习因子1
c2 <- 2            #学习因子2
w <- 0.7           #惯性权重
MaxDT <- 1000      #最大迭代次数
D <- 10            #搜索空间维数(未知数个数)
M <- 40            #初始化群体个体数目

#初始化种群的个体(可以在这里限定位置和速度的范围)
x <- matrix(rnorm(M*D),nrow = M,ncol = D,byrow = T)
v <- matrix(rnorm(M*D),nrow = M,ncol = D,byrow = T)

#先计算各个粒子的适应度,并初始化p[i]和gbest
fitness <- function(x)
{
  return(sum(x^2))
}

p <- apply(x,1,fitness)
y <- x
gbest <- x[which(p == min(p)),]            #gbest为全局最优

#进入主要循环,按照公式依次迭代,直到满足精度要求
for (t in 1:MaxDT)
{
  for (i in 1:M)
  {
    v[i, ] = w*v[i, ] + c1*runif(1)*(y[i, ] - x[i, ]) + c2*runif(1)*(gbest-x[i, ])
    x[i, ] = x[i, ] + v[i, ]
    if(fitness(x[i, ]) < p[i])
    {
      p[i] <- fitness(x[i, ])
      y[i, ] <- x[i, ]
    }
    if(p[i] < fitness(gbest))
    {
      gbest <- y[i, ]
    }
  }
}

gbest
fitness(gbest)


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:PSO R语言

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-13 05:25