有人可以帮我向量化此for循环吗?

时间:2018-06-24 22:03:12

标签: python numpy vectorization genetic

我正在尝试使代码更高效。我对矢量化不是很熟悉。我可以做一些简单的事情,但是我无法将头包裹在这个头上

def mate(self, parent1, parent2):
    length = parent1.size
    parent1 *= 1e6
    parent2 *= 1e6
    parent1 = parent1.astype(int)
    parent2 = parent2.astype(int)
    child1 = []
    child2 = []
    for i in range(length):
        hold1 = parent1[i]
        hold2 = parent2[i]
        hold1 = np.binary_repr(hold1, 30)
        hold2 = np.binary_repr(hold2, 30)
        pivot = np.random.randint(0, length)
        childGene1 = hold1[:pivot] + hold2[pivot:]
        childGene2 = hold2[:pivot] + hold1[pivot:]
        childGene1 = int(childGene1, 2) / 1e6
        childGene2 = int(childGene2, 2) / 1e6
        child1.append(childGene1)
        child2.append(childGene2)            
    return [child1, child2]

这是我为遗传算法设计的交配功能。我应该如何对这个循环进行矢量化处理?

0 个答案:

没有答案