1
我刚开始与Wolfram Mathematica的旅程,我想实现一个简单的遗传算法。数据的构建是给出的,我必须从这样的行/列开始。如何将矩阵值更改为来自另一个矩阵的值 - Wolfram
以下是我有:
chromosome := RandomSample[CharacterRange["A", "G"], 7]
chromosomeList = Table[chromosome, 7] // MatrixForm
这给了我一个矩阵,其中每一行代表一个染色体:
yPos = Flatten[Position[chromosomeList, #], 1] & /@ {"A", "B", "C",
"D", "E", "F", "G"};
yPos = yPos[[All, 3 ;; 21 ;; 3]] // Transpose
现在,每一列代表一个字母(从A到G),每一行都是每个染色体的索引:
这里是一个给定的效率矩阵,其中非常行表示不同的字母(从A到G)和每列给出了应在特定位置施加的值:
efficiencyMatrix = {
{34, 31, 20, 27, 24, 24, 18},
{14, 14, 22, 34, 26, 19, 22},
{22, 16, 21, 27, 35, 25, 30},
{17, 21, 24, 16, 31, 22, 20},
{17, 29, 22, 31, 18, 19, 26},
{26, 29, 37, 34, 37, 20, 21},
{30, 28, 37, 28, 29, 23, 19}}
我想要做的是创建一个矩阵,其值与字母及其位置相对应。我已经这样做了:
values = Transpose[{ efficiencyMatrix[[1, yPos[[1]]]],
efficiencyMatrix[[2, yPos[[2]]]],
efficiencyMatrix[[3, yPos[[3]]]],
efficiencyMatrix[[4, yPos[[4]]]],
efficiencyMatrix[[5, yPos[[5]]]],
efficiencyMatrix[[6, yPos[[6]]]],
efficiencyMatrix[[7, yPos[[7]]]]}]
我怎样才能以更优雅的方式写它?
,你可能觉得http://mathematica.stackexchange.com问这个问题,但是如果你确实从这个网站删除它。交叉发布是相当皱眉。 –
有点附带说明,但通常不建议以格式形式存储任何内容。你应该做'(chromosomeList = Table [chromosome,7])// MatrixForm',它存储表格并且只是显示格式。 – agentp