chjian 发表于 2024-7-15 18:35

多方针遗传算法python编程是用呢个框架更好一点啊?

deap还是geatpy更好呢?后面还想要优化神经网络参数,应该选、学习阿谁框架呢?

hshf007 发表于 2024-7-15 18:36

python:六种算法(RFO、SSA、WOA、GWO、PSO、GA)求解23个测试函数(python代码) - 知乎 (zhihu.com)

一、六种算法简介

1、红狐优化算法RFO

2、麻雀搜索算法SSA

3、鲸鱼优化算法WOA

4、灰狼优化算法GWO

5、粒子群优化算法PSO

6、遗传算法GA

二、6种算法求解23个函数

(1)23个函数简介



参考文献:
Yao X, Liu Y, Lin G M. Evolutionary programming made faster. IEEE transactions on evolutionary computation, 1999, 3(2):82-102.
(2)部分python代码

from FunInfo import Get_Functions_details
from WOA import WOA
from GWO import GWO
from PSO import PSO
from GA import GA
from SSA import SSA
from RFO import RFO
import matplotlib.pyplot as plt
from func_plot import func_plot
plt.rcParams['font.sans-serif']=['Microsoft YaHei']
#主程序
function_name =7 #测试函数1-23
SearchAgents_no = 50#种群大小
Max_iter = 100#迭代次数
lb,ub,dim,fobj=Get_Functions_details(function_name)#获取问题信息
BestX1,BestF1,curve1 = WOA(SearchAgents_no, Max_iter,lb,ub,dim,fobj)#问题求解
BestX2,BestF2,curve2 = GWO(SearchAgents_no, Max_iter,lb,ub,dim,fobj)#问题求解
BestX3,BestF3,curve3 = PSO(SearchAgents_no, Max_iter,lb,ub,dim,fobj)#问题求解
BestX4,BestF4,curve4 = GA(SearchAgents_no, Max_iter,lb,ub,dim,fobj)#问题求解
BestX5,BestF5,curve5 = SSA(SearchAgents_no, Max_iter,lb,ub,dim,fobj)#问题求解
BestX6,BestF6,curve6 = RFO(SearchAgents_no, Max_iter,lb,ub,dim,fobj)#问题求解
#画函数图
func_plot(lb,ub,dim,fobj,function_name)#画函数图
#画收敛曲线图
Labelstr=['WOA','GWO','PSO','GA','SSA','RFO']
Colorstr=['r','g','b','k','c','m']
if BestF1>0:
    plt.semilogy(curve1,color=Colorstr,linewidth=2,label=Labelstr)
    plt.semilogy(curve2,color=Colorstr,linewidth=2,label=Labelstr)
    plt.semilogy(curve3,color=Colorstr,linewidth=2,label=Labelstr)
    plt.semilogy(curve4,color=Colorstr,linewidth=2,label=Labelstr)
    plt.semilogy(curve5,color=Colorstr,linewidth=2,label=Labelstr)
    plt.semilogy(curve6,color=Colorstr,linewidth=2,label=Labelstr)
else:
    plt.plot(curve1,color=Colorstr,linewidth=2,label=Labelstr)
    plt.plot(curve2,color=Colorstr,linewidth=2,label=Labelstr)
    plt.plot(curve3,color=Colorstr,linewidth=2,label=Labelstr)
    plt.plot(curve4,color=Colorstr,linewidth=2,label=Labelstr)
    plt.plot(curve5,color=Colorstr,linewidth=2,label=Labelstr)
    plt.plot(curve5,color=Colorstr,linewidth=2,label=Labelstr)


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()
#





(3)部分结果






























三、完整python代码

python:六种算法(RFO、SSA、WOA、GWO、PSO、GA)求解23个测试函数(python代码) - 哔哩哔哩 (bilibili.com)

awdrgyjil 发表于 2024-7-15 18:37

<a href="http://www.zhihu.com/zvideo/1674372230942191616" data-draft-node="block" data-draft-type="link-card">

junmeng 发表于 2024-7-15 18:37

https://www.zhihu.com/equation?tex=%7B%5Ccolor%7Bred%7D%7B%E6%88%91%E6%98%AF%E5%9C%9F%E8%B1%86%EF%BC%8C%E6%88%91%E6%9D%A5%E5%9B%9E%E7%AD%94%7D%7DDeap和geatpy框架都是常用的Python多目标遗传算法框架。
它们都具有各自的优缺点,因此选择哪个框架取决于您的需求和偏好。
下面是一些关于这两个框架的基本信息和优缺点的比较:

[*]Deap框架:Deap是一个开源的Python框架,专门用于构建和评估各种遗传算法。它提供了广泛的遗传算法和进化计算工具包,包括多目标优化、遗传编程、进化策略和差分进化等。
优点:

[*]Deap提供了丰富的文档和示例,易于学习和使用。
[*]Deap具有灵活的架构,可以自定义算法和评估函数。
[*]Deap提供了丰富的优化算法,包括NSGA-II、MO-CMA-ES、IBEA等。
[*]Deap具有高效的数据结构和算法实现,支持并行计算。
缺点:

[*]Deap缺乏对复杂问题的特定优化算法和策略支持。
[*]Deap的并行计算需要一定的编程和调试技巧。

[*]geatpy框架:geatpy是一个基于Python的遗传算法框架,专门用于多目标优化和约束优化问题。它提供了多种遗传算法和进化计算工具包,包括NSGA-II、NSGA-III、MOEAD等。
优点:

[*]geatpy提供了许多经典的多目标优化算法和工具,易于使用。
[*]geatpy具有良好的性能和稳定性,适用于大规模优化问题。
[*]geatpy提供了可视化工具和优化结果分析工具。
缺点:

[*]geatpy的文档和示例相对较少,不够全面和详细。
[*]geatpy的架构相对较死板,不够灵活和可扩展。
综上所述,如果您需要一个灵活和可扩展的框架,并且需要定制和实现自己的遗传算法和评估函数,那么Deap可能是更好的选择。如果您更关注性能和稳定性,并且只需要使用经典的多目标优化算法,则geatpy可能更适合您的需求。
Deap和geatpy框架都可以用于优化神经网络参数。它们都提供了基本的遗传算法和进化计算工具包,可以用于解决多种优化问题,包括神经网络参数优化问题。
如果您只是想要用基本的遗传算法来优化神经网络参数,那么选择哪个框架都可以。但是,如果您需要解决更复杂的问题,例如多目标优化、约束优化、大规模优化等,则Deap框架可能更适合您的需求。相比之下,geatpy框架更适用于多目标优化问题。
不过,需要指出的是,使用遗传算法来优化神经网络参数只是一种方法,而且不一定是最优的方法。现在有很多其他的优化算法和方法可以用于神经网络参数优化,例如梯度下降法、共轭梯度法、牛顿法等。因此,您可能需要考虑其他方法,并选择适合您问题的最佳算法。

zzjj296 发表于 2024-7-15 18:38

使用什么框架本身差别不大,演化算法本身框架的学习成本都不会太高,不过我两年前的记忆是geatpy不能在macos上运行,仅这点差异而已。
如果是基于DEAP,可以参考下我几年前的基于DEAP的一些博客,从框架内的函数到多目标优化的实现都有涉及:
基于DEAP库的Python进化算法从入门到入土--(六)多目标遗传算法 NSGA-II
页: [1]
查看完整版本: 多方针遗传算法python编程是用呢个框架更好一点啊?