如何重复这些遗传算法的实现?

时间:2017-07-13 15:54:58

标签: python algorithm repeat genetic-algorithm

我无法弄清楚如何重复此代码。该代码用于我正在研究的开始遗传算法函数。我是一个极端业余的代码,所以如果它是愚蠢的,抱歉。 :)

我认为我很接近,我有三种代码变体,但两者都不相同,但相对接近(......也许......)。

以下是我的代码的变体1

population_size = int(raw_input('Enter a population size:'))

def make_organism(length):
    from random import randint

length = int(raw_input('Enter an organism length:'))
org = []
for i in range(length):
        var = randint(0, 1)
        org.append(var)

new_org = []
for length in range(population_size):
    var_2 = randint(0, 1)
    new_org.append(var_2)
    print new_org

此代码返回正确的填充但不是正确的长度。

例如:

Enter a population size: 3
Enter an organism length: 4
[0]
[0, 0]
[0, 0, 0]
我的代码的

变体2

population_size = int(raw_input('Enter a population size:'))

def make_organism(length):
    from random import randint

length = int(raw_input('Enter an organism length:'))
org = []
for i in range(length):
        var = randint(0, 1)
        org.append(var)

new_org = []
for length in range(population_size):
    var = randint(0, 1)
    org.append(length)
    print new_org

此代码返回正确的填充但不返回括号中的任何内容。打印new_orgpopulation_size一样多次。

例如:

Enter a population size: 3
Enter an organism length: 4
[]
[]
[]

变体3:

population_size = int(raw_input('Enter a population size:'))

def make_organism(length):
    from random import randint

length = int(raw_input('Enter an organism length:'))
org = []
for i in range(length):
        var = randint(0, 1)
        org.append(var)
print org

此代码将使用代码返回正确的长度,但不会返回正确的填充大小。

例如:

Enter a population size: 3
Enter an organism length: 4
[0, 1, 0, 1]

orgs是表示为空列表的生物。代码根据位长度生成0和1的随机数模式,并且应该返回与用户输入种群大小一样多的随机列表。

2 个答案:

答案 0 :(得分:0)

如果这是您期望的输出

import random as rd

pop_size=int(raw_input())
org_len=int(raw_input())

for i in range(pop_size):
    org=[]
    for j in range(org_len):
        org.append(rd.randint(0,1))
    print(org)

然后我想以下简单的代码应该可以工作,但它可能会给出重复的列表

{{1}}

希望这有助于:)

答案 1 :(得分:0)

你可能想要更多地阅读python,因为你似乎并不知道自己在做什么。但是,你想要做的很容易。我就是这样做的。

from random import randint

population_size = int(raw_input('Enter a population size:')) 
length = int(raw_input('Enter an organism length:'))
org = [[randint(0,1) for _ in range(length)] for _ in range(population_size)]
print "\n".join(map(str, org))

逐行完成此行

from random import randint

从库随机导入函数randint。你把它放在一个你没有调用过的函数中,所以我不确定你的代码是如何工作的,但通常这是在文件的顶部完成的。

你知道接下来的两行是做什么的,因为我是从你那里复制过来的。

 org = [[randint(0,1) for _ in range(length)] for _ in range(population_size)]

这是一个嵌套列表理解。内部部分生成一个列表,其中填充了所需长度的随机选择的0和1,然后外部部分为总体大小中的每个列表生成该列表。现在你有一些看似长度为4和人口大小为3的东西:

[[1, 0, 0, 1], [0, 0, 0, 0], [0, 1, 1, 1]]

最后一行只是将其格式化为在单独的行上打印每个生物体。