R中多个向量的点积优化口袋妖怪团队

R中多个向量的点积优化口袋妖怪团队,r,vector,dot-product,R,Vector,Dot Product,我的计划是创造一种方法来挑选最好的口袋妖怪团队。我不知道如何从16个防御向量和12个向量的点积中创建12个向量的所有可能组合的列表,然后对atk向量做同样的事情。我的另一个问题是找到一种方法来计算每个团队中口袋妖怪的总价值。我希望我的结果看起来像这个矩阵: 团队…………总体统计…………Atk分数…………Def分数 6个口袋妖怪每个atk向量的6个口袋妖怪点积的统计总和每个def向量的点积 这些向量表示每种口袋妖怪类型之间的攻击和防御交互 Normal.def=c(1,2,1,1,1,1,1,0,

我的计划是创造一种方法来挑选最好的口袋妖怪团队。我不知道如何从16个防御向量和12个向量的点积中创建12个向量的所有可能组合的列表,然后对atk向量做同样的事情。我的另一个问题是找到一种方法来计算每个团队中口袋妖怪的总价值。我希望我的结果看起来像这个矩阵:

团队…………总体统计…………Atk分数…………Def分数

6个口袋妖怪每个atk向量的6个口袋妖怪点积的统计总和每个def向量的点积

这些向量表示每种口袋妖怪类型之间的攻击和防御交互

Normal.def=c(1,2,1,1,1,1,1,0,1,1,1,1,1,1,1)
Fire.def=c(1,1,1,1,2,2,.5,1,.5,2,.5,1,1,1,1)
Water.def=c(1,1,1,1,1,1,1,1,.5,.5,2,2,1,.5,1)
Electric.def=c(1,1,.5,1,2,1,1,1,1,1,1,.5,1,1,1)
Grass.def=c(1,1,2,2,.5,1,2,1,2,.5,.5,.5,1,2,1)
Ice.def=c(1,2,1,1,1,2,1,1,2,1,1,1,1,.5,1)
Fighting.def=c(1,1,2,1,1,.5,.5,1,1,1,1,1,2,1,1)
Poison.def=c(1,.5,1,.5,2,1,2,1,1,1,.5,1,2,1,1)
Ground.def=c(1,1,1,.5,1,.5,1,1,1,2,2,0,1,2,1)
Flying.def=c(1,.5,1,1,0,2,.5,1,1,1,.5,2,1,2,1)
Pyschic.def=c(1,.5,1,1,1,1,2,0,1,1,1,1,.5,1,1)
Bug.def=c(1,.5,2,2,.5,2,1,1,2,1,.5,1,1,1,1)
Rock.def=c(.5,2,.5,.5,2,1,1,1,.5,2,2,1,1,1,1)
Ghost.def=c(0,0,1,.5,1,1,.5,2,1,1,1,1,1,1,1)
Dragon.def=c(1,1,1,1,1,1,1,1,.5,.5,.5,.5,1,2,2)
Null.def=c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)

Normal.atk=c(1,1,1,1,1,.5,1,0,1,1,1,1,1,1,1)
Fire.atk=c(1,1,1,1,1,.5,2,1,.5,.5,2,1,1,2,.5)
Water.atk=c(1,1,1,1,2,2,1,1,2,.5,.5,1,1,1,.5)
Electric.atk=c(1,1,2,1,0,1,1,1,1,2,.5,.5,1,1,.5)
Grass.atk=c(1,1,.5,.5,2,2,.5,1,.5,2,.5,1,1,1,.5)
Ice.atk=c(1,1,2,1,2,1,1,1,1,.5,2,1,1,.5,2)
Fighting.atk=c(2,1,.5,.5,1,2,.5,0,1,1,1,1,.5,2,1)
Poison.atk=c(1,1,1,.5,.5,.5,2,.5,1,1,2,1,1,1,1)
Ground.atk=c(1,1,0,2,1,2,.5,1,2,1,.5,2,1,1,1)
Flying.atk=c(1,2,1,1,1,.5,2,1,1,1,2,.5,1,1,1)
Pyschic.atk=c(1,2,1,2,1,1,1,1,1,1,1,1,.5,1,1)
Bug.atk=c(1,.5,.5,2,1,1,1,.5,.5,1,2,1,2,1,1)
Rock.atk=c(1,.5,2,1,.5,1,2,1,2,1,1,1,1,2,1)
Ghost.atk=c(0,1,1,1,1,1,1,2,1,1,1,1,0,1,1)
Dragon.atk=c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,2)
Null.atk=c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)
测试数据: 也许是这个?
用defmatOK把你的防御向量变成一个矩阵,那么问题是什么呢?请删除您遇到问题的代码和输入数据以外的所有内容。请注意,我们不会建议您的算法如何成功地产生一个获胜的团队,而只是建议您的代码是否正确地实现了您的算法。只要它工作正常,我不在乎它工作得有多好!我已经按照你的要求编辑了这篇文章。谢谢为什么人们用不必要的空行发布数据???每个口袋妖怪有两种类型。从这两种类型中,我可以根据这些类型与其他口袋妖怪类型的交互方式来衡量它们的防御和攻击。例如,Venasaur是grass和poison类型,因此为了获得他的攻击分数,我将使用grass.atk和poison.atk的点积,然后对grass.def和poison.def执行相同的操作。一个团队将有12个这样的载体,每个口袋妖怪2个。假设我的团队有草,毒,火,空,水,空,电,空,心灵,空,正常,飞行。然后球队的防守得分将是所有这些.def向量的点积。
Number  Pokemon     Type_1   Type_2   Total
3       Venusaur    Grass    Poison   425
6       Charizard   Fire     Flying   425
9       Blastoise   Water    Null     425
12      Butterfree  Bug      Flying   305
15      Beedrill    Bug      Poison   305
18      Pidgeot     Normal   Flying   399
20      Raticate    Normal   Null     343
22      Fearow      Normal   Flying   381
library(pracma)

defcomb <- combs(1:16,12) # there are 1820 such combinations

defdot <- vector()
for (j in 1:1820) defdot[j]<- defmat[,c(defcomb[j,])] %*%  defmat[,c(defcomb[j,])]