python萤火虫算法_FA:萤火虫算法的测试及Python实现

一、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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566998.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android pdf阅读器开发_如何在 Windows 10 中将 Firefox 设置为默认 PDF 阅读器

PDF 作为办公一族中的必备文档,很多人都会编辑或者创建 PDF 文档,而在 Windows 系统中并没有默认的 PDF 阅读器。而在新版的 Microsoft Edge微软已在开始提供有真正的高级 PDF 控件,从而使用户可以正常使用文档而无需其他专用 PDF 阅读器应用…

shell脚本和python脚本和go脚本的区别_Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例-Go语言中文社区...

NodeJS 子进程提供了与系统交互的重要接口,其主要 API 有:1)标准输入、标准输出及标准错误输出的接口;child.stdin 获取标准输入child.stdout 获取标准输出child.stderr 获取标准错误输出2)获取子进程的PID:child.pid提供生成子进…

js文件中怎么使用thymeleaf标签_007、Spring Boot集成Thymeleaf模板引擎

1. Thymeleaf 介绍Thymeleaf 是适用于 Web 和独立环境的现代服务器端 Java 模板引擎。Thymeleaf 的主要目标是为您的开发工作流程带来优雅的自然模板 - 可以在浏览器中正确显示的HTML,也可以用作静态原型,从而在开发团队中实现更强大的协作。 以上翻译自…

python删除txt指定内容_正则表达式使用python从文件中过滤和删除特定的多行文本...

我正在编写一个python工具来处理一组文件.该工具将由其他用户而非我使用. 文件类似于以下格式: #Text which I want to keep intact #Lots of text #Lots and lots of text #Lots and lots and lots of other text #Then in-between the file I have text in this f…

java英语词汇_java常用的英语单词

java常用的英语单词神秘的jave应该记住的英语单词有哪些呢?单词这么多,小编表示也很困扰。不过小编还是为大家整理出来了一些jave常用的英语单词,减轻大家负担。public[pʌblik] 公共的,公用的static[sttik] 静的;静态的;静止的void:[vɔid]…

python语言中包含的标准数据类型_python标准数据类型(笔记一)

关于python,它是一种解释型,面对对象,带有动态语义的高级程序设计语言。 之前学习python的时候,简单的将python的基础内容过了一遍,然后在工作中需要用到什么就相应的去加深某一模块的需求以及应用,总觉得基…

java app接口安全认证_关于接口安全认证方式

一.AccessKey&SecretKey (开放平台)1、请求身份为开发者分配AccessKey(开发者标识,确保唯一)和SecretKey(用于接口加密,确保不易被穷举,生成算法不易被猜测)。2、防止篡改参数签名:(1)按照请求参数名的字母升序排列非空请求参…

python怎么输入一个数字并调用_python如何直接输入上一句话,如何快速打出上一句话...

如何快速打出上一句话 用搜狗或者QQ拼音打字法,里面有设置快捷键输入语就行了。 Python,怎么在输入非数字时,输出一句话 Python提供2113了两个内置函数从标准输入5261读入一行文本,默4102认的标准输入是键盘。如下:165…

python 打卡程序_如何用python实现腾讯文档自动打卡并定时执行

最近学了些Web,了解了一些selenum包内函数使用,就写了下自动健康打卡,并用windows任务计划程序定时执行,健康打卡这个针对特定网站,所以对于通用化使用倒没有太大用处,但关于腾讯文档如何填写,因…

mysql查询今天_昨天_7天_近30天_本月_上一月 数据_(转载)mysql查询今天、昨天、7天、近30天、本月、上一月数据...

查询今天select * from 表名 where to_days(时间字段名) to_days(now());昨天SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) < 17天SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) < date(时间字段名)近30天SELECT * FROM 表名 w…

python3实用编程技巧_6.python3实用编程技巧进阶(一)

