【一码解决】32个工程设计优化问题,自带DBO,HHO、GWO、BKA等4种示例算法,可方便替换成其他优化算法(附matlab代码)

  引言

 优化函数的性能评估有两种:1.利用不同的数学基准测试函数集;2.各种实际工程设计问题。前期已经分享了多种cec数学基准测试函数集:

也分享了12种工程设计问题:

由于目标函数具有大量约束条件的复杂性,现实世界的优化问题相对难以解决。为了验证新设计方法的有效性和强度,应该通过一些复杂的现实问题来对其性能进行基准测试,而不仅仅是来自数值分析领域具有合成目标函数的玩具问题

本期推出32个现实世界的工程约束优化问题作为验证算法的基准套件进行描述和呈现。这些问题反映了现实优化场景中出现的各种困难和挑战。具体有:

% 1.Three bar truss design, 三杆桁架设计% 2.Welded beam structure problem, 焊接梁结构问题% 3.tension/Compression spring design, 张力/压缩弹簧设计问题% 4.Speed Reducer, 减速器% 5.Cantilever Beam, 悬臂梁% 6.Pressure vessel design, 压力容器设计% 7.I-beam vertical deflection 工字钢垂直挠度% 8.Gear train design 齿轮系设计% 9.Tubular column design, 管状柱设计% 10.Corrugated bulkhead design, 波纹舱壁设计% 11.Piston lever,活塞杆% 12.Reinforced concrete beam design, 钢筋混凝土梁设计% 13.Car side impact design, 汽车侧面碰撞设计% 14.Sawmill operation problem, 锯木厂运行问题% 15. hydro-static thrust bearing, 静压推力轴承设计% 16. Rolling element bearing design 滚动轴承设计% 17. Multiple disk clutch brake design problem 多盘离合器制动器设计问题% 18. Step-cone pulley problem 步进圆锥滑轮问题% 19. Planetary gear train design, 行星轮系设计% 20. Robot gripper problem, 机器人夹持器问题% 21. Heat exchanger network design problem, 换热器网络设计% 22. Heat exchanger network design problem(2) ,换热器网络设计(2)% 23. Haverly's Pooling Problem,Haverly's 泳池问题% 24. Blending-Pooling-Separation problem% 25. Reactor network design, 反应堆网络设计% 26. Optimal operation of alkylation unit, 烷基化装置的优化操作 % 27. Gas transmission compressor design, 输气压缩机设计% 28. Two-reactor problem, 两个反应器问题% 29 industrial refrigeration system, 工业制冷系统% 30 Himmelblau's function,Himmelblau函数% 31 SOPWM for 3-level inverters,3电平逆变器同步最佳脉宽调制% 32 Topology optimization, 拓扑优化

大量的关于优化的论文多多少少都涉及到了现实的工程优化问题,不仅可以全面地验证算法的性能,还能为你的论文增加许多工作量。

以上32种工程约束优化问题的数学表达式在各大中、英文期刊上均有介绍,本期不再赘述,代码中也有参考文献的链接。目前存在一个问题:大家在相互抄的同时,出现了很多错误,这些工程约束优化问题缺少统一的描述,公式可能有些许差别哈,可灵活修改

代码使用仅需3步

1.选择其中一个工程约束优化问题

32种工程约束优化问题集成到了ProbInfo.m函数中,即插即用,自由切换,只需要输入1-32其中一个整数,就可以选择对应的优化问题。非常方便,代码改动的工作量只有一个数字的量。

2.选择自己的优化算法:

哈里斯鹰优化算法HHO、灰狼优化算法GWO、蜣螂优化算法DBO黑翅鸢优化算法BKA为例。算法最大迭代次数为50次,种群数30。将优化算法封装成以下模板

function [最优值,最优解,收敛曲线]=算法名字(种群数,最大迭代次数,下限,上限,维度,目标函数)

函数模板中的输入和输出个数、变量名、位置可以自由选择,但须有以上几个参数。这样就可以在主函数main.m里根据上面的输入和输出形式,在相应的位置增加、替换算法,即插即用,自由切换。这里有340多种算法等您开发。

3. 保存结果

考虑到优化算法的随机性,采用多次运行后的结果作为最终结果更具说服力,最后结果进行展示,并提供8种统计指标:

1.最优值(Best),

2.最差值(Worst),

3.均值(Mean),

4.中位数(Median),

5.标准差(Std),

