[英]Create initial Solution Python for Genetic Algorithms
请帮助创建带有以下条件的initial_solution变量:
结构体
population_list = {"LHS":[], "RHS": []}
字典元素的数量= population_size = 20
对于每个population_list
元件"LHS"
和"RHS"
元素。
对于"LHS"
,具有两个job_count = 10
元素,每个元素的长度定义一个列表:
max_sublot = [3, 5, 7, 6, 4, 2, 7, 9, 3, 5]
它的值是一个随机值[0,1),四舍五入到两位小数。
对于"RHS"
,共有max_sublot * mc_op
元素。
max_sublot = [3, 5, 7, 6, 4, 2, 7, 9, 3, 5]
mc_op = [6, 14, 8, 5, 6, 9, 4, 6, 7, 2]
每个元素长度= 4,1个值是random of range job_count
值,2个是根据max_sublot
每个值的随机max_sublot
,3是范围operation_count = 10
的随机数,4个是根据mc_op
每个值随机mc_op
import numpy as np
population_size = 20
job_count = 10
operation_count = 10
max_sublot = [3, 5, 7, 6, 4, 2, 7, 9, 3, 5]
mc_op = [6, 14, 8, 5, 6, 9, 4, 6, 7, 2]
class Population_list(object):
def __init__(self, LHS, RHS):
self.LHS = LHS
self.RHS = RHS
population_list = {"LHS":[], "RHS": []}
for i in range (population_size):
for j in range(job_count):
for s in max_sublot:
lhs_random_num = list(np.random.random())
population_list.update("LHS")
print(population_list)
我想你需要这样的东西
population_size = 20
job_count = 10
operation_count = 10
max_sublot = [3, 5, 7, 6, 4, 2, 7, 9, 3, 5]
mc_op = [6, 14, 8, 5, 6, 9, 4, 6, 7, 2]
import numpy as np
def gen_population(population_size, max_sublot, mc_op, job_count):
return tuple({'LHS': [gen_lhs(length) for length in max_sublot],
'RHS': gen_rhs(np.dot(max_sublot, mc_op), job_count, max_sublot, 10, mc_op)} for _ in range(population_size))
def gen_lhs(length):
return [round(np.random.uniform(0,1),2) for _ in range(length)]
def gen_rhs(length, job_count, max_sublot, operation_count, mc_op):
ret = []
for i in range(length):
new = []
new.append(np.random.randint(job_count))
new.append(np.random.choice(max_sublot))
new.append(np.random.randint(operation_count))
new.append(np.random.choice(mc_op))
ret.append(new)
return ret
gen_population(population_size, max_sublot, mc_op, job_count)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.