智能优化算法应用:基于蜣螂算法的工程优化案例
文章目录
摘要:本文介绍利用蜣螂搜索算法,对工程优化案例问题进行智能寻优。
1.蜣螂算法
蜣螂算法具体原理请参照:https://blog.csdn.net/u011835903/article/details/128280084
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.6224x1x3x4+1.7781x2x32+3.1661x12x4+19.84x12x3
约束条件为:
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);
实验结果:
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)=(22x1+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)=2x12+2x1x22x1+x2P−σ≤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/(2x12+2x1x2)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)=2x2+x11P−σ≤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);
实验结果:
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)x2x12
约束条件为:
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−71785x14x23x3≤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(x2x13−x14)4x22−x1x2+5108x121−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−x22x3140.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);
实验结果:
5.Matlab代码
6.Python代码
版权归原作者 智能算法研学社(Jack旭) 所有, 如有侵权,请联系我们删除。