当前位置:文档之家› 混沌优化算法算例要点

混沌优化算法算例要点

Harbin Institute of Technology 智能优化课程设计

课程名称: 智能优化算法 论文题目: 混沌优化算法 院 系:

班 级: 设 计 者: 学 号: 第一章 混沌理论概述 引言 混沌是指确定动力系统长期行为的初始状态,或系统参数异常敏感, 却又不发散, 而且无法精确重复的现象, 它是非线性系统普遍具有的一种复杂的动力学行为。混沌变量看似杂乱的变化过程, 其实却含有内在的规律性。利用混沌变量的随机性、遍历性和规律性可以进行优化搜索, 其基本思想是把混沌变量线性映射到优化变量的取值区间, 然后利用混沌变量进行搜索。 但是, 该算法在大空间、多变量的优化搜索上, 却存在着计算时间长、不能搜索到最优解的问题。因此, 可利用一类在有限区域内折叠次数无限的混沌自映射来产生混沌变量,并选取优化变量的搜索空间, 不断提高搜索精度等方法来解决此类难题。 混沌是非线性科学的一个重要分支, 它是非线性动力系统的一种奇异稳态演化行为, 它表征了自然界和人类社会中普遍存在的一种复杂现象的本质特征。因此, 混沌科学倡导者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); for n=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: Max f(x) = s.t. 1232221xxx 4232221xxx 0,,321xxx (3-1)

Matlab仿真程序主程序M文件,main:

for k=1:10 for a = 1: 3 X(a, 1) = rand(1); TempX(a) = 2 * X(a, 1); end if myjudge(TempX(1), TempX(2), TempX(3)) == 1 else return; end for g = 1:3 MaxX(g) = TempX(g); end MaxF = myfunction(MaxX(1), MaxX(2), MaxX(3)); for i = 2:5000 for j =1:3 X(j, i) = 4 * X(j, i - 1) * (1 - X(j, i - 1)); TempX(j) = 2 * X(j, i); end if myjudge(TempX(1), TempX(2), TempX(3))==1 TempF = myFunction(TempX(1), TempX(2), TempX(3)); if TempF > MaxF MaxX(j) = TempX(j); MaxF = TempF; end end end %二次载波 for i = 1:3 X(i, 1) =rand(1); end

232231332222212331

23221232xxxxxxxxxxxxfor i = 2:5000 for j = 1:3 X(j, i) = 4 * X(j, i - 1) * (1 - X(j, i - 1)); end end for i = 1:5000 for j = 1:3 TempX(j) = MaxX(j) + 0.001 * X(j, i); end if myjudge(TempX(1), TempX(2), TempX(3))==1 TempF = myfunction(TempX(1), TempX(2), TempX(3)); if TempF > MaxF MaxX(j) = TempX(j); MaxF = TempF; end end end MaxF = vpa(MaxF, 4); for i = 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: function myjudge=myjudge(x1,x2,x3) a=x1^2+x2^2+x3^2; if x1>0&&x2>0&&x3>0&&a>=1&&a<=4 myjudge=1; else myjudge=0; end

相关主题