差分进化代码

import random
import numpy as np


def differential_evolution(func, bounds, popsize=20, mutation=0.5, recombination=0.7, maxiter=100, tol=1e-7):
    """
    差分进化算法

    参数:
    - func: 目标函数
    - bounds: 变量边界,一个列表,每个元素是一个二元组,表示该变量的取值范围
    - popsize: 种群大小
    - mutation: 变异率
    - recombination: 交叉概率(交叉算子)
    - maxiter: 最大迭代次数
    - tol: 收敛阈值

    返回值:
    - best_solution: 最优解
    - best_fitness: 最优解的适应度值
    """
    dim = len(bounds)  # 粒子的维度
    pop = np.random.rand(popsize, dim)  # 随机生成20个个体对应的20个0-1之间的随机数
    print(pop,"随机数")
    min_b, max_b = np.array(bounds).T  # [-20 -20] min-b   [20 20] max-b 求出每个个体每一维的最大最小值
    diff = max_b - min_b
    pop_denorm = min_b + pop * diff  # 种群初始化的公式,用于将种群的解向量进行反归一化处理
    print(pop_denorm,"初始种群")
    fitness = np.asarray([func(ind) for ind in pop_denorm])  # 计算每个个体的适应度值
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值