本框架提供了有关粒子群算法(PSO)和遗传算法(GA)的完整实现,以及一套关于改进、应用、测试、结果输出的完整框架。
本框架对粒子群算法与遗传算法进行逻辑解耦,对其中的改进点予以封装,进行模块化,使用者可以采取自己对该模块的改进替换默认实现组成新的改进算法与已有算法进行对比试验。
试验结果基于Excel文件输出,并可通过设定不同的迭代结束方式选择试验数据的输出方式,包括:1.输出随迭代次数变化的平均达优率数据(设定终止条件区间大于0)。
2.输出随迭代次数变化的平均最优值数据(设定终止条件区间等于0)。
本框架了包含了常用基准函数的实现以及遗传算法与粒子群算法对其的求解方案实现和对比,如TSP,01背包,Banana函数,Griewank函数等。
并提供大量工具方法,如KMeans,随机序列生成与无效序列修补方法等等。
对遗传算法的二进制编码,整数编码,实数编码,整数序列编码(用于求解TSP等),粒子群算法的各种拓扑结构,以及两种算法的参数各种更新方式均有实现,并提供接口供使用者实现新的改进方式并整合入框架进行试验。
其中还包括对PSO进行离散化的支持接口,和自己的设计一种离散PSO方法及其用以求解01背包问题的实现样例。
欢迎参考并提出宝贵意见,特别欢迎愿意协同更新修补代码的朋友(邮箱starffly@foxmail.com)。
代码已作为lakeast项目托管在GoogleCode:http://code.google.com/p/lakeasthttp://code.google.com/p/lakeast/downloads/list某些类的功能说明:org.lakest.common中:BoundaryType定义了一个枚举,表示变量超出约束范围时为恢复到约束范围所采用的处理方式,分别是NONE(不处理),WRAP(加减若干整数个区间长度),BOUNCE(超出部分向区间内部折叠),STICK(取超出方向的最大限定值)。
Constraint定义了一个代表变量约束范围的类。
Functions定义了一系列基准函数的具体实现以供其他类统一调用。
InitializeException定义了一个代表程序初始化出现错误的异常类。
Randoms类的各个静态方法用以产生各种类型的随机数以及随机序列的快速产生。
Range类的实现了用以判断变量是否超出约束范围以及将超出约束范围的变量根据一定原则修补到约束范围的方法。
ToStringBuffer是一个将数组转换为其字符串表示的类。
org.lakeast.ga.skeleton中:AbstractChromosome定义了染色体的公共方法。
AbstractDomain是定义问题域有关的计算与参数的抽象类。
AbstractFactorGenerator定义产生交叉概率和变异概率的共同方法。
BinaryChromosome是采用二进制编码的染色体的具体实现类。
ConstantFactorGenerator是一个把交叉概率和变异概率定义为常量的参数产生器。
ConstraintSet用于在计算过程中保存和获取应用问题的各个维度的约束。
Domain是遗传算法求解中所有问题域必须实现的接口。
EncodingType是一个表明染色体编码类型的枚举,包括BINARY(二进制),REAL(实数),INTEGER(整型)。
Factor是交叉概率和变异概率的封装。
IFactorGenerator参数产生器的公共接口。
Population定义了染色体种群的行为,包括种群的迭代,轮盘赌选择和交叉以及最优个体的保存。
org.lakeast.ga.chromosome中:BinaryChromosome二进制编码染色体实现。
IntegerChromosome整数编码染色体实现。
RealChromosome实数编码染色体实现。
SequenceIntegerChromosome整数序列染色体实现。
org.lakeast.pso.skeleton中:AbstractDomain提供一个接口,将粒子的位置向量解释到离散空间,同时不干扰粒子的更新方式。
AbstractF
2024/10/11 21:51:28 1.42MB 遗传算法 粒子群算法 GA PSO
1
《模拟CMOS集成电路设计》介绍模拟CMOS集成电路的分析与设计。
从直观和严密的角度阐述了各种模拟电路的基本原理和概念,同时还阐述了在SOC中模拟电路设计遇到的新问题及电路技术的新发展。
《模拟CMOS集成电路设计》由浅入深,理论与实际结合,提供了大量现代工业中的设计实例。
全书共18章。
前10章介绍各种基本模块和运放及其频率响应和噪声。
第11章至第13章介绍带隙基准、开关电容电路以及电路的非线性和失配的影响,第14、15章介绍振荡器和没相环。
第16章至18章介绍MOS器件的高阶效应及其模型、CMOS制造工艺和混合信号电路的版图与封装。
2024/10/10 1:12:34 15.96MB CMOS
1
随着区块链技术的发展,各种具有不同特点、适用于不同应用场景的区块链如比特币、以太坊等公有链以及私有链、联盟链大量共存.由于区块链的相互独立性,现存各区块链之间的数据通信、价值转移仍面临挑战,价值孤岛现象逐渐显现.区块链的跨链技术是区块链实现互联互通、提升可扩展性的重要技术手段.对跨链技术领域的成果进行了系统总结:首先,分析了跨链技术的需求及面临的技术难点;其次,总结了正在发展的跨链技术,并介绍了24种主流跨链技术的原理与实现思路;然后,综合分析了跨链技术存在的安全性风险,并列举了12项主要问题;最后,总结探讨了跨链技术的未来发展趋势.
2024/10/9 12:43:58 1.15MB 区块链 跨链技术 文献论文
1
Powell算法原理以及相关代码,里面有一个讲解Powell算法的pdf和两个代码,分别是基本Powell和改进Powell,一维搜索方法为黄金分割法,搜索区域获取为进退法。
含大量注释,自学编写的,用于解pdf里面的方程。
如果有问题,请及时联系我,谢谢!!!
2024/10/9 9:47:21 136KB Powell算法 原理 代码 代码注释
1
代码行数统计工具,识别c/c++、js、Java、.net等大量编程语言,无需安装,直接命令行操作。
2024/10/8 0:13:35 8.98MB 行数统计 代码统计
1
使用VisualStudio2013的MFC单文档开发简单的俄罗斯方块游戏,适合初学者。
包含大量注释和XMind思维导图辅助理解。
2024/10/7 8:03:36 521KB MFC C++ 俄罗斯方块 游戏
1
新添加/重写的功能:1.已实现简单的剪切/复制/粘贴功能(尚不能和外界程序交互)2.添加创建新文件夹功能3.添加选择全部/文件/文件夹功能4.增加对创建新文件夹,重命名,删除,粘贴操作的异常处理5.FileUtil中增加getFileCentent方法,用于读取文本文件内容6.重写AboutDialog7.重写ExitAction8.重写FileUtil中doPaste()方法,显著提高速度,修正拷贝文件时会导致文件不正常的严重Bug9.修正其他部分已发现Bug10.版本号升级为0.5尚未实现的功能:1.与外界程序的交互2.拖拽3.国际化4.输入文件名时对特殊字符的验证################17/12/2007更新###################新添加/重写的功能:1.排序功能已加入菜单栏和弹出菜单2.重写图标载入方法,已经可以实现图标动态载入和识别3.重写TableViewer中tableColumn生成载入方法,已经可以实现tablecolumn的半动态载入和识别4.实现动态识别文件类型5.进行删除操作时,对删除的文件进行识别6.更新添加了一些FileUtil中的方法,并且把这个类的注释写的差不多了--注意:1.icons文件夹内的文件结构有变化。
2.jar文件没有更新,如果需要打好包的jar文件请等我把功能都实现后的那个版本--尚未实现的功能:1.剪切/复制/粘贴功能2.拖拽功能3.详尽的注释4.异常处理5.国际化################14/12/2007更新###################已经实现的基本功能:1.树形浏览结构2.双击运行程序/进入下一级菜单目录3.返回上一级菜单4.重命名5.刷新6.删除7.按文件名/大小/类型/最后修改日期排序8.对当前文件夹进行过滤操作9.对当前文件夹的简要统计尚未实现的功能:1.剪切/复制/粘贴2.拖拽3.弹出菜单中的排序选项4.动态识别文件类型5.详尽的注释已知的Bug:1.TreeViewer进行目录切换时,TableViewer窗体有时会变成空白2.有特殊字符的过滤操作将导致异常3.重命名没有考虑特殊字符4.有大量文件(几百个以上)的目录会打开的很慢5.文件删除失败时没有提示######新添加/重写的功能:1.已实现简单的剪切/复制/粘贴功能(尚不能和外界程序交互)2.添加创建新文件夹功能3.添加选择全部/文件/文件夹功能4.重写AboutDialog5.增加对创建新文件夹,重命名,删除,粘贴操作的异常处理6.重写ExitAction7.修正部分已发现Bug尚未实现的功能:1.与外界程序的交互2.拖拽3.国际化4.输入文件名时对特殊字符的验证
2024/10/6 18:41:21 164KB jExplorer SWT 文件浏览器
1
weka是一款由Waikato大学研究的基于Java的用于数据挖掘和知识发现的开源项目,其中集成了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理、关联规则挖掘、分类、聚类等,并提供了丰富的可视化功能。
同时,由于其是一款开源软件,所以也可以用于数据挖掘的二次开发和算法研究。
文章介绍了利用开源软件WEKA作为数据挖掘工具,通过Apriori算法,对高校图书馆流通历史数据进行挖掘分析。
2024/10/6 14:17:03 166KB 数据挖掘实例 weka 关联规则算法
1
随机并行梯度下降算法(SPGD)是一种基于直接性能指标优化的相位控制方法,在自适应光学中有较好的适用性。
该算法主要包含增益系数和随机扰动幅度两个可变参数,其取值对算法收敛性有很大的影响。
对双边SPGD算法实现收敛时参数的取值要求进行研究,结合算法原理分析了算法参数的取值范围,并通过大量仿真实验找出所有使双边SPGD算法收敛的增益系数和随机扰动幅度值;得到随机扰动幅度的取值下限,理论和仿真分析了下限存在的原因及取值;在相干合成中存在相位噪声,研究了不同相位校正器参数的情况下可使算法收敛的参数的取值范围。
1
现在图像处理技术已经应用于多个领域当中,其中,纸币识别,车牌识别,文字识别和指纹识别已为大家所熟悉。
图像分割是一种重要的图像技术,它不仅得到了人们的广泛重视和研究,也在实际中得到了大量的应用。
它是处理图像的基本问题之一,是图像处理图像分析的关键步骤。
图像识别的基础是图像分割,其作用是把反映物体真实情况的,占据不同区域的,具有不同性质的目标区分开来,并形成数字特性。
关于图像分割的方法已有上千种,本文将介绍几种主流的方法,并分析各自的特性,利用LabVIEW平台实现两种阈值方法分割图像,展现实验现象,比较两种方法的处理结果。
2024/10/6 3:39:13 899KB labvie 图像分割 二值化
1
共 1000 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