关于带约束的智能优化算法相关笔记

本文介绍了在使用智能优化算法时如何处理约束问题,包括罚函数法的应用,以及DEAP、sko和mealpy这三个库在约束处理上的特点。推荐sko库对于简单使用,DEAP库适合自定义遗传算法,而mealpy库则提供了丰富的算法选择和自定义惩罚函数选项。
摘要由CSDN通过智能技术生成

1.约束的处理

        实际问题或者项目通常是带有一定约束的优化问题,我在做一个材料方面的体系设计时,利用deap去进行体系的优化,当时没有了解约束的问题,只是觉得优化的结果不符合原子百分比之和为100的要求,所以对交叉函数和变异函数进行了自定义,虽然结果还可以,但始终觉得优化的有些问题,最近在比较不同基础优化算法的优化结果及效率时,才发现约束可以通过惩罚函数施加,部分库也提供了一些参数进行来引入约束函数。

        约束的处理方式比较多,可以分为罚函数法、可行性法则、随机排序法、ᴈ-约束处理法、多目标优化法、混合法等 6 类。其中最简单的应该就是罚函数法了。

具体方式可以参见“小怪兽会微笑”博主的文章,链接在下面:

http://t.csdnimg.cn/Tw2rq

2.相关库的约束

        在使用智能优化算法时,可供参考的库有不少,大家也都可以搜到,这里只讲讲三个库,DEAP库,sko库以及mealpy库。

2.1.1 deap库

        deap主要是针对遗传算法的,遗传算法的各个部分都可以自定义,我之前做的就是初始种群,交叉函数,变异函数的自定义。它的约束是通过装饰器实现的,但实际上,也可以从下面文章中看出,对于静态约束,直接在适应度函数中添加惩罚项,也就不需要再用到装饰器了。

”哎呦-_-不错”博主给出了示例。

基于DEAP库的python进化算法-6.遗传算法中的约束处理_deap 因子-CSDN博客()http://t.csdnimg.cn/hnre0

2.1.2 sko库

        sko库包含几个比较常见的智能优化算法,比如遗传算法,粒子群,模拟退火,差分进化等,sko也有约束的关键字,可以在官网的文档查看相关输入及输出。同样有博主给出了相关示例。

”guofei9987"博主的文章:

http://t.csdnimg.cn/hnre0

2.1.3 mealpy库

        mealpy库包含的智能优化算法很多,共计215个算法,只是mealpy库建议用户自定义一个惩罚函数。示例官网上有,我也懒得写。

3.总结

        实际上,罚函数可以直接通过适应度函数进行构建(如死亡惩罚,静态惩罚),或者在算法迭代过程中构建(如动态惩罚,自适应惩罚等),并不一定需要官方提供相应的功能或者关键字输入。

        上面的三个库我都是简单的使用了一下,说一下想法。如果你只是单纯的使用智能优化算法,不需要各种算法比较,可以直接用sko的库,很简单。如果你需要做遗传算法的自定义,DEAP库不错,如果需要了解各种不同智能优化算法并进行对比,mealpy库是个不错的选择(相关问题在github上还有作者回答,十分感谢)。

  • 18
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值