np.argsort(np.argsort(-self.Y))
https://github.com/guofei9987/scikit-opt/blob/b1f147af996f9839b7c107c17a8dd8c7098cdef0/sko/operators/ranking.py#L19, 请问这行代码是不是有点问题: “np.argsort(np.argsort(-self.Y))”? np.argsort()已经是对最后一维排序了,为什么需要再次np.argsort,感觉多余,是不是应该修改成 np.argsort(-self.Y)
还有一个小的建议,如 https://github.com/guofei9987/scikit-opt/blob/b1f147af996f9839b7c107c17a8dd8c7098cdef0/sko/operators/crossover.py#L7 既然“Chrom, size_pop, len_chrom = self.Chrom, self.size_pop, self.len_chrom”,后面的代码再使用"self.Chrom”, “self.size_pop”, “self.len_chrom“时建议统一改成"Chrom”, “size_pop”, “len_chrom“,而代码中有时使用带self的变量,有时使用不带self的变量,感觉有点怪怪的
https://github.com/guofei9987/scikit-opt/blob/b1f147af996f9839b7c107c17a8dd8c7098cdef0/sko/operators/ranking.py#L19
, 请问这行代码是不是有点问题: “np.argsort(np.argsort(-self.Y))”? np.argsort()已经是对最后一维排序了,为什么需要再次np.argsort,感觉多余,是不是应该修改成 np.argsort(-self.Y) 还有一个小的建议,如
https://github.com/guofei9987/scikit-opt/blob/b1f147af996f9839b7c107c17a8dd8c7098cdef0/sko/operators/crossover.py#L7
既然“Chrom, size_pop, len_chrom = self.Chrom, self.size_pop, self.len_chrom”,后面的代码再使用"self.Chrom”, “self.size_pop”, “self.len_chrom“时建议统一改成"Chrom”, “size_pop”, “len_chrom“,而代码中有时使用带self的变量,有时使用不带self的变量,感觉有点怪怪的
两个 np.argsort 不多余。
一个np.argsort 指的是:如果想让原序列按照大小排序,第i位应当是原序列的第几位。
两个np.argsort 指的是:第i位在整理中的 rank 是几。这也是我们需要的结果。
套两个 np.argsort 可能不易理解,但是性能最高的方案。
可以试试这两个结果不一样
np.argsort([8,5,6,7])
np.argsort(np.argsort([8,5,6,7]))
每个算子第一行都有这个 Chrom, size_pop, len_chrom = self.Chrom, self.size_pop, self.len_chrom,这是为了提醒用户,如果想魔改的话,可以读写 self 的这些字段。