6. wilcoxon秩和检验(Wilcoxon's rank-sum test) ,

7. wilcoxon符号秩检验(Wilcoxon signed-rank test ) ,

8. Friedman检验(Friedman Test)

另外,还有箱型图(Boxplot)展现数据的分布。

结果保存为excel 和 mat格式。同时也保存了收敛曲线图。

 

Matlab代码下载

微信搜索并关注-优化算法侠,或扫描下方二维码关注,以算法名字搜索历史文章即可下载。

【一码解决】32个现实世界的工程设计优化问题,让你的论文增色10倍(附matlab代码)

340多种基础的群智能优化算法-matlab

【选择自由,免费下载】超340种基础群智能优化算法-Matlab版(截至2024.03.10)https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247486247&idx=1&sn=6bbf4a36099f33e84f49234186bbe16c&chksm=c12be722f65c6e343ee235208912a5357af90925d75e3b5e3e676470180ed1b66996b65cda11&token=25423484&lang=zh_CN#rd

175种群智能优化算法python库

超175+种群智能优化算法Python库!!!http://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247484577&idx=1&sn=ed0b2e27b73e738c094c7534a63a2cda&chksm=c12be8a4f65c61b2f3d90e2b4d1f480f8d0bb038b6598828ebf2434006e07925f8102af9795f&scene=21#wechat_redirect

求解cec测试函数-matlab

最新最火!cec2022测试函数来了(附Matlab代码)https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247484693&idx=1&sn=ce311acb26bee2894db6fe90776288bd&chksm=c12be910f65c6006af080b1e97ad5514eee06b64d2caeeac2008b8c06fdc3ba379455e9ca709&scene=21#wechat_redirect

解决12工程设计优化问题-matlab

略微出手,工程设计问题(12)(附Matlab代码)https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247485052&idx=1&sn=80e5573c1c005ee5640e44935044ee35&chksm=c12bea79f65c636fc73758b4f4893502bd89cbd1c5d15d7db15e8b5c94eeae40450439d44944&token=681266555&lang=zh_CN#rd

求解11种cec测试函数-python

一网打尽!170+种优化算法求解11种cec测试函数(附Python代码)https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247484745&idx=1&sn=1957f7c9b44c47f171c1cd46054d1679&chksm=c12be94cf65c605a5e0f8404e6c90964ce0743b7c25ff5f98a03dedc77e5eec5b48bf0c0e782&token=681266555&lang=zh_CN#rd

解决12种工程设计优化问题-python

大放送!170+种优化算法解决12种工程设计问题(附python代码)https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247485068&idx=1&sn=c913be0f2445f8b4d3e944569f5e599f&chksm=c12bea89f65c639f1df0f8e6cacffc1fdffa96683d10743094435ee6b0b55573a5bc8eec7eb3&token=681266555&lang=zh_CN#rd

用于改进所有优化算法:21种混沌映射方法-混沌初始化(附matlab代码)

用于改进所有优化算法:21种混沌映射方法-混沌初始化(附matlab代码)21种混沌映射方法-混沌初始化,适用于所有优化算法https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247486215&idx=2&sn=58f1a69175b0d6431a4c7cdfa114b84d&chksm=c12be702f65c6e14e6bd1ddc33b9cec74991d93303c325853049b7e4afd09039b13083fa79c5&token=25423484&lang=zh_CN#rd

沙场大点兵:24种信号分解方法(附matlab代码) 

沙场大点兵:24种信号分解方法(附matlab代码)https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247486001&idx=1&sn=a87c24cb401017a78a90bd1b1439fcb0&chksm=c12be634f65c6f22368b7229a59ac5ef330b89d710c826dbfd1a1c34a02b1dd7e909c7f40d79&token=25423484&lang=zh_CN#rd

 沙场大点兵:27种一维数据转换成二维图像的方法-matlab代码沙场大点兵:27种一维数据转换成二维图像的方法-matlab代码https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247486260&idx=1&sn=81b1970cb89364c0289ccdfb403e5388&chksm=c12be731f65c6e273a85456326b503b7f35d9f035405050932ff1926e0b1bfa8076b1bc2d1f2&token=25423484&lang=zh_CN#rd

再次简化代码,取消串口,直接显示结果,仍然有问题!!<br><br>疑问代码如下: <br>struct _USB_DATA_STRUCT<br>{<br>/* <br> unsigned char command_data[40];//release结果正确<br> int command_index;<br> int command_size;<br> int numofnod;<br>*/<br> int command_index;<br> int command_size;<br> int numofnod;<br> unsigned char command_data[40];//release结果错误<br><br> void SetData(unsigned char* pdata,int size)<br> {<br> if(size>40)<br> {<br> AfxMessageBox("数据太大,超范围!");<br> return;<br> }<br> memcpy(command_data,pdata,size);<br> }<br>};<br><br>void CTestprjDlg::OnButton1() <br>{<br> // TODO: Add your control notification handler code here<br> unsigned char ctem[32];//错误:32,103,104; 正确:105,110<br> <br> USB_DATA_STRUCT CommandData;//需要填写要发送的数据<br><br> ctem[0]=0xee;<br> ctem[1]=0x01;<br> memset(ctem+2,0x00,30);<br> <br> CommandData.SetData(ctem,32);<br><br> ShowTest(CommandData.command_data,32);<br>}<br><br>void CTestprjDlg::ShowTest(unsigned char* p,int nlen)<br>{<br> CString str = _T(""); <br> for(int i=0;i <32;i++) <br> { <br> CString tmp_str; <br> tmp_str.Format("0x%02X ", p[i]); <br> str += tmp_str; <br> } <br> m_textctrl.SetWindowText(str);<br>}<br><br>//VC6 <br><br>Debug版本没有问题,输出如: <br>EE 01 00 00 00...后面全0 <br>Release版本(按Maximize speed优化)有问题,输出如: <br>EE 01 00 00 00 00 00 00 00 00 00 00 EE 01 00 00 00 00 00 00 00 00 00 00 EE 01 00 00 00 00 00 00 <br><br>Release版本下,按以下修改没有问题。 <br>1.调整ctem的大小。小于等于104有问题,大于等于105没有问题。 <br>2.将ctem改为char* ctem; <br> ctem=new char[32]; <br> 没有问题。 <br><br>3.优化方式由Maximize speed修改为Minimize code也没问题。 <br><br>请教可能是什么原因?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值