我编写了这个程序来评估10000节点数据集和动态覆盖(覆盖范围意味着从一个节点开始它可以访问多少个节点)。它运行速度很慢,但失败并显示错误Error in unserialize(socklist[[n]]) : error reading from connection
。我相信内存不足。任何建议都要加快速度,减少内存使用量。我甚至没有在我的系统上运行它,它在具有32个核心访问权的集群上运行。我使用foreach
循环和doparallel
库并行运行它。
#code for coverage graph
cover<- function(sampl){
#define the coverage parameter
co_nodes<-10
done<- 0
result<-matrix(nrow=10000,ncol =10000)
if(co_nodes>1)
{
co_nodes<-co_nodes-1
#loop to get all the elements.
coverage_matrix<- NULL
le<-unique(sampl$V2)
le
tl<-length(le)
tl
for(p in 1:tl)
{
message("main loop iteration:", p)
#pick first node
x<-le[p]
x
cv_matrix<- sampl[sampl$V1==x,]
cv_matrix
# ca gets the new neibhour nodes from the matrix
ca<-unique(cv_matrix$V2)
ca
chl<-length(ca)
if(chl==0)
{
next
}else
{
for(i in (1:co_nodes))
{
message("coverage loop iteration:", i)
#print("neibhour node")
#print(c)
# t gets nieghbours
t<-sampl[sampl$V1 %in% ca,]
cv_matrix<-rbind(cv_matrix,t)
#message("ca:", ca)
ca<-unique(t$V2)
# print("ca after binding")
#print(ca)
message("exiting coverage loop iteration:", i )
chl<-length(ca)
if(chl==0)
{
break
}
}
cv_matrix$V1<- x
coverage_matrix<-rbind(coverage_matrix,cv_matrix)
}
}
}else
{
coverage_matrix<- sampl
}
此处co_nodes
是覆盖变量。主循环运行10000次有两个循环,内部循环取决于覆盖变量。有没有办法删除循环并加快速度。
处理完循环后,它将转换为10000 * 10000矩阵。输入格式如下
V1 V2 33853 33842 33853 33848 33853 33852 33853 34702 33842 33839 33842 33843 33842 33848 33842 33853 33842 34696 33848 33842 33848 33849 33848 33853 33852 33740 33852 33853 33852 34703 34702 33853 34702 34701 34702 34703 33839 33816 33839 33837
输出的形式为01矩阵10000 * 10000
179 181 182 280 281 282 283 284 285 286 287 294 419 423 179 0 0 0 0 0 0 0 0 0 0 0 0 0 0 181 1 0 1 0 0 0 0 0 0 0 0 0 1 1 182 0 0 0 0 0 0 0 0 0 0 0 0 0 0 280 0 0 0 0 1 1 1 1 1 1 1 1 0 0 281 0 0 0 1 0 1 1 1 1 1 1 0 0 0 282 0 0 0 1 1 0 1 1 1 1 1 1 0 0 283 0 0 0 1 1 1 0 1 1 1 1 1 0 0 284 0 0 0 1 0 1 1 0 1 1 1 1 0 0 285 0 0 0 1 1 1 1 1 0 1 1 0 0 0 286 0 0 0 1 1 1 1 1 1 0 1 1 0 0 287 0 0 0 1 1 1 1 1 1 1 0 1 0 0 294 0 0 0 0 0 0 0 0 0 0 0 0 0 0 419 0 0 0 0 0 0 0 0 0 0 0 0 0 0 423 0 0 0 0 0 0 0 0 0 0 0 0 0 0