1.1.如何在列表中根据条件筛选数据# 1.1.如何在列表中根据条件筛选数据 data [-1, 2, 3, -4, 5] #筛选出data列表中大于等于零的数据 #第一种方法&#xff0c;不推荐 res1 [] for x in data: if x > 0: res1.append(x) print(res1) #第二种用列表解析&#xff0c;推荐使用…

java中小数类型_java中小数属于什么类型的数据

展开全部小数属于浮点型(默认为double)。浮点型代表的是实数&#xff0c;其实就是包含小数的部分。也知道现实世界中是由32313133353236313431303231363533e59b9ee7ad9431333337396362很多复杂的数据的&#xff0c;所以需要这种表示实数的数据类型的支持。一、浮点型常量Java的…

springboot test_精益求精!Spring Boot 知识点全面回顾,带你重新细读源码!

作者&#xff1a;cyd_0619原文&#xff1a;https://blog.csdn.net/cyd_0619约定优于配置Build Anything with Spring Boot&#xff1a;Spring Boot is the starting point for building all Spring-based applications. Spring Boot is designed to get you up and running as …

事物日志恢复 mysql_浅谈SQL Server中的事务日志(五)----日志在高可用和灾难恢复中的作用...

本篇文章是系列文章中的第五篇&#xff0c;是对前一个日志系列的补充篇。如果您对日志的基本概念还没有一个比较系统的了解&#xff0c;可以参看本系列之前的文章&#xff1a; 浅谈SQL Server中的事务日志(一)----事务日志的物理和逻辑构架 浅谈SQL Server中的事务日志(二)----…

select count(*) from返回的类型_数据分析面试题类型汇总

1 简单查询- 基本的查询语句&#xff1a;select <列名> from 表名 where 条件- where 后的条件需要标量&#xff0c;不可以使用集合&#xff0c;若与关联子查询连用可用&#xff1b;可使用逻辑运算符连接多个条件&#xff1a;between、and、or、in&#xff08;&#xff0…

configurationproperties_【Springboot】注解@ConfigurationProperties让配置整齐而简单

1 简介前面我们用一篇文章《【Spring】只想用一篇文章记录Value的使用&#xff0c;不想再找其它了(附思维导图)》详细讲解了在Spring中如何使用Value来实现我们对配置的需求&#xff0c;它功能强大、使用方便。但它也是有它的局限性的&#xff0c;比如对于邮件服务&#xff0c;…

dmo Java_java DMO及增删改查代码的自动生成

在web开发过程中&#xff0c;尤其是后台管理系统的开发中&#xff0c;少不了增删改成的基础操作&#xff0c;原来我自己的做法是一份一份的拷贝粘贴&#xff0c;然后修改其中的不同&#xff0c;然而这样既枯燥无味又浪费了大量的时间&#xff0c;所以根据自己项目结构的特点写了…

if __name__ == __main___一文带你弄懂python中if __name__ == #39;__main__#39;

我们在python模块那章节的学习&#xff0c;有所接触到if __name__ __main__这个概念。当时我们只是大概描述了一番&#xff0c;不少伙伴还是有所困惑&#xff0c;今天就让我们通过实际例子去讲解这条语句到底有何含义。一个python文件有两种用途&#xff0c;一种被当主程序、脚…

java 生成apk包_Eclipse导出安卓apk文件的图文教程

安装到Android手机上的apk需要签名&#xff0c;本文描述了如何创建自己的签名及从Eclipse中导出apk。方法/步骤1、在Eclipse中选择一个Android工程&#xff0c;然后点击鼠标右键菜单中的“Export”&#xff1a;2、选择“Android”->;“Export Android Application”&#xf…

营业执照在线生成_平罗县实现个体户营业执照“秒批”

近日平罗县市场监管局注册登记窗口推出个体工商户“秒批”系统。今后&#xff0c;75%个体户常见经营项目可实现5分钟内乃至数秒无人工干预智能审批。01 一是实现智能化审批。平罗县市场监管局登记注册窗口依托自治区系统升级改造&#xff0c;推行企业设立登记标准化和智能化。…