• 大小: 7.45KB
    文件类型: .py
    金币: 1
    下载: 0 次
    发布日期: 2021-03-26
  • 语言: 其他
  • 标签: 其他  

资源简介


遗传算法的python实现(二进制编码),适用于python3.x环境,有详细的注释和两个给出的测试函数。

资源截图

代码片段和文件信息

import numpy as np
import matplotlib.pyplot as plt

from math import sincospiceillog
from mpl_toolkits.mplot3d import axes3d
from functools import reduce
from itertools import accumulate
from bisect import bisect_right
from copy import deepcopy

import warnings
warnings.filterwarnings(‘error‘)


def select_fun_lunpan(individuals):
    ‘‘‘
    选出双亲,根据适应度值,每次只选出一对。
    父系为选择较优个体,母系可以认为是随机选择
    ‘‘‘
    ‘‘‘
    初始化赌轮
    ‘‘‘
    #归一化每个个体的适应度值
    fitness =[indv.fitness for indv in individuals]
    min_fitness = min(fitness)
    fitness = [(f - min_fitness) for f in fitness]

    #创建赌轮
    sum_fitness = sum(fitness)
    if sum_fitness == 0:
        wheel = list(accumulate([1/len(fitness) for f in range(len(fitness))]))
    else:
        wheel = list(accumulate([f/sum_fitness for f in fitness]))
    
    #选择合适的双亲
    father_idx = bisect_right(wheel np.random.uniform(0wheel[-1]))
    father = individuals[father_idx]
    rand_idx = np.random.randint(

评论

共有 条评论