楼主: 小洋仔
2633 5

[问答] 求助。。前辈们帮我看看我写的R代码,为什么运行超级费时间。 [推广有奖]

  • 2关注
  • 0粉丝

大专生

95%

还不是VIP/贵宾

-

威望
0
论坛币
30 个
通用积分
1.0600
学术水平
5 点
热心指数
9 点
信用等级
5 点
经验
409 点
帖子
51
精华
0
在线时间
49 小时
注册时间
2013-10-11
最后登录
2016-3-20

楼主
小洋仔 学生认证  发表于 2014-3-5 20:47:39 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
小弟初学R语言,用它编写了一个关于粒子群算法的代码,可是别人编写的代码可能就几秒就出结果,我的却要二十秒。代码的整体流程没有问题,用的台式机也不错,应该是初学的原因,我不懂得R的代码编写规则,用了一些非常耗时的代码,希望前辈们帮我看一下。不胜感激system.time(
{
b<-0
a<-function(x){for(i in 1:20){d=x[i]^2;b=b+d};return(b)}
T<-2000
num<-50
dim<-20
w<-0.8
c1<-2
c2<-2
ε<-0.6
η<-0.5
r<-0.729
m<-2
x_down<--5
x_up<-5
zux=array(NA,dim=c(50,20))
zuv=array(NA,dim=c(50,20))
pbest_x=array(NA,dim=c(50,20))
pbest=NULL
gbest=NULL
gbest_x=NULL
g=NULL
ran=NULL
Vmax=(x_up-x_down)/8
for(i in 1:50){for(j in 1:20){ran=runif(20,0,1);zux[i,j]=x_down+(x_up-x_down)*ran[j]
zuv[i,j]=Vmax*(2*ran[j]-1);x=zux[i,]}
pbest[i]=a(x)
pbest_x[i,]=x}
gbest=pbest[1]
gbest_x=pbest_x[1,]
for(i in 1:num){if(pbest[i]<gbest){gbest=pbest[i];gbest_x=pbest_x[i,]}}
while(m<=T){
for(i in 1:50){for(j in 1:20){zuv[i,j]=w*zuv[i,j]+c1*ε*(pbest_x[i,j]-zux[i,j])+c2*η*(gbest_x[j]-zux[i,j])
zux[i,j]=zux[i,j]+zuv[i,j]
if(zux[i,j]>x_up)(zux[i,j]=x_up)
if(zux[i,j]<x_down)(zux[i,j]=x_down)
if(zuv[i,j]>Vmax)(zuv[i,j]=Vmax)
x=zux[i,]}
g[i]=a(x);if(pbest[i]>g[i]){pbest[i]=g[i];pbest_x[i,]=x}
if(pbest[i]<gbest){gbest=pbest[i];gbest_x=pbest_x[i,]}
}
m=m+1}
print(gbest)
print(gbest_x)
}
)

二维码

扫码加我 拉你入群

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

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

关键词:R代码 System 粒子群算法 time 不胜感激 不胜感激 台式机

回帖推荐

求证1加1 发表于6楼  查看完整内容

lz可以去看看The art of R programming

沙发
jmpamao 发表于 2014-3-5 20:59:35
你可以关注下 nuomin  的帖子或主题, 他喜欢函数的编程风格。可以把你的那些 C1 C2 W .....等等 封装掉。现在看你的程序,有些乱。

藤椅
jgchen1966 发表于 2014-3-5 21:07:53
这是C|C++ 编程 风格,不习惯,R 是矢量或矩阵运算的
鹑居鷇食,鸟行无彰

板凳
小洋仔 学生认证  发表于 2014-3-5 21:17:52
jgchen1966 发表于 2014-3-5 21:07
这是C|C++ 编程 风格,不习惯,R 是矢量或矩阵运算的
那能不能以其中的某一个代码转换成R的风格,来做个示范呢、谢谢

报纸
小洋仔 学生认证  发表于 2014-3-5 21:18:29
jmpamao 发表于 2014-3-5 20:59
你可以关注下 nuomin  的帖子或主题, 他喜欢函数的编程风格。可以把你的那些 C1 C2 W .....等等 封装掉。现 ...
好的,我看看。

地板
求证1加1 发表于 2014-3-5 22:56:31
lz可以去看看The art of R programming
个人主页,欢迎订阅http://chenangliu.info/

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

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