混沌优化算法算例要点.docx
- 文档编号:4465363
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:17
- 大小:411.73KB
混沌优化算法算例要点.docx
《混沌优化算法算例要点.docx》由会员分享,可在线阅读,更多相关《混沌优化算法算例要点.docx(17页珍藏版)》请在冰豆网上搜索。
混沌优化算法算例要点
HarbinInstituteofTechnology
智能优化课程设计
课程名称:
智能优化算法
论文题目:
混沌优化算法
院系:
班级:
设计者:
学号:
第一章混沌理论概述
引言
混沌是指确定动力系统长期行为的初始状态,或系统参数异常敏感,却又不发散,而且无法精确重复的现象,它是非线性系统普遍具有的一种复杂的动力学行为。
混沌变量看似杂乱的变化过程,其实却含有内在的规律性。
利用混沌变量的随机性、遍历性和规律性可以进行优化搜索,其基本思想是把混沌变量线性映射到优化变量的取值区间,然后利用混沌变量进行搜索。
但是,该算法在大空间、多变量的优化搜索上,却存在着计算时间长、不能搜索到最优解的问题。
因此,可利用一类在有限区域内折叠次数无限的混沌自映射来产生混沌变量,并选取优化变量的搜索空间,不断提高搜索精度等方法来解决此类难题。
混沌是非线性科学的一个重要分支,它是非线性动力系统的一种奇异稳态演化行为,它表征了自然界和人类社会中普遍存在的一种复杂现象的本质特征。
因此,混沌科学倡导者Shlesinger和著名物理学家Ford等一大批混沌学者认为混沌是20世纪物理学第三次最大的革命,前两次是量子力学和相对论,混沌优化是混沌学科面对工程应用领域的一个重要的研究方向。
它的应用特点在于利用混沌运动的特性,克服传统优化方法的缺陷,从而使优化结果达到更优。
1.混沌的特征
从现象上看,混沌运动貌似随机过程,而实际上混沌运动与随机过程有着本质的区别。
混沌运动是由确定性的物理规律这个内在特性引起的,是源于内在特性的外在表现,因此又称确定性混沌,而随机过程则是由外部特性的噪声引起的。
混沌有着如下的特性:
(1)内在随机性
混沌的定常状态不是通常概念下确定运动的三种状态:
静止、周期运动和准周期运动,而是一种始终局限于有限区域且轨道永不重复的,形势复杂的运动。
第一,混沌是固有的,系统所表现出来的复杂性是系统自身的,内在因素决定的,并不是在外界干扰下产生的,是系统的内在随机性的表现。
第二,混沌的随机性是具有确定性的。
混沌的确定性分为两个方面,首先,混沌系统是确定的系统;其次,混沌的表现是貌似随机,而并不是真正的随机,系统的每一时刻状态都受到前一状态的影响是确定出现的,而不是像随机系统那样随意出现,混沌系统的状态是可以完全重现的,这和随机系统不同。
第三,混沌系统的表现具有复杂性。
混沌系统的表现是貌似随机的,它不是周期运动,也不是准周期运动,而是具有良好的自相关性和低频宽带的特点。
(2)长期不可预测性
由于初始条件仅限于某个有限精度,而初始条件的微小差异可能对以后的时间演化产生巨大的影响,因此不可长期预测将来某一时刻之外的动力学特性。
即混沌系统的长期演化行为是不可预测的。
在此以经典的logistic映射为例:
x(n+1)=μx(n)(1-x(n))
n=0,1,2,3…
0<x0<1
0<μ≤4(1-1)
对于初值为0.6,在参数μ取值由2.6开始,间隔3e-4到4结束,迭代200次的结果实验仿真如图1-1所示,发现随着参数μ的增加,迭代序列经历了2周期、4周期、8周期、…无穷周期的过程,,从仿真的结果验证了系统状态长期的不可预测性。
图1-1
附Matlab仿真程序:
mu=2.6:
3e-4:
4;
k=length(mu);
x=linspace(0.6,0,k);
forn=1:
k
x(n+1)=mu(n)*x(n)*(1-x(n));
plot(mu,x(1,:
),'k.');
xlabel('\mu');
ylabel('x(n)');
end
(3)对初值的敏感依赖性
随着时间的推移,任意靠近的各个初始条件将表现出各自独立的时间演化,即对初始条件的敏感依赖性。
及时初始数据又很小的偏差,在迭代几次后其差距会很大。
(4)普适性
当系统趋于混沌时,所表现出的特性具有普适性,其系统不因具体系统的不同和系统运动方程的差异而改变,即使是不同的混沌映射,其混沌状态从外表上是类似的。
(5)分形性
分形(Fractal)这个词是由曼德布罗特((B.B.Mandelbrot)在70年代创立分形几何学时所使用的一个新词。
所谓分形是指n维空间一个点集的一种几何性质,它们具有无限精细的结构,在任何尺度下都有自相似部分和整体相似性质,具有小于所在空间维数n的非整数维数,这种点集叫分形体。
分维就是用非整数维—分数维来定量的描述分形的基本特性。
(6)遍历性
遍历性也称为混杂性。
由于混沌是一种始终局限于有限区域且轨道永不重复、性态复杂的运动。
所以,随着时间的推移,混沌运动的轨迹决不逗留于某一状态而是遍历区域空间中的每一点,即只要时间充分长,混沌会不重复的能走过每一点。
(7)有界性
它的运动轨线始终局限于一个确定的区域内,这个区域称为混沌吸引域。
因此总体上讲混沌系统是稳定的。
(8)分维性
混沌系统的运行状态具有多叶、多层结构,且叶层越分越细,表现为无限层次的自相似结构。
(9)统计特性
对于混沌系统而一言,正的Lyapunov指数表明轨线在每个局部都是不稳定的,相邻轨道按指数分离。
但是由于吸引子的有界性,轨道只能在一个局限区域内反复折叠,但又永远不相交,形成了混沌吸引子的特殊结构。
第二章最优化理论
最优化理论是应用相当广泛的理论,它具有讨论决策问题的最佳选择问题的特性,是构造寻求最佳解的计算方法,研究这些计算方法的理论性质及实际计算就显得十分重要。
同时最优化问题广泛见于工程设计,经济规划,生产管理,交通运输,国防等重要领域。
例如,在工程设计中,怎样选择设计参数,使得设计方案既满足设计要求,又能降低成本。
在资源分配中,怎样分配有限资源,使得分配方案既能满足各方面的基本要求,又能获得好的经济效益。
在生产计划安排中,确定怎样的比例才能提高质量,降低成本。
在城建规划中,怎样安排布局才能有利于城市发展。
在区域经济规划中,如何发挥地区优势,挖掘潜力,发展生产力。
在作战指挥中,如何合理运用火力,制订作战方案,使之有效地消灭敌人,保存自己等等。
混沌优化理论
在某种程度上,优化算法就是运筹学,即讨论决策问题的最佳选择问题。
通过适当的数学建模,决策问题可以等价于研究在状态空间中寻求全局最小值或者最大值(当然最大值可以通过转化化为最小值来处理),即:
Minf(x)
S.t.g(x)≤0
x∈Ω(2-1)
其中,x是决策变量,是一个矢量,其维数等于决策问题的参量个数。
f(x)是决策问题的数学模型,也是决策问题的目标函数。
g(x)≤0是决策问题的约束条件,Ω是问题的可行域。
对于Maxf(x),可取Minh(x)=c-Maxf(x),转化为最小值处理。
第三章混沌优化应用
本章用Matlab仿真了三个3变量的最优化函数问题。
测试函数1:
Maxf(x)=
s.t.
(3-1)
Matlab仿真程序主程序M文件,main:
fork=1:
10
fora=1:
3
X(a,1)=rand
(1);
TempX(a)=2*X(a,1);
end
ifmyjudge(TempX
(1),TempX
(2),TempX(3))==1
else
return;
end
forg=1:
3
MaxX(g)=TempX(g);
end
MaxF=myfunction(MaxX
(1),MaxX
(2),MaxX(3));
fori=2:
5000
forj=1:
3
X(j,i)=4*X(j,i-1)*(1-X(j,i-1));
TempX(j)=2*X(j,i);
end
ifmyjudge(TempX
(1),TempX
(2),TempX(3))==1
TempF=myFunction(TempX
(1),TempX
(2),TempX(3));
ifTempF>MaxF
MaxX(j)=TempX(j);
MaxF=TempF;
end
end
end
%二次载波
fori=1:
3
X(i,1)=rand
(1);
end
fori=2:
5000
forj=1:
3
X(j,i)=4*X(j,i-1)*(1-X(j,i-1));
end
end
fori=1:
5000
forj=1:
3
TempX(j)=MaxX(j)+0.001*X(j,i);
end
ifmyjudge(TempX
(1),TempX
(2),TempX(3))==1
TempF=myfunction(TempX
(1),TempX
(2),TempX(3));
ifTempF>MaxF
MaxX(j)=TempX(j);
MaxF=TempF;
end
end
end
MaxF=vpa(MaxF,4);
fori=1:
3
MaxX(i)=vpa(MaxX(i),4);
end
subplot(2,2,1)
plot(k,MaxX
(1));
subplot(2,2,2)
plot(k,MaxX
(2));
subplot(2,2,3)
plot(k,MaxX
(2));
subplot(2,2,4)
plot(k,MaxF);
xlabel('k')
ylabel('Max')
end
Matlab仿真程序,函数程序M文件,myjudge:
functionmyjudge=myjudge(x1,x2,x3)
a=x1^2+x2^2+x3^2;
ifx1>0&&x2>0&&x3>0&&a>=1&&a<=4
myjudge=1;
else
myjudge=0;
end
Matlab仿真程序,函数程序M文件,myfunction:
functionmyfunction=myfunction(x1,x2,x3)
myfunction=(x1^2*x2*x3^2)/(2*x1^3*x3^2+3*x1^2*x2^2+2*x2^2*x3^3+x1^3*x2^2*x3^2)
end
仿真结果:
如图3-1,图3-2,图3-3所示,MaxF=0.1537;MaxX
(1)=0.7380;MaxX
(2)=0.4167;MaxX(1.3390)。
与标准值一致。
图3-1
图3-2
图3-3
测试函数2:
Minf(x)=
s.t.
(3-2)
已知其最优解为;
=4/3,
=7/9,
=4/9.
最优值为:
Minf(x)=1/9
Matlab仿真程序主程序,M文件,main:
fork=1:
100
forz=1:
100
fora=1:
3
X(a,1)=rand
(1);
TempX(a)=2*X(a,1);
end
ifmyjudge(TempX
(1),TempX
(2),TempX(3))==1
break
end
end
forg=1:
3
MaxX(g)=TempX(g);
end
MaxF=myfunction(MaxX
(1),MaxX
(2),MaxX(3));
fori=2:
5000
forj=1:
3
X(j,i)=4*X(j,i-1)*(1-X(j,i-1));
TempX(j)=2*X(j,i);
end
ifmyjudge(TempX
(1),TempX
(2),TempX(3))==1
TempF=myFunction(TempX
(1),TempX
(2),TempX(3));
ifTempF>MaxF
MaxX(j)=TempX(j);
MaxF=TempF;
end
end
end
%二次载波
fori=1:
3
X(i,1)=rand
(1);
end
fori=2:
5000
forj=1:
3
X(j,i)=4*X(j,i-1)*(1-X(j,i-1));
end
end
fori=1:
5000
forj=1:
3
TempX(j)=MaxX(j)+0.0001*X(j,i);
end
ifmyjudge(TempX
(1),TempX
(2),TempX(3))==1
TempF=myfunction(TempX
(1),TempX
(2),TempX(3));
ifTempF>MaxF
MaxX(j)=TempX(j);
MaxF=TempF;
end
end
end
MaxF=vpa(MaxF,4);
fori=1:
3
MaxX(i)=vpa(MaxX(i),4);
end
Max(k)=MaxF;
MaxX1(k)=MaxX
(1);
MaxX2(k)=MaxX
(2);
MaxX3(k)=MaxX(3);
end
subplot(2,2,1)
plot(MaxX1(1,:
));
subplot(2,2,2)
plot(MaxX2(1,:
));
subplot(2,2,3)
plot(MaxX3(1,:
));
subplot(2,2,4)
plot(Max(1,:
));
xlabel('k')
ylabel('Max')
gridon
sz=subs(Max)
[m,n]=max(sz);
B=Max(n);
B1=MaxX1(n);
B2=MaxX2(n);
B3=MaxX3(n);
Matlab仿真程序,函数程序M文件,myjudge:
functionmyjudge=myjudge(x1,x2,x3)
a=-x1-x2-2*x3+3;
ifx1>0&&x2>0&&x3>0&&a>=0
myjudge=1;
else
myjudge=0;
end
Matlab仿真程序,函数程序M文件,myfunction:
functionmyfunction=myfunction(x1,x2,x3)
myfunction=1-(2*x1^2+2*x2^2+x3^2+2*x1*x2+2*x1*x3-8*x1-6*x2-4*x3+9)
end
仿真结果:
由于取myfunction=1-f(x),故仿真结果为myfucntion的最大值。
如图3-4,图3-5,图3-6所示
图3-4上图依次为X1,X2,X3,Max随k变化曲线。
图3-5myfunction最大值
图3-5各参量值
仿真结果:
见表3-1
表3-1
仿真结果
仿真值
参考值
Minf(x)
0.8883
0.8889
X1
1.3100
1.3333
X2
0.7885
0.7778
X3
0.4507
0.4444
可见经过100次运算,得到了较为精确的仿真值,该混沌优化方法较好的满足了最优值求解。
测试函数3:
无约束最优化问题----Rosenbrock函数
Minf(x)=100
(3-3)
Matlab仿真程序,主函数M文件,main:
fork=1:
20
fora=1:
2
X(a,1)=rand
(1);
TempX(a)=2*X(a,1);
end
forg=1:
2
MinX(g)=TempX(g);
end
MinF=myfunction(MinX
(1),MinX
(2));
fori=2:
5000
forj=1:
2
X(j,i)=4*X(j,i-1)*(1-X(j,i-1));
TempX(j)=2*X(j,i);
end
TempF=myfunction(TempX
(1),TempX
(2));
ifTempF MinX(j)=TempX(j); MinF=TempF; end end %二次载波 fori=1: 2 X(i,1)=rand (1); end fori=2: 5000 forj=1: 2 X(j,i)=4*X(j,i-1)*(1-X(j,i-1)); end end fori=1: 5000 forj=1: 2 TempX(j)=MinX(j)+0.0001*X(j,i); end TempF=myfunction(TempX (1),TempX (2)); ifTempF MinX(j)=TempX(j); MinF=TempF; end end MinF=vpa(MinF,4); fori=1: 2 MinX(i)=vpa(MinX(i),4); end Min(k)=MinF; MinX1(k)=MinX (1); MinX2(k)=MinX (2); end subplot(2,2,1) plot(MinX1(1,: )); subplot(2,2,2) plot(MinX2(1,: )); subplot(2,2,3) plot(Min(1,: )); xlabel('k') ylabel('Min') gridon sz=subs(Min) [m,n]=min(sz); B=Min(n); B1=MinX1(n); B2=MinX2(n); Matlab仿真程序,myfunction: functionmyfunction=myfunction(x1,x2) myfunction=100*(x2-x1^2)^2+(1-x1)^2; end 仿真结果: 如图3-6,图3-7,图3-8所示。 函数最小值为0.0002889。 最优解为X1=1.0290,X2=0.9853。 图3-6B参数值,即函数最小值 图3-7 图3-8依次为X1,X2,Min随k变化曲线。 仿真结果分析: 见表3-2 表3-2 仿真结果 仿真值 参考值 Minf(x) 0.0002889 0 X1 1.0290 1 X2 0.9853 1 可见该混沌优化算法达到了较高的精度。 通过了测试函数的验证。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 混沌 优化 算法 要点
![提示](https://static.bdocx.com/images/bang_tan.gif)