一、Python中传递函数

def Test(a,b):

print(a,b)

class TEST:

def __init__(self, FitnessFunction):

self.FitnessFunction = FitnessFunction

def initial(self):

self.FitnessFunction(1,2)

if __name__ == '__main__':

fa = TEST(Test)

fa.initial()

二、常用优化算法测试函数及实现

这里学到的两个小技巧是:

(1)np.linalg.norm()来求一范式和二范式

(2)累加、累成的便捷写法:reduce(lambda x,y: x+y, x_),当x_为[x1, x2, x3, x4]时,reduce这个函数相当于执行f(f(f(x1,x2),x3),x4),其中f(a, b)是由lambda创建的。

参考资料:https://zhidao.baidu.com/question/397090143281977845.html

def f1(x_): #Sphere

return np.linalg.norm(x_) ** 2

def f2(x_): #Schwefel 2.22

xa = reduce(lambda x,y: x*y, abs(x_))

xb = np.linalg.norm(x_, ord=1)

return xa + xb

def f3(x_): #Rosenbrock

xa = 100 * (x_[1:] - x_[:-1] * x_[:-1])

xb = (x_[:-1] - 1) * (x_[:-1] - 1)

return reduce(lambda x,y: x+y, xa+xb)

def f4(x_): #Step

return np.linalg.norm(np.floor(x_ + 0.5))

def f5(x_): #Schwefel 2.26

x_new = x_ * np.sin(np.sqrt(abs(x_)))

return reduce(lambda x,y: x+y, x_new)

def f6(x_): #Rastrigin

x_new = (x_ * x_) - (10 * np.cos(2 * np.pi * x_)) + 10

return reduce(lambda x,y: x+y, x_new)

def f7(x_): #Ackley

D = len(x_)

x_a = 20 * np.exp(-0.2 * np.sqrt(np.linalg.norm(x_)) / np.sqrt(D))

x_b = np.exp(reduce(lambda x,y: x+y, np.cos(2 * np.pi * x_)) / D)

return (20 - x_a) + (np.e - x_b)

def f8(x_): #Girewank

x_a = (np.linalg.norm(x_) ** 2)/4000

x_b = reduce(lambda x,y: x*y,

np.cos(x_ / np.array(range(1,len(x_)+1))))

return x_a - x_b + 1

这8个函数是目前主流的优化算法测试函数。

参考文献:[1]张哲辰,刘三阳.基于拓扑改进与交叉策略的萤火虫算法[J].计算机工程与应用,2019,55(07):1-8.

三、前人提出的萤火虫改进算法

目前知网最新的对萤火虫算法从拓扑结构上改进的文章是《基于拓扑改进与交叉策略的萤火虫算法》,它提出了以冯诺依曼拓扑结构来组织萤火虫,并以此确定更新路径时的对象,但是我觉得描述得比较模糊,没办法代码实现,所以这里不考虑。

主要参考这两篇:

[1]  Wang H,Wang W,Sun H,et al.Firefly algorithm with random attraction[J].International Journal of Bio-Inspired Computation,2016, 8 (1):33-41.

[2] Wang H,Wang W,Zhou X,et al.Firefly algorithm with neighborhood attraction[J].Information Sciences,2017, 382/383:374-387.

