如何基于每个矩阵的适合度对矩阵列表进行排序

时间:2018-01-05 04:55:30

标签: r list matrix genetic-algorithm

列表(19)矩阵

if list; then list; [ elif list; then list; ] ... [ else list; ] fi

我需要选择前10个矩阵,当输入到fitness()函数时,它会给出最大的回报。

bulk.list <-list(1:19)

for(i in 1:19) {
  bulk.list[[i]]<-matrix(i, 12, 126)
}

我需要将这10个矩阵写入另一个列表(不需要按任何特定顺序)

fitness <- function(S)
{
  total=0
  for (t in 1:12){
    for (i in 1:126){
      total=total+(S[t,i])
    }
  }
  return(total)
}

健身功能恰好是资源密集型的,所以我尝试使用它的次数最少。到目前为止,我有健康

列表
pop.list <-list(1:10)

但是我无法理解如何对这个适应值列表进行排序可以得到10个相应矩阵的所需列表。我可以使用这两个列表创建一个数据框,然后以某种方式对其进行排序吗? 我的输出必须是包含10个具有最高适合度值的矩阵

的列表
flist.list=lapply(bulk.list, fitness)

PS:作为stackoverflow noob,请原谅最初缺乏格式化

1 个答案:

答案 0 :(得分:0)

我能够通过使用order()然后将订单存储在另一个列表中来实现它

首先,健身存储在flist.list

flist.list <-list()
for (i in 1:l){
  flist.list[[i]]= fitness(bulk[[i]])
}

OR

flist.list=lapply(bulk.list, fitness)

然后我使用了订单功能,并将订单存储在新的数据框

order1=order(-as.data.frame(fit.list))

最后,我使用该数据帧根据需要将顶部矩阵写入新列表

for (i in 1:10){
    poplist.list[[i]]=bulk[[order1[i]]]
}

不是最佳解决方案,但它确实有效。