本框架提供了有关粒子群算法(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
一、用高级程序设计语言创建数据库。
具体包括:(1)实现SQL的建库语句,建立相应的数据库表,并填写数据字典。
(2)实现表模式的修改功能。
①能够为已建立的表添加属性。
②能够从已建立的表中删除属性。
(3)实现删除表功能。
(4)实现创建索引的功能。
(5)实现删除索引的功能。
二、使用java高级程序设计语言,实现SQL语句中的数据维护操作和查询操作。
(1)往已经创建的表中插入元组。
(2)从已经创建的表中删除元组。
(3)修改表中的数据。
(4)实现SELECT语句:①实现单表上的选择和投影操作。
②实现多表的连接操作。
③实现多表的选择、投影和连接的混合操作。
④实现索引关系的上述操作。
(5)用java语言实现启发式关系代数优化算法三、根据数据字典(DD)实现对数据库的完整性约束的机制
2024/10/9 4:56:56 266KB 数据库 DBMS 系统原理 课程设计
1
神经网络在处理非线性问题方面有着别的方法无法比拟的优势,而预测控制对于具有约束的卡边操作问题具有非常好的针对性,因此将神经网络与预测控制相结合,发挥各自的优势,对非线性、时变、强约束、大滞后工业过程的控制提供了一个很好的解决方法。
2024/9/19 8:35:36 2KB Ann Matlab
1
采用matlab语言编写,用于求解无约束最优化问题
2024/8/30 18:22:55 854B 共轭梯度法 最优化
1
用matlab模拟禁忌搜索算法,来求解VRP问题。
VRP是指一定数量的客户,各自有不同数量的货物需求,配送中心向客户提供货物,由一个车队负责分送货物,组织适当的行车路线,目标是使得客户的需求得到满足,并能在一定的约束下,达到诸如路程最短、成本最小、耗费时间最少等目的。
2024/8/28 19:03:55 508KB VRP
1
包里有几本关于EMIEMC的书籍,自已在学习过程中找的,不敢私藏,挺有用的。
下面是文档清单:产品电磁兼容性标准及整改措施.pdfEMIEMC设计讲座(一)PCB被动组件的隐藏特性解析.pdf高速数字电路设计及PCB的EMC设计.pdfEMIEMC设计秘籍.pdfPCB板的EMC问题.pdf高频开关电源的EMC控制.pdf静电放电原理.pdf电磁兼容性和PCB设计约束.pdf线路板(PCB)级的电磁兼容设计.pdf
2024/8/26 16:30:36 4.25MB EMI EMC 电路 高频
1
XilinxISE11.1的跑马灯程序,是基于Spartan-3AN入门板套件的,里面就两个关键文件,一个是verilog源文件(TestLED.v),一个用户约束文件TestLED.ucf(不是Spartan-3AN类型平台,对照你自己的板卡引脚说明文档相应修改即可),自己只需把这两个文件添加到工程中,然后综合,再创建bit下载文件,用iMpact烧录到器件中。
这是初学者学习FPGA非常直观的一个入门实例。
2024/8/25 19:22:47 47KB Xilinx ISE11.1 Spartan-3AN 跑马灯
1
包含了基于AnsysWoekbench的12个实例及模型,每个实例都详细讲解了建模、网格划分、施加约束和载荷、后处理等分析过程,分析类型包含了静力学校核、接触分析、模态分析、网划分策略等,是很好的入门和提升的实例教程。
2024/8/24 22:20:25 34.39MB 实例 模型 网格划分
1
编写了纯比例导引和扩展的带约束的比例导引规律,有利于初学者以及在比例导引律上进行各种改进。
2024/8/24 21:06:24 912B PNG BPNG
1
以下为两个m函数,分别是qpsubp和sqpm,其中qpsubp用于求解二次规划子问题,sqpm是用基于拉格朗日函数Hesse矩阵的SQP方法求解约束优化问题。
可以直接运行CalSQP,求解问题。
2024/8/21 20:07:07 64KB SQP Matlab源码
1
共 314 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