logo资料库

C++版本的BSO算法测试报告.docx

第1页 / 共40页
第2页 / 共40页
第3页 / 共40页
第4页 / 共40页
第5页 / 共40页
第6页 / 共40页
第7页 / 共40页
第8页 / 共40页
资料共40页,剩余部分请下载后查看
前言
一、测试信息
测试设备
测试平台
二、测试内容
测试方法
测试组别
Benchmark Functions参数预设
BSO算法的参数设置
BSO的维度修改
三、测试结果
Rastrigin评估BSO算法
在维度相同、代码语言版本不同时的最优解分布图。
在代码版本相同、维度不同时的最优解分布图。
Sphere评估BSO算法
C++版本的不同维度最优解的指数量级分布图
MATLAB版本的不同维度最优解分布图
四、对角线变种算法
附录A:C++版本的BSO代码
附录B:MATLAB版本的BSO代码
附录C:12组实验的50次最优值数据
Rastrigin-Dimension-MATLAB/C++
Sphere-Dimension-MATLAB/C++
C++版本的 BSO 算法测试报告 测试人:徐童 主要编程人: 马思清 项目执行人:Jun Steed Huang 算法原创人:史玉回 Reviewers: 程适,Bruce He,陶欣怡,蒋可 测试目的:验证 C++代码 测试内容:单模与多模测试 测试时间:2019.1.26~2019.2.26 测试地点:无线谷
目录 前言 .................................................................................................................................................... 3 一、测试信息 .................................................................................................................................... 3 测试设备 .................................................................................................................................... 3 测试平台 .................................................................................................................................... 3 二、测试内容 .................................................................................................................................... 4 测试方法 .................................................................................................................................... 4 测试组别 .................................................................................................................................... 4 Benchmark Functions 参数预设 ................................................................................................4 BSO 算法的参数设置 ................................................................................................................ 5 BSO 的维度修改 .........................................................................................................................5 三、测试结果 .................................................................................................................................... 6 Rastrigin 评估 BSO 算法 ............................................................................................................ 6 Sphere 评估 BSO 算法.............................................................................................................10 四、对角线变种算法...................................................................................................................... 13 附录 A:C++版本的 BSO 代码 ........................................................................................................14 附录 B:MATLAB 版本的 BSO 代码................................................................................................32 附录 C:12 组实验的 50 次 Repeat 最优值数据..........................................................................38 多峰 Rastrigin-Dimension-MATLAB/C++ ..................................................................................38 单峰 phere-Dimension-MATLAB/C++ ...................................................................................... 39
前言 我们将已有的 matlab 原创代码作为基准,详细地对没有优化的 C++代码做了静 态检测。选取了两个多峰与单峰代表性的 Benchmark Functions 来评估原创与变 种两个 BSO 版本的代码。希望在学术界起到抛砖引玉的作用,同时在工业界也 鼓励方便同仁们使用。 一、测试信息 测试设备 电脑型号: 宏碁 Aspire VN7-591G 笔记本电脑 操作系统: Windows 10 Enterprise 64 位 处理器: 英特尔 第四代酷睿 i5-4210H @ 2.90GHz 双核 最高睿频 3.5GHz 内存: 8 GB ( 三星 DDR3L 1600MHz ) 显卡: Nvidia GeForce GTX 960M 测试平台 MATLAB:MATLAB 2014a C++:Visual Studio 2017
二、测试内容 测试方法 每组运行 BSO 算法 50 遍,每遍进行 2000 次迭代,记录每遍的最优解,则每组 有 50 个最优解。 维度 10 20 30 10 20 30 10 20 30 10 20 30 测试组别 测试组别 Benchmark Functions 测试版本(MATLAB/C++) 第 1 组 第 2 组 第 3 组 第 4 组 第 5 组 第 6 组 第 7 组 第 8 组 第 9 组 第 10 组 第 11 组 第 12 组 Rastrigin Sphere 测每组 50 个最优解的: mean worst best variance C++ MATLAB C++ MATLAB times Benchmark Functions 参数预设 Rastrigin 定义域:[-5.12, 5.12] Sphere 定义域:[-100, 100]
BSO 算法的参数设置 参数按照史教授 2014 年的《Brain Storm Optimization Algorithm》论文,未更改。 C++ const int np = 100; 各参数在两 Language 版本中的细节: 参数 n m p5a p6b if (r_1 < 0.8) const int nc = 5; if (uniRand() < 0.2) p6biii p6c k Max_ iteration μ σ MATLAB n_p = 100; n_c = 5; if (rand() < 0.2) prob_one_cluster = 0.8; if r_1 < prob_one_cluster if rand() < 0.4 if rand() < 0.5 n_iteration)/20 max_iteration = 2000; if (uniRand() < 0.4) if (uniRand() < 0.5) (0.5*max_iteration - n_iteration) / 20 (0.5*max_iteration - const int max_iteration = 2000; normal_distribution n(0, 1) normrnd(0,1,1,n_d) BSO 的维度修改 在进行不同维度测试时,请注意不仅要修改 bsocore.cpp 里的维度值,如下阴影 部分: const int nd = 10; // Number of dimension 而且要同步手动修改 function.cpp 里面的纬度值,如下阴影部分: for (int i = 0; i < 10; i++)
三、测试结果 测试组别 Benchmark Functions 测 试 版 本 dimension mean best worst variance times 第 1 组 第 2 组 第 3 组 第 4 组 第 5 组 第 6 组 第 7 组 第 8 组 第 9 组 第 10 组 第 11 组 第 12 组 Rastrigin Sphere C++ MATLAB C++ MATLAB 10 20 30 10 20 30 10 20 30 10 20 30 6.116364 1.98992 12.9345 6.586904071 4h7min 20.9735298 7.99479 41.9196 54.44474071 7h14min 45.723414 24.6508 111.986 294.5966334 9h42min 4.01963449 0.994959057 5.969754343 1.503129856 8min 18.30723405 8.954631514 30.84370054 23.60017541 10min 33.31119546 15.91934491 48.75290806 53.90180219 12min 5.23E-10 9.94E-45 2.05E-08 8.73199E-18 4h21min 2.26E-04 3.07826E-14 0.00498379 8.37836E-07 8h30min 3.26E-03 2.37E-05 7.33E-02 0.000114121 11h46min 3.97518E-44 1.4457E-44 6.55026E-44 1.56692E-88 12.5min 3.21718E-43 1.37202E-43 5.99555E-43 8.50032E-87 12min 1.12363E-42 4.90549E-43 1.59672E-42 5.34992E-86 11.5min C++版本完成评估测试使用时间:45h40min (20 位没有优化) MATLAB 版本完成评估测试使用时间:66min (16 位平台优化) Rastrigin 评估 BSO 算法 在维度相同、代码语言版本不同时的最优解分布图。 下面是三幅分别维度为 10、20、30 的两款代码的最优解分布图,其中 x 轴为遍 数,范围是 0~50,y 轴是最优解的大小。
现象: dimension=10 时,MATLAB 的 BSO 的最优解更优。 dimension=20、30 时,两版本的最优解相差不大。 我们估计这个区别来源于 MATLAB 的随机数与 C++的不太一样,需要进一步验证。
分享到:
收藏