python:差分进化算法(Differential Evolution,DE)求解23个测试函数(提供python代码)

一、差分进化算法

差分进化算法(Differential Evolution,DE)于1997年由Rainer Storn和Kenneth Price在遗传算法等进化思想的基础上提出的。差分进化思想来源即是早期提出的遗传算法(GeneticAlgorithm,GA),模拟遗传学中的杂交(crossover)、变异(mutation)、复制(reproduction)来设计遗传算子。差分进化算法相对于遗传算法而言,相同点都是通过随机生成初始种群,以种群中每个个体的适应度值为选择标准,主要过程也都包括变异、交叉和选择三个步骤。不同之处在于遗传算法是根据适应度值来控制父代杂交,变异后产生的子代被选择的概率值,在最大化问题中适应值大的个体被选择的概率相应也会大一些。而差分进化算法变异向量是由父代差分向量生成,并与父代个体向量交叉生成新个体向量,直接与其父代个体进行选择。显然差分进化算法相对遗传算法的逼近效果更加显著。差分进化算法原理:差分进化算法(Differential Evolution)-CSDN博客

二、差分进化算法求解23个函数

23个函数基本信息:

测试集:23组基本测试函数简介及图像(提供python代码)_IT猿手的博客-CSDN博客

部分代码:

from FunInfo import Get_Functions_details
from DE import DE
import matplotlib.pyplot as plt
#主程序
function_name =8 #测试函数1-23
SearchAgents_no = 50#种群大小
Max_iter = 100#迭代次数
lb,ub,dim,fobj=Get_Functions_details(function_name)#获取问题信息
BestX,BestF,curve = DE(SearchAgents_no, Max_iter,lb,ub,dim,fobj)#问题求解


#画收敛曲线图
if BestF>0:
    plt.semilogy(curve,color='b',linewidth=3,label='DE')
else:
    plt.plot(curve,color='b',linewidth=3,label='DE')
plt.xlabel("Iteration")
plt.ylabel("Fitness")
plt.xlim(0,Max_iter)
plt.title("F"+str(function_name))
plt.legend()
plt.savefig(str(function_name)+'.png')
plt.show()
print('\nThe best solution is:\n'+str(BestX))
print('\nThe best optimal value of the objective funciton is:\n'+str(BestF))

部分结果:

三、完整python代码

最近更新

  1. TCP协议是安全的吗?

    2023-12-08 16:08:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-08 16:08:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-08 16:08:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-08 16:08:03       18 阅读

热门阅读

  1. 阿里云轻量应用服务器的使用限制

    2023-12-08 16:08:03       38 阅读
  2. Gson与FastJson详解

    2023-12-08 16:08:03       24 阅读
  3. 【LeetCode】202. 快乐数

    2023-12-08 16:08:03       34 阅读
  4. 蓝桥杯ACwing习题

    2023-12-08 16:08:03       31 阅读
  5. Ubuntu下载离线包、安装离线包(dpkg)

    2023-12-08 16:08:03       45 阅读
  6. Ubuntu 在线 安装 Docker

    2023-12-08 16:08:03       35 阅读
  7. ubuntu22.04 怎么开启SSH服务

    2023-12-08 16:08:03       34 阅读