遗传算法helloworld级别的python实现(结果可视化)

问题描述:

用遗传算法求使得F(X)最大的X,问题来源:莫烦的python教程之遗传算法

最终效果:

遗传算法helloworld级别的python实现(结果可视化)_第1张图片
population进化的过程.gif
import numpy as np
import matplotlib.pyplot as plt


DNA_SIZE = 10
POP_SIZE = 100
CROSS_RATE = 0.8
N_GENERATIONS = 400
X_BOUND = [0,5]
MUTATE_RATE = 0.003

def F(x) : return np.sin(10*x)*x + 2*np.cos(x)

def translateDNA(pop):
    return pop.dot(2  ** np.arange(DNA_SIZE)[::-1]) /  float(2**DNA_SIZE-1) * X_BOUND[1]


def mutate(child):
    for point in range(DNA_SIZE):
        if np.random.rand() < MUTATE_RATE :
            #注意三目运算符的写法
        
            child[point] = 0 if child[point] == 1 else 1
    return child

def crossover(parent,pop):
    if np.random.rand()

你可能感兴趣的:(遗传算法helloworld级别的python实现(结果可视化))