智能优化算法应用:基于麻雀搜索算法的工程优化案例
文章目录
- 智能优化算法应用:基于麻雀搜索算法的工程优化案例
-
- 1.麻雀搜索算法
- 2.压力容器设计问题
- 3.三杆桁架设计问题
- 4.拉压弹簧设计问题
- 4.Matlab代码
摘要:本文介绍利用麻雀搜索算法,对压力容器设计问题进行智能寻优。
1.麻雀搜索算法 麻雀搜索算法具体原理请参照:https://blog.csdn.net/u011835903/article/details/108830958
2.压力容器设计问题
文章图片
图1.压力容器示意图 压力容器设计问题的目标是使压力容器制作(配对、成型和焊接)成本最小,压力容器的设计如图1所示,压力容器的两端都有盖子封顶,头部一端的封盖为半球状.L L L 是不考虑头部的圆柱体部分的截面长度, R R R是圆柱体部分的内壁直径, T s T_s Ts? 和T h T_h Th?分别表示圆柱体部分壁厚和头部的壁厚, L L L、 R R R、 T s T_s Ts? 和T h T_h Th? 即为压力容器设计问题的四个优化变量. 问题的目标函数和四个优化约束表示如下:
x = [ x 1 , x 2 , x 3 , x 4 ] = [ T s , T h , R , L ] x=[x_1,x_2,x_3,x_4]=[T_s,T_h,R,L] x=[x1?,x2?,x3?,x4?]=[Ts?,Th?,R,L]
M i n f ( x ) = 0.6224 x 1 x 3 x 4 + 1.7781 x 2 x 3 2 + 3.1661 x 1 2 x 4 + 19.84 x 1 2 x 3 Minf(x)=0.6224x_1x_3x_4+1.7781x_2x_3^2+3.1661x_1^2x_4+19.84x_1^2x_3 Minf(x)=0.6224x1?x3?x4?+1.7781x2?x32?+3.1661x12?x4?+19.84x12?x3?
约束条件为:
g 1 ( x ) = ? x 1 + 0.0193 x 3 ≤ 0 g_1(x)=-x_1+0.0193x_3\leq0 g1?(x)=?x1?+0.0193x3?≤0
g 2 ( x ) = ? x 2 + 0.00954 x 3 ≤ 0 g_2(x)=-x_2+0.00954x_3\leq0 g2?(x)=?x2?+0.00954x3?≤0
g 3 ( x ) = ? π x 3 2 ? 4 π x 3 3 / 3 + 1296000 ≤ 0 g_3(x)=-\pi x_3^2-4\pi x_3^3/3+1296000 \leq0 g3?(x)=?πx32??4πx33?/3+1296000≤0
g 4 ( x ) = x 4 ? 240 ≤ 0 g_4(x)=x_4-240\leq0 g4?(x)=x4??240≤0
0 ≤ x 1 ≤ 100 , 0 ≤ x 2 ≤ 100 , 10 ≤ x 3 ≤ 100 , 10 ≤ x 4 ≤ 100 0\leq x_1\leq100,0\leq x_2\leq100,10\leq x_3\leq100,10\leq x_4\leq100 0≤x1?≤100,0≤x2?≤100,10≤x3?≤100,10≤x4?≤100
参数设定:
clear all
clc
SearchAgents_no=100;
%种群数量
Max_iteration=500;
%设定最大迭代次数
dim = 4;
%维度为4,即x1-x4
lb = [0,0,10,10];
%参数下边界
ub =[100,100,200,200];
%参数上边界
fobj = @(x) funP(x);
实验结果:
文章图片
最终获得的最优Ts Th R L参数分别为:: 1.30353 0.646514 67.386 33.4108
3.三杆桁架设计问题 三杆桁架设计问题的目的是通过调整横截面积(x 1 , x 2 x_1,x_2 x1?,x2?? )来最小化三杆桁架的体积。该三杆式桁架在每个桁架构件上受到应力(σ )约束,如图 2所示。该优化问题具有一个非线性适应度函数、3个非线性不等式约束和两个连续决策变量,如下所示:
【智能优化算法应用|智能优化算法应用(基于麻雀搜索算法的工程优化案例)】
文章图片
图2.三杆桁架设计问题示意图 m i n ? f ( x ) = ( 2 2 x 1 + x 2 ) l min\,f(x)=(2\sqrt{2}x_1+x_2)l minf(x)=(22 ?x1?+x2?)l
约束条件为:
g 1 ( x ) = 2 x 1 + x 2 2 x 1 2 + 2 x 1 x 2 P ? σ ≤ 0 g_1(x)=\frac{\sqrt{2}x_1+x_2}{\sqrt{2}x_1^2+2x_1x_2}P-\sigma\leq0 g1?(x)=2 ?x12?+2x1?x2?2 ?x1?+x2??P?σ≤0
g 2 ( x ) = x 2 / ( 2 x 1 2 + 2 x 1 x 2 ) P ? σ ≤ 0 g_2(x)=x_2/(\sqrt2x_1^2+2x_1x_2)P-\sigma\leq0 g2?(x)=x2?/(2 ?x12?+2x1?x2?)P?σ≤0
g 3 ( x ) = 1 2 x 2 + x 1 P ? σ ≤ 0 g_3(x)=\frac{1}{\sqrt2x_2+x_1}P-\sigma\leq0 g3?(x)=2 ?x2?+x1?1?P?σ≤0
l = 100 c m , P = 2 k N / c m 2 , σ = 2 k N / c m 2 l=100cm,P=2kN/cm^2,\sigma=2kN/cm^2 l=100cm,P=2kN/cm2,σ=2kN/cm2
参数设定:
clear all
clc
SearchAgents_no=100;
%种群数量
Max_iteration=500;
%设定最大迭代次数
dim = 2;
%维度为2,即x1-x2
lb = [0,0];
%参数下边界
ub =[1,1];
%参数上边界
fobj = @(x) funS(x);
实验结果:
文章图片
麻雀算法获得的适应度值为 : 263.9015
获得的最优参数x1,x2分别为:: 0.78707 0.41285
4.拉压弹簧设计问题 如图 3 所示,拉压弹簧设计问题的目的是在满足最小挠度、震动频率和剪应力的约束下,最小化拉压弹簧的重量。该问题由 3 个连续的决策变量组成,即弹簧线圈直径( d d d或 x 1 x_1 x1? )、弹簧簧圈直径( D D D 或 x 2 x_2 x2?)和绕线圈数( P P P或 x 3 x_3 x3?? )。数学模型表示公式如下:
文章图片
图3.拉压弹簧设计问题示意图 m i n ? f ( x ) = ( x 3 + 2 ) x 2 x 1 2 min\,f(x)=(x_3+2)x_2x_1^2 minf(x)=(x3?+2)x2?x12?
约束条件为:
g 1 ( x ) = 1 ? x 2 3 x 3 71785 x 1 4 ≤ 0 g_1(x)=1-\frac{x_2^3x_3}{71785x_1^4}\leq0 g1?(x)=1?71785x14?x23?x3??≤0
g 2 ( x ) = 4 x 2 2 ? x 1 x 2 12566 ( x 2 x 1 3 ? x 1 4 ) + 1 5108 x 1 2 ? 1 ≤ 0 g_2(x)=\frac{4x_2^2-x_1x_2}{12566(x_2x_1^3-x_1^4)}+\frac{1}{5108x_1^2}-1\leq0 g2?(x)=12566(x2?x13??x14?)4x22??x1?x2??+5108x12?1??1≤0
g 3 ( x ) = 1 ? 140.45 x 1 x 2 2 x 3 ≤ 0 g_3(x)=1-\frac{140.45x_1}{x_2^2x_3}\leq0 g3?(x)=1?x22?x3?140.45x1??≤0
g 4 ( x ) = x 1 + x 2 1.5 ? 1 ≤ 0 g_4(x)=\frac{x_1+x_2}{1.5}-1\leq0 g4?(x)=1.5x1?+x2???1≤0
0.05 ≤ x 2 ≤ 2 , 0.25 ≤ x 2 ≤ 1.3 , 2 ≤ x 3 ≤ 15 0.05\leq x_2\leq2,0.25\leq x_2\leq1.3,2\leq x_3\leq15 0.05≤x2?≤2,0.25≤x2?≤1.3,2≤x3?≤15
参数设定:
clear all
clc
SearchAgents_no=100;
%种群数量
Max_iteration=500;
%设定最大迭代次数
dim = 3;
%维度为3,即x1-x3
lb = [0.05,0.25,2];
%参数下边界
ub =[2,1.3,15];
%参数上边界
fobj = @(x) funS(x);
实验结果:
文章图片
麻雀算法获得的适应度值为 : 263.8977
获得的最优参数x1,x2,x3分别为:: 0.7882 0.40961 2
4.Matlab代码
推荐阅读
- 智能优化算法应用|智能优化算法应用(基于麻雀搜索算法的TSP问题求解 - 附代码)
- 智能优化算法应用|智能优化算法应用(基于麻雀搜索算法与非完全beta函数的自适应图像增强算法 - 附代码)
- 智能优化算法应用|智能优化算法应用(基于麻雀搜索算法PID参数优化 - 附代码)
- Algorithm|【algorithm】算法学习----堆
- 「Python」面向对象封装案例3——士兵突击
- #|新手入门-个人总结 Django-Vue 项目的创建流程
- 笔记|直接利用pycharm打包python的一些经验总结()
- 一本通oj|一本通OJ 1376
- 大数据|Virtural histology分析