python萤火虫算法_FA:萤火虫算法的测试及Python实现相关推荐

  1. 优化算法笔记|萤火虫算法理解及实现

    萤火虫算法 一.萤火虫算法背景知识 二.萤火虫算法 三.萤火虫算法实现 四.算法分析 一.萤火虫算法背景知识 萤火虫算法(Firefly Algorithm, FA)是基于萤火虫的闪光行为,它是一种用 ...

  2. matlab智能算法之萤火虫算法

    智能算法之萤火虫算法 1.起源 2.萤火虫发光求偶 2.1 雌雄萤火虫 2.2 求偶过程 3.原理 3.1 闪光强度 3.2 吸引力 3.3 萤火虫移动 4.具体流程 1.起源 萤火虫群优化算法是20 ...

  3. 萤火虫算法_萤火虫算法(二)

    点击上方"蓝字"关注我们吧! 前面已经简单介绍了萤火虫算法,接下来详细介绍萤火虫算法. 天然萤火虫的行为天然萤火虫在寻找猎物.吸引配偶和保护领地时表现出惊人的闪光行为.萤火虫的吸引 ...

  4. 【智能优化算法】萤火虫优化算法 (Firefly algorithm,FA),2009

    前言 萤火虫优化算法(Firefly algorithm,FA).由英国剑桥大学的 Yang 等人于 2009 年提出,主要模拟了萤火虫根据个体亮度而相互吸引的行为.作为最新的群智能优化算法之一 , ...

  5. 群体智能优化算法之萤火虫算法(Firefly Algorithm,FA)

    获取更多资讯,赶快关注上面的公众号吧! 文章目录 第八章 萤火虫算法 8.1 介绍 8.2 天然萤火虫的行为 8.3 萤火虫算法 8.4 萤火虫算法改进 参考文献 第八章 萤火虫算法 8.1 介绍 萤 ...

  6. 【优化算法】萤火虫算法matlab

    萤火虫之间通过闪光来进行信息的交互,同时也能起到危险预警的作用.我们知道从光源到特定距离r处的光强服从平方反比定律,也就是说光强I随着距离 r 的增加会逐渐降低,此外空气也会吸收部分光线,导致光线随着 ...

  7. 优化算法之萤火虫算法(firefly algorithm)

    智能优化算法有很多是模仿自然界中的生物行为进行的,例如众所周知的粒子群算法.遗传算法等,最近新看到一种算法,萤火虫优化算法(firefly algorithm). FA主要是利用萤火虫发光的特点进行随 ...

  8. 小姐姐带你一起学:如何用Python实现7种机器学习算法(附代码)

    编译 | 林椿眄 出品 | AI科技大本营(公众号ID:rgznai100) [AI科技大本营导读]Python 被称为是最接近 AI 的语言.最近一位名叫Anna-Lena Popkes的小姐姐在G ...

  9. 用python解算法谜题_编程的乐趣 用Python解算法谜题

    这是一本介绍通过解决复杂谜题来学习编程的书,书中的代码用Python语言编写.与以往的编程书不同,本书将对代码功能的理解与编程语言语法和语义的理解分离开来,从解每个谜题开始,先给出解谜题的算法,随后用 ...

  10. matlab 随机森林算法_(六)如何利用Python从头开始实现随机森林算法

    博客地址:https://blog.csdn.net/CoderPai/article/details/96499505 点击阅读原文,更好的阅读体验 CoderPai 是一个专注于人工智能在量化交易 ...

最新文章

  1. html表格分页无插件,wordpress无插件实现单篇文章分页显示
  2. 第7章 实战演练:爬取百度百科1000个页
  3. Oracle数据库之SQL基础(一)
  4. A strange lift HDU - 1548(基础广搜)
  5. Java set的区别_java中List 和 Set 的区别
  6. 找到恶意软件包:Go 语言生态系统中的供应链攻击是怎样的?
  7. php框架 mysql拼接操作_PHP对数据库MySQL的连接操作
  8. python assertion failed_python - OpenCV错误:(-215:断言失败)!_src.empty()在函数'cvtColor'中 - 堆栈内存溢出...
  9. w3c 整站 php源码,W3C联盟系统 v1.3
  10. Rosalind第16题——ros_bio16_MPRT
  11. 完美解决 w10 设置 个性化 wifi 无法打开的问题
  12. python爬虫之静态网页——全国空气质量指数(AQI)爬取
  13. 时钟抖动(Jitter)的基本概念 【转载】
  14. 战略决定结构是什么意思?
  15. 计算机编制程序优化系统,优化计算机系统
  16. 电子邮件协议(SMTP协议,POP3协议)
  17. 用于(海康、大华等)录像机的WPF视频播放控件
  18. 问题 J: 鸡兔同笼(2级) 一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物。
  19. Egret 游戏开发:投篮
  20. C语言提高篇-数据结构

热门文章

  1. java oo 封装_Java从小白到入门,Day6。JAVAOO-封装
  2. java 查找排序_查找与排序算法(Java实现)
  3. php中cookie存的是什么,PHP中Cookie存在的作用和用法
  4. python多线程写同一个文件_Python多线程快速写入文件,python,飞速
  5. Spring Cloud Alibaba —— Sentinel 入门
  6. MySQL 优化 —— ORDER BY 优化
  7. MySQL 高级 —— 复合索引简介(多列索引)
  8. 设计模式---适配器设计模式
  9. python的数据库中间件_数据库中间件设计方案
  10. c语言中O空字符,OC语言中字符串的使用