Allenfenqu/select.py

29 lines
1.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import numpy as np
import random
def select(individuals, sizepop):
# 本函数对每一代种群中的染色体进行选择,以进行后面的交叉和变异
# individuals input : 种群信息
# sizepop input : 种群规模
# opts input : 选择方法的选择
# ret output : 经过选择后的种群
# yuan=individuals;
individuals['fitness'] = 1 / individuals.get('fitness')
sumfitness = np.sum(individuals.get('fitness'))
sumf = individuals.get('fitness') / sumfitness
index = []
for i in range(sizepop): # 转sizepop次轮盘
pick = random.random()
while pick == 0:
pick = random.random()
for j in range(sizepop):
pick = pick - sumf[j]
if pick < 0:
index.append(j)
break # 寻找落入的区间此次转轮盘选中了染色体i注意在转sizepop次轮盘的过程中有可能会重复选择某些染色体
# index=unique(index);
# individuals=yuan;
individuals['chrom'] = individuals.get('chrom')[index, :]
individuals['fitness'] = individuals.get('fitness')[index]
ret = individuals
return ret