• 大小: 2.29KB
    文件类型: .py
    金币: 1
    下载: 0 次
    发布日期: 2021-03-02
  • 语言: Python
  • 标签: 遗传  算法  

资源简介

遗传算法求sinx最大值

资源截图

代码片段和文件信息

# -*- coding: utf-8 -*-

import numpy as np
import matplotlib.pyplot as plt

# 适应度函数
def fitness(x):
    return np.sin( x)

# 个体类
class indivdual:
    def __init__(self):
        self.x = 0  # 染色体编码
        self.fitness = 0  # 适应度值

    def __eq__(self other):
        self.x = other.x
        self.fitness = other.fitness


# 初始化种群
def initPopulation(pop N):
    for i in range(N):
        ind = indivdual()
        ind.x = np.random.uniform(-10 10)
        ind.fitness = fitness(ind.x)
        pop.append(ind)

# 选择过程
def selection(N):
    # 种群中随机选择2个个体进行变异(这里没有用轮盘赌,直接用的随机选择)
    return np.random.choice(N 2)

# 结合/交叉过程
def crossover(parent1 parent2):
    child1 child2 = indivdual() indivdual()
    child1.x = 0.9 * parent1.x + 0.1 * parent2.x
    child2.x = 0.1 * parent1.x + 0.9 * parent2.x
    child1.fitness = fitness(child1.x)
    child2.fitness = fitness(child2.x)
    return child1 child2


# 变异过程
def mutation(pop):
    # 种群中随机选择一个进行变异

评论

共有 条评论