贴个俺的成果,嘿嘿

news/2024/7/8 5:09:56 标签: 算法, 相册, 测试, 出版, 图形

今天用刚出炉的GA,做了个小测试,呵呵,还不错,把结果总结了一下:

 

被测函数:(《演化程序-遗传算法和数据编码的结合》 科学出版社,2000 P26

 F(x1,x2)=21.5+x1*sin(4*pi*x1)+x2*sin(20*pi*x2)  的最大值

其中 3.0<=x1<=12.1以及4.1<=x2<=5.8,函数的图形在【相册-资源】中(等俺会贴图了,再贴回来,呵呵)

 

 

现在我有5个选择算子,其中15是同样的,但是实现方法不同(可以同等看待,这里只不过多测试了一次而已,呵呵)

54)个算子都包含了最优保存,它们分别是

1,  转盘式选择算子(最常见的,也就是比例算子):selection1, selection5

2,  具有排名的转盘式选择算子:selection2

3,  随机一致算子:selection3

4,  锦标赛选择算子: selection4

 

现在我有两个算法性能评估指标(《演化计算》 潘正君等,清华大学出版社,1998P66

一个是平均性能值(在线性能),具体什么情况我就不说了:AVE

一个是最优性能值(离线性能),同上,呵呵:MAX

 

下面这个表格就是测试结果,敲数字可真不是个好活:)

 

selection1

selection2

selection3

selection4

selection5

AVE

38.8503

38.3226

38.4503

38.1489

38.8503

33.5902

22.7836

33.6016

36.5246

34.1255

11.6255

11.6333

11.6255

11.1268

11.6256

5.725

5.6309

5.325

5.5251

5.725

MAX

38.8474

36.3799

38.8502

38.8503

38.8493

38.1199

36.259

38.1921

38.5717

38.6797

11.6257

11.1469

11.6254

11.6255

11.6255

5.7256

4.6323

5.7251

5.725

5.7253

 

注:以上结果所用参数:

popsize=80,群中个体的数量

gen=300,代数

minvar=[-3.0 4.1],由于这是一个双变量函数,所以minvar是二个,分别代表x1,x2的最小值,这个程序可以处理多变量的情况

maxvar=[12.1 5.8],同上,只不过代表的是最大值,这样,每个变量就有了一个范围

scalevar=0.0001,求解精度,表格中凡是小数点后面是三位的表示第四位是0

pc=0.25,交叉概率

pm=0.01,变异概率

解释一下:从上到下的四个数字分别代表:最上面的一个是代表到第300代所找到的最优结果,第二个就是本次计算的AVE(或者MAX),第三个和第四个分别是取得最优结果时所对应的自变量值,这里有两个。

 

还有,AVE的大小说明算法的收敛性,而MAX则代表算法的趋向(on-going)性能

附录:各个结果所得到的图:

ave1:

 

max1

ave2

max2

ave3

max3

ave4

max4

ave5

max5

 

 

算了,我也不会贴图,大家到 相册-资源 中去看吧,嘿嘿


http://www.niftyadmin.cn/n/1374241.html

相关文章

交换字符使得字符串相同 | 统计「优美子数组」 | 移除无效的括号 | 检查「好数组」 | LeetCode 周赛第 161 场 JAVA 实现「161」

1247. 交换字符使得字符串相同 有两个长度相同的字符串 s1 和 s2&#xff0c;且它们其中 只含有 字符 "x" 和 "y"&#xff0c;你需要通过「交换字符」的方式使这两个字符串相同。 每次「交换字符」的时候&#xff0c;你都可以在两个字符串中各选一个字符进…

JSON string 在内存中转流 MemoryStream 代码,以及需要注意的问题utf-8问题

MemoryStream ms new MemoryStream(System.Text.Encoding.UTF8.GetBytes("字符串"); string str Convert.ToBase64String(ms.ToArray()); 转载于:https://www.cnblogs.com/MasterLin/p/9810191.html

Go 字符串和map

2019独角兽企业重金招聘Python工程师标准>>> 字符串 Go中字符串是一个字节切片。 通过for循环字符串可以得到每个字节。 字符串是不可变的 Go中字符串是不可变的。一旦字符串被创建&#xff0c;它将无法修改。 我们想修改一个字符串&#xff0c;需要将其转化为一个r…

奇数值单元格的数目 | 重构 2 行二进制矩阵 | 统计封闭岛屿的数目 | 得分最高的单词集合 | LeetCode 周赛第 162 场 JAVA 实现「162」

1252. 奇数值单元格的数目 给你一个 n 行 m 列的矩阵&#xff0c;最开始的时候&#xff0c;每个单元格中的值都是 0。 另有一个索引数组 indices&#xff0c;indices[i] [ri, ci] 中的 ri 和 ci 分别表示指定的行和列&#xff08;从 0 开始编号&#xff09;。 你需要将每对 […

Web页面技术综述(包括fastm)

Web页面技术综述&#xff08;包括fastm&#xff09; 1. 序 Java Web Application中&#xff0c;页面生成部分是最繁琐、令人头痛的部分。 其它的层都可以很好的结构化&#xff0c;唯有页面生成部分的结构很散乱。 本文首先介绍并比较各种页面生成技术&#xff0c;然后具体介绍作…

guava学习:guava集合类型-table

最近学习了下guava的使用&#xff0c;这里简单记录下一些常用并且使用的工具类把。 看到table的使用时候真的是眼前一亮&#xff0c;之前的代码中写过很多的Map<String,Map<String,String>> 这种格式的代码&#xff0c;这种阅读起来非常的不友好&#xff0c;甚至都…

1047.删除字符串中的所有相邻重复项(Remove All Adjacent Duplicates In String) | LeetCode 第 1047 题

删除字符串中的所有相邻重复项 点击进入 LeetCode 给出由小写字母组成的字符串 S&#xff0c;重复项删除操作会选择两个相邻且相同的字母&#xff0c;并删除它们。 在 S 上反复执行重复项删除操作&#xff0c;直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串…

细说Java之util类

线性表&#xff0c;链表&#xff0c;哈希表是常用的数据结构&#xff0c;在进行Java开发时&#xff0c;JDK已经为我们提供了一系列相应的类来实现基本的数据结构。这些类均在java.util包中。本文试图通过简单的描述&#xff0c;向读者阐述各个类的作用以及如何正确使用这些类。…