导语:
本文主要介绍了关于python轮盘赌算法如何使用的相关知识,包括python循环报数游戏,以及用python玩转数据这些编程知识,希望对大家有参考作用。
说明
1.轮盘算法的本质是可以根据个人适应度随机选择。
2.个体适应度越大,选择的概率越高,群体规模越大,算法能更真实地模拟自然状态。
实例
def select(chromosome_list, fitness_list):
"""
选择(轮盘赌算法)
:param chromosome_list: 二维列表的种群
:param fitness_list: 适应度列表
:return: 选择之后的种群列表
"""
population_fitness = np.array(fitness_list).sum() # 种群适应度
fit_ratio = [i / population_fitness for i in fitness_list] # 每个个体占种群适应度的比例
fit_ratio_add = [0] # 个体累计概率
for i in fit_ratio:
fit_ratio_add.append(fit_ratio_add[len(fit_ratio_add) - 1] + i) # 计算每个个体的累计概率,并存放到fit_ratio_add中
fit_ratio_add = fit_ratio_add[1:] # 去掉首位的0
rand_list = [random.uniform(0, 1) for _ in chromosome_list] # 生成和种群规模相等的随机值列表,用于轮盘赌选择个体
rand_list.sort()
fit_index = 0
new_index = 0
new_population = chromosome_list.copy()
'''个体选择 start'''
while new_index < len(chromosome_list):
if rand_list[new_index] < fit_ratio_add[fit_index]:
new_population[new_index] = chromosome_list[fit_index]
new_index = new_index + 1
else:
fit_index = fit_index + 1
'''个体选择 end'''
return new_population
本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python如何判断读取的txt文件是否存在12/16
- ♥ 如何在python中找到不定积分08/26
- ♥ pycharm如何引用Python包?11/26
- ♥ Python如何将图像转换为base64编码11/15
- ♥ 如何将元组和字典转换为python中的列表09/26
- ♥ python中的请求是什么09/01
内容反馈