本框架提供了有关粒子群算法(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
本文主要和大家分享如何在Android应用开发过程中如何进行单元测试,个人在做项目的过程中,觉得单元测试很有必要,以保证我们编写程序的正确性。
下面我们先大概了解下单元测试,以及单元测试的作用。
单元测试(又称为模块测试)是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。
程序单元是应用的最小可测试部件。
在过程化编程中,一个单元就是单个程序、函数、过程等;
对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。
单元测试是由程序员自己来完成,最终受益的也是程序员自己。
可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。
执行单元测
1
1.构件:是指语义完整,语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;
结构上,它是语义描述通信接口和实现代码的复合体。
2.构件模型:是对构件本质特征的抽象描述。
3.构件组装:是指将库中的构件经适当修改后相互连接,或者将它们与当前开发项目中的软件元素相连接,最终构成新的目标软件。
4.软件体系结构:HayesRoth认为软件体系结构是一个抽象的系统规范,主要包括用其行为来描述的功能构件和构件之间的相互连接、接口和关系。
5.面向服务体系结构(SOA):本质上是服务的集合,服务间彼此通信,这种通信可能是简单地数据传送,也可能是两个或更多的服务协调进行某些活动。
6.可靠性:是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统特性的基本能力。
7.可修改性:是指能够快速地以较高的性能价格比对系统进行变更的能力。
通常以某些具体的变更为基准,通过考察这些变更的代价衡量可修改性。
可修改性包括:可维护性、可扩展性、结构重组、可移植性。
8.敏感点:是一个或多个构件(和/或构件之间的关系)的特性。
9.权衡点:是影响多个质量属性的特性,是多个质量属性的敏感点。
10.软件产品线:就是在一个公共的软件资源集合基础上建立起来的共享同一个特性集合的系统集合。
11.框架:是封装了特定应用族抽象设计的抽象类的集合,框架又是一个模板,关键的方法和其他细节在框架实例中实现。
2024/9/6 9:24:18 839KB 软件体系结构
1
谭浩强-C++程序设计内容目录:第1篇基本知识第1章C++的初步知识*1.1从C到C++*1.2最简单的C++程序1.3C++程序的构成和书写形式1.4C++程序的编写和实现1.5关于C++上机实践第2章数据类型与表达式2.1C++的数据类型2.2常量2.3变量2.4C++的运算符2.5算术运算符与算术表达式2.6赋值运算符与赋值表达式2.7逗号运算符与逗号表达式第2篇面向过程的程序设计第3章程序设计初步3.1面向过程的程序设计和算法3.2C++程序和语句3.3赋值语句3.4C++的输入与输出3.5编写顺序结构的程序3.6关系运算和逻辑运算3.7选择结构和if语句3.8条件运算符和条件表达式3.9多分支选择结构和switch语句3.10编写选择结构的程序3.11循环结构和循环语句3.12循环的嵌套3.13break语句和continue语句3.14编写循环结构的程序第4章函数与预处理4.1概述4.2定义函数的一般形式4.3函数参数和函数的值4.4函数的调用*4.5内置函数*4.6函数的重载*4.7函数模板*4.8有默认参数的函数4.9函数的嵌套调用4.10函数的递归调用4.11局部变量和全局变量4.12变量的存储类别4.13变量属性小结4.14关于变量的声明和定义4.15内部函数和外部函数4.16预处理命令第5章数组5.1数组的概念5.2一维数组的定义和引用5.3二维数组的定义和引用5.4用数组名作函数参数5.5字符数组*5.6C++处理字符串的方法——字符串类与字符串变第6章指针6.1指针的概念6.2变量与指针6.3数组与指针6.4字符串与指针6.5函数与指针6.6返回指针值的函数6.7指针数组和指向指针的指针6.8有关指针的数据类型和指针运算的小结*6.9引用第7章自定义数据类型7.1结构体类型7.2共用体7.3枚举类型7.4用typedef声明类型第3篇基于对象的程序设计第8章类和对象8.1面向对象程序设计方法概述8.2类的声明和对象的定义8.3类的成员函数8.4对象成员的引用8.5类的封装性和信息隐蔽8.6类和对象的简单应用举例第9章关于类和对象的进一步讨论9.1构造函数9.2析构函数9.3调用构造函数和析构函数的顺序9.4对象数组9.5对象指针9.6共用数据的保护9.7对象的动态建立和释放9.8对象的赋值和复制9.9静态成员9.10友元9.11类模板第10章运算符重载10.1什么是运算符重载10.2运算符重载的方法10.3重载运算符的规则10.4运算符重载函数作为类成员函数和友元函数10.5重载双目运算符10.6重载单目运算符10.7重载流插入运算符和流提取运算符10.8不同类型数据间的转换第4篇面向对象的程序设计第11章继承与派生11.1继承与派生的概念11.2派生类的声明方式11.3派生类的构成11.4派生类成员的访问属性11.5派生类的构造函数和析构函数11.6多重继承11.7基类与派生类的转换11.8继承与组合11.9继承在软件开发中的重要意义第12章多态性与虚函数12.1多态性的概念12.2一个典型的例子12.3虚函数12.4纯虚函数与抽象类第13章输入输出流13.1C++的输入和输出13.2标准输出流13.3标准输入流13.4文件操作与文件流13.5字符串流
1
3.几何图形(满分50分)版本1:满分10分设计抽象类GeometricObject及其子类Triangle和Circle。
GeometricObject类设计要求如下:■一个名为color的Color类型的私有数据域,表示对象的颜色■一个名为filled的Boolean类型的私有数据域,表示对象是否■一个名为dateCreated的Date类型的私有数据域,表示对象的■一个无参构造方法。
■一个能创建特定color和filled的有参构造方法。
■相关数据域的访问器和修改器。
■两个个名为draw和erase的抽象方法。
■一个名为getArea的抽象方法。
■一个名为getPerimeter的抽象方法。
■重写toString方法。
Triangle类设计要求如下:■三个名为side1、side2和side3的double类型的私有数据域表们的默认值是1.0。
要求三个数据域保留2位小数。
■一个无参的构造方法创建默认三角形。
■一个能创建带指定side1、side2和side3的有参构造方法。
■所有三个数据域的访问器和修改器方法。
■父类抽象方法的实现。
■重写toString方法。
Circle类设计要求如下:■一个名为radius的double类型的私有数据域,表示圆的半径,数据域保留2位小数。
■一个名为PI的静态常量,其值为3.14■一个无参的构造方法创建默认三角形。
■一个能创建带指定radius的有参构造方法。
■radius数据域的访问器和修改器方法。
■父类抽象方法的实现。
■重写toString方法。
测试类TestGeometricObject1设计要求如下:■一个能随机生成Circle类和Triangle类对象的静态方法GeometricObject[]RandomCreateGeometricObject()■以随机生成的数组为参数,输出数组中每个对象的基本信息、周长和面积。
■类中其它方法的测试版本2:满分20分将上面的抽象类GeometricObject改为接口,接口只保留其中四个抽象方法,声明类Circle、Triangle实现该接口,类的基本要求如上,同时为每个类增加一个将当前对象序列化到指定文件的方法writeToFile(Filef)。
测试类TestGeometricObject2设计要求如下:■一个能随机生成Circle类和Triangle类对象的静态方法,该方法将随机生成的象序列化到指定的文件GeometricObjects.dat中,序列化成功返回真,否则返回假。
BooleanRandomCreateGeometricObject()■将GeometricObjects.dat文件中对象全部读出,存储到GeometricObject对象数组中,然后以此数组为参数,输出数组中每个对象的基本信息、周长和面积。
■类中其它方法的测试。
新增一个类Rectangle,也实现接口GeometricObject,同时修改测试类TestGeometricObject2,体会开-闭原则。
版本3:满分20分在第2步的基础上设计实现一个具有GUI界面的几何图形绘制系统系统,要求实现根据选择的几何图形类型来绘制和删除相应的图形,其中相关参数应通过界面输入,并可计算图形的周长和面积。
2024/7/31 3:21:55 23KB 几何图形 jpanel 课程设计CQUT xhay
1
1、设计一个抽象类表达宠物;
属性包括宠物的寿命、饥饿值、口渴值、健康值等;
实现宠物日常的吃、喝、抚摸、玩耍、生病等功能。
建议采用良好的控制台人机交互界面。
2、在抽象类的基础上至少派生出两种宠物;
3、用主程序模拟多种宠物的生命过程。
2024/6/28 16:12:36 7.32MB C++ 课程设计 有文档
1
本人经过两天的研究,终于掌握了动态链接库的使用方法,动态链接库的使用上并不难,难在动态链接库中的导出类,把dll中类的成员函数导出来才是最重要的,我就用几个例子介绍一下几种导出的方法:第一种:这种方法不是很好,实现的也比较麻烦,可以参考例子中的1_DLLDemoCll工程原理:利用虚函数导出,导出的dll中申请的对象指针,再利用虚函数的特性,利用虚函数表实现了类函数的导出,比较麻烦建议了解一下。
第二种:这种方法实现起来比较简单,采用的是静态加载的方式,但是有很多的局限性,因为当dll有错是整个应用都会出问题,不建议在打的工程中使用。
具体代码实现见static_link_DLL工程,其中dll文件由Abstrct文件编译。
第三种:这种方法是我推荐的,它是由动态加载进来的,其中实现原理是:运用抽象类,为工程创建接口,通过接口来导出类成员函数这种方式通用性强,而且代码比较的健壮,节省内存。
见工程useDLL。
2024/6/4 0:49:19 57KB 动态链接 导出类 loadlibrary
1
几乎所有的大型系统都有一个多任务多线程处理内核。
本程序提供了一个多任务多线程异步处理框架。
该框架使用简单,用户只需要继承抽象类Task,构建自己的任务类,再构造一个任务源,就可以轻松使用这个框架。
程序包里提供了一个例子Mytask和MyTaskGenerator,用户只需要运行类bootStraps即可。
2024/3/23 17:13:11 5KB Java 多线程 多任务 异步处理
1
1·第一讲JAVA语言概述2·第二讲JAVA语言基本语法3·第四讲类的定义和对象使用4·第五讲类与对象(二)5·第六讲类与对象(三)6·第七讲抽象类与抽象方法7·第八讲接口及应用8·第九讲数组与字符串9·第十讲时间、日期和Math类10·第十一讲Applet基础与绘图11·第十二讲文本框和文本区12·第十三讲异常处理、按钮与标签13·第十四讲选择型组件与窗口事件14·第十五讲布局设计15·第十六讲菜单设计
2023/12/17 2:24:58 1.67MB JAVA 完整 ppt 课件
1
为了方便,把代码放在Word里面了,每次上机实验的题目代码都在。
第一次:对如下多项式编写类定义:+++…+其中,n为多项式的次数。
完成如下功能:(1)可存储任意大的多项式(提示:可用动态数组实现)。
(2)定义构造函数、析构函数、拷贝构造函数。
(3)包含一个static成员存储定义的多项式的数量。
(4)定义一个成员函数输出多项式。
(可参照-x^4-6x^3+5格式输出)(5)定义一个成员函数计算多项式的值。
(6)写main函数测试类的功能。
(7)采用多文件实现。
考虑:哪些成员函数可以声明为const.第二次:(8)重载“+”运算符,实现两个多项式相加。
(9)重载“-”运算符,实现两个多项式相减。
(10)重载“*”运算符,实现两个多项式相乘。
(11)重载“=”运算符,实现两个多项式的赋值运算。
考虑:把其中某个运算符重载为友元函数。
第三次:C++的一般编译器都定义和封装了字符串功能,请模仿定义string类的实现,可以实现并支持如下功能:(1)strings=“吉林大学”;
(2)stringt=s;(3)stringm;
m=t;
(4)m.legnth()函数测量字符串的长度(5)m.cat(stringconst&)连接字符串第四次:我公司为仪器生产企业,目前生产摄像机和行车记录仪两种产品,分别销售给用户。
摄像机包含摄像、图像质量设定、编码算法等属性。
将摄像机增加相应芯片(具有操作菜单、自动拍摄、车速传感器、源代码等功能)后,形成一个行车记录仪。
要求:设计摄像机类,并请根据下列不同的功能要求,采用不同的继承方式,设计行车记录仪类,并添加测试代码,体验不同继承方式下的成员访问属性。
(类设计时可根据需要自行添加数据成员和其他成员函数。
)(1)行车记录仪的芯片可以使用摄像机的摄像、图像质量设定功能。
行车记录仪用户可以操作行车记录仪的操作菜单和摄像机的摄像功能。
(2)行车记录仪的芯片可以使用摄像机的拍摄、图像质量设定功能。
行车记录仪用户仅仅可以操作行车记录仪的操作菜单。
(3)行车记录仪的芯片可以使用摄像机的拍摄、图像质量设定功能。
行车记录仪用户仅仅可以操作行车记录仪的操作菜单同时其他公司购买行车记录仪,因该公司也用于销售,不得泄露其全部内容课后:(1)采用组合方式设计行车记录仪类,增加相应测试代码,体验继承和组合的关系。
(2)分别为继承和组合方式下为各类添加构造函数、析构函数,增加相应测试代码,体验对象的初始化和构造顺序。
(3)将摄像机类和行车记录仪类功能相近的函数(如拍摄、编码等功能函数)设为同名函数,增加相应测试代码,体验同名函数覆盖。
(4)为我公司建立一个多态的产品类层次结构,使用抽象类,测试时,创建一个基类指针的容器,通过基类指针调用虚函数,体验多态。
2023/12/6 1:35:36 110KB 吉林大学 C++ 实验报告 代码
1
共 33 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