遗传算法--函数最值问题

利用遗传算法计算函数最值

在对人工智能的学习过程中,初次接触到遗传算法,在这里记录一下我的学习过程和一些思考。
以下是我学习和参考的资料,下文中涉及的问题、内容和求解方法均来源于以下资料:

关于利用遗传算法解决函数最值问题的相关博客
关于遗传算法原理的讲解

刚开始接触遗传算法时,我觉得很抽象,难以理解,但经过实际问题的演练后,逐渐明白了其中的一点点原理。特别是函数最值问题,可以形象地类比为种群在环境中的生存问题。在遗传算法中,确定适应度函数是非常关键的。针对函数最值问题,适应度函数可以简单地选择原函数,自变量则对应种群中的个体。在求最大值的问题中,函数值即对应个体的适应度,适应度越高的个体就越容易存活。每一轮的迭代过程中,适应度低的个体会被淘汰。同时,为了削减初始值对最终结果的影响,需设定个体突变的概率。简单来说,适应度对应函数值,适应度函数对应目标函数,个体染色体编码对应自变量的值,生存环境对应我们设计的筛选规则。下面开始解决一个小问题。

考虑以下函数:
在这里插入图片描述
在区间(0,9)求函数最大值。

以下是我学习参考的代码,在原代码(上文第一个链接)基础上做了一点点修改:

import numpy as np
import matplotlib.pyplot as plt

# 适应度函数,即目标函数
def fitness(x):
    return x + 10 * np.sin(5 * x) + 7 * np.cos(4 * x)

# 个体类
class indivdual:
    def __init__(self):    #初始化定义
        self.x = 0  # 染色体编码,自变量
        self.fitness = 0  # 适应度值,因变量

    def __eq__(self, other):  #赋值定义
        self.x = other.x
        self.fitness = other.fitness


# 初始化种群函数,N为种群内个体数,pop为种群
def initPopulation(pop, N):
    for i in range
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值