1、1,2018/6/7,第八章 优化问题,2,2018/6/7,MATLAB优化问题,优化工具箱概述无约束最优化问题有约束最优化问题多目标规划最大最小化遗传算法(GA)模拟退火算法(SA)例:travel - travel salesman problem 旅行商问题一个典型的优化问题,3,2018/6/7,一、优化工具箱概述在生活和工作中,人们对于同一个问题往往会提出多个解决方案,并通过各方向的论证从中提取最佳方案。最优化方法就是专门研究如何从多个方案中科学合理地提取出最佳方案的科学。优化问题无所不在,最优化方法的应用和研究已经深入到生产和科研的各个领域,如土木、机械、化工、运输调度、生产控制
2、、经济规划、管理等,并取得了显著的经济效益和社会效益;用最优化方法解决最优化问题的技术称为最优化技术,包含:(1)建立数学模型: 即用数学语言来描述最优化问题,模型中的数学关系式反映了最优化问题所要达到的目标和各种约束条件。(2)数学求解 数学模型建好以后,选择合理的最优化方法进行求解。,4,2018/6/7,最优化方法的发展很快,已经包含有多个分支,如线性规划、整数规划、非线性规划、动态规划、多目标规划等;利用MATLAB的优化工具箱,可以求解线性规划、非线性规划和多目标规划问题。包括线性、非线性最小化,最大最小化,二次规划,半无限问题,线性、非线性方程组的求解,线性、非线性的最小二乘问题,
3、另外,该工具箱还提供了线性、非线性最小化,方程求解、曲线拟合,二次规划等问题中大型课题的求解方法,为优化方法在工程中的实际应用提供了更方便、快捷的途径。,5,2018/6/7,二、无约束最优化问题,1.单变量最优化讨论只有一个变量的最小化问题,即一维搜索问题,该问题在某些情况下可以直接用于求解实际问题,但大多数情况下它是作为多变量最优化方法的基础,因为进行多变量最优化要用到一维搜索算法。该问题的数学模型为 min f(x) x1xx2,6,2018/6/7,Rosenbrock函数(香蕉函数),最小值为:x=1,1;f(x)=0观察:在命令窗口键入bandemo选择不同方法观察对香蕉函数的优化
4、结果和过程。,7,2018/6/7,fminbnd 函数:利用该函数找到固定区间内单变量函数的最小值;调用格式为: fminbnd (f, x1,x2)返回区间( x1,x2 )上f函数描述的标量函数的最小值x。 注意: 1)目标函数必须是连续的; 2)fminbnd函数可能只给出局部最优解; 3)只用于实数变量。,8,2018/6/7,例 在区间(0,2)上求函数sin(x)的最小值:x = fminbnd(sin,0,2*pi)x = 4.7124 所以区间(0,2)上函数sin(x)的最小值点位于x=4.7124处。最小值处的函数值为:y = sin(x)y = -1.0000,9,20
5、18/6/7,2.无约束非线性规划问题,基本数学原理无约束最优化问题在实际应用中较为常见。许多有约束最优化问题可以转化为无约束最优化问题进行求解;求解无约束最优化问题的方法主要有两类:直接搜索法(Direct Search Method)梯度法(Gradient Method )。直接搜索法适用于目标函数高度非线性,没有导数或导数很难计算的情况;由于实际工程中很多问题都是非线性的,故直接搜索法不失为一种有效的解决办法,常用的直接搜索法为单纯形法等,其缺点是收敛速度慢。,10,2018/6/7,(1)fminunc函数可求多变量无约束函数的最小值。多变量无约束函数的数学模型为式中,x为矢量,f(
6、x)为函数,返回标量; fminunc函数的调用格式: fminunc(fun,x0), x0为给定初值,可以是标量、矢量或矩阵。,11,2018/6/7,例:将下列函数最小化,建立m文件:myfun.mfunction f=myfun(x)f=3*x(1)2+2*x(1)*x(2)+x(2)2然后:x0=1,1;x,fval= fminunc(myfun,x0)% x,fval= fminunc(myfun,x0) %函数句柄16次迭代后, x = 1.0e-008 * -0.7512 0.2479 fval = 1.3818e-016,12,2018/6/7,(2)fminsearch函数
7、,功能类似于fminunc函数x0=1,1;x,fval= fminsearch(myfun,x0)% x,fval= fminsearch(myfun,x0) %函数句柄,13,2018/6/7,三、有约束优化问题,线性规划有约束极小问题非线性有约束最优化问题,14,2018/6/7,1. 线性规划概述,线性规划的广泛应用是计算机时代的产物。1902年,J.Farkas 发表论文,阐述有关线性规划问题。1938年,英国人康德进行较详细研究。1947年,美国学者G.Dantzig(丹茨格)发明了求解线性规划的单纯形法(1951年发表),从而为线性规划的推广奠定了基础。可以认为,求解线性规划的单
8、纯形算法可与求解线性方程组的高斯消元法相媲美。,15,2018/6/7,线性规划的数学模型有三个要素,从实际问题提炼成数学模型时,首先寻找需求解的未知量xj (j=1,n),然后列举三要素: 列写与自变量(未知量)有关的若干个线性约束条件(等式或不等式)。列写自变量xj取值限制(xj0,xj0或不限)。列写关于自变量的线性目标函数值(极大值或极小值)。其中,前两条称为可行条件,最后一条称为优化条件。符合这三个条件的数学模型通常称为线性规划的一般型(general)。,16,2018/6/7,问题的提出 例:某企业计划生产甲、乙两种产品,该两种产品均需经A、B、C、D四种不同设备上加工,按生产工
9、艺,在各种不同设备上的加工时间及设备加工能力、单位产品利润如表中所示。问:如何安排产品的生产计划,才能使企业获利最大?,一般线性规划问题及数学模型,17,2018/6/7,建立模型:,设 产品的产量 甲x1件 ,乙 x2件,则,Maxz=2 x1+3 x2,2 x1+2 x2 12,x1+2 x2 8,4 x1 16 4 x2 12,x10, x2 0,目标(object) :,限制条件(subject to ):,18,2018/6/7,线性规划有约束极小问题用命令x=linprog(C,A,b, Aeq,beq,lb),例:求x使f(x)最小 f(x)=-5x1-4x2-6x3约束条件:
10、x1-x2+x320 3x1+2x2+4x342 3x1+2x230 0x1, 0x2,0x3,19,2018/6/7,Matlab程序:clearC= -5; -4; -6;A = 1 -1 1; 3 2 4; 3 2 0;b = 20; 42; 30;lb = zeros(3,1);linprog(C,A,b,lb)输出结果:x = 0.0000 15.0000 3.0000,20,2018/6/7,2非线性规划有约束极小问题用命令x=fmincon (f ,x0,A,b)早期版本用constr(f ,x0),只针对不等式约束。例:求f(x)=-x1x2x3的最小值,x0 = 10; 10
11、; 10 s.t. -x1-2x2-2x30, x1+2x2+2x372,21,2018/6/7,建立m文件:function f=myfun1(x)f=-x(1)*x(2)*x(3);MATLAB程序: x0=10,10,10; A=-1 -2 -2;1 2 2;b=0;72; x=fmincon(myfun1,x0,A,b)输出结果:x = 24.0000 12.0000 12.0000,22,2018/6/7,四、二次规划,如果某非线性规划的目标函数为自变量的二次函数,约束条件全是线性函数,就称这种规划为二次规划。其数学模型为:,23,2018/6/7,用quadprog(H,f,A,b
12、,Aeq,beq,lb)若无等式约束条件,则采用 quadprog(H,f,A,b)例:,24,2018/6/7,目标函数写成矩阵形式:,MATLAB程序:clearH=1 -1;-1 2; f=-2;-6;A=1 1;-1 2;2 1; b=2;2;3;lb=zeros(2,1); x,fval,exitflag=quadprog(H,f,A,b,lb),25,2018/6/7,五、多目标规划,前面介绍的最优化方法只有一个目标函数,是单目标最优化方法。但是,在许多实际工程问题中,往往希望多个指标都达到最优值,所以就有多个目标函数,这种问题称为多目标最优化问题。数学模型为,式中,F(x)为目标
13、函数矢量。,26,2018/6/7,由于多目标最优化问题中各目标函数之间往往是不可公度的,往往没有唯一解,此时须引进非劣解的概念(非劣解又称为有效解或帕累托解)。定义:若x*( x* )的邻城内不存在x,使得( x*+x ),且则称x*为非劣解。,27,2018/6/7,多目标规划有许多解法,常用的有:,1权和法该法将多目标矢量问题转化为所有目标的加权求和的标量问题,即加权因子的选取方法很多,有专家打分法等。该问题可以用标准的无约束最优化算法进行求解。,28,2018/6/7,2约束法 对目标函数矢量中的主要目标函数Fp进行最小化,其它目标用不等式约束的形式,即,29,2018/6/7,3目标
14、达到法 目标函数系列为对应地有其目标值系列,允许目标函数有正负偏差,偏差的大小由加权系数矢量=1, 2,m 控制,问题可以表达为标准的最优化问题,30,2018/6/7,应用实例,某化工厂拟生产两种新产品A和B,其生产设备投资分别为:A,2万元吨;B,5万元吨。这两种产品均会造成环境污染,设由公害所造成的损失可折算为:A,4万元吨;B,1万元吨。由于条件限制,工厂生产产品A和B的最大生产能力各为每月5吨和6吨,而市场需要这两种产品的总量每月不少于7吨。试问工厂如何安排生产计划,在满足市场需要的前提下,使设备投资和公害损失均达最小。工厂决策认为:这两个目标中环境污染应优先考虑,设备投资的目标值为
15、20万元,公害损失的目标为12万元。,31,2018/6/7,设工厂每月生产产品A为x1吨,B为x2吨,设备投资费为f1(x),公害损失费为f2(x) ,则这个问题可表达为多目标优化问题:,32,2018/6/7,首先需要编写目标函数的M文件opt1.m,返回目标计算值 function f=opt1(x) f(1)=2*x(1)+5*x(2); f(2)=4*x(1)+x(2);给定目标,权重按目标比例确定,给出初值 goal=20 12; weight=20 12; x0=2 5;%给出约束条件的系数 A=1 0;0 1;-1 -1; b=5 6 -7; lb=zeros(2,1); x,
16、fval,attainfactor,exitflag=. fgoalattain(opt1,x0,goal,weight,A,b,lb,),33,2018/6/7,六、最大最小化,通常我们遇到的都是目标函数的最大化和最小化问题,但是在某些情况下,则要求使最大值最小化才有意义。例如城市规划中需要确定急救中心、消防中心的位置,可取的目标函数应该是到所有地点最大距离的最小值,而不是到所有目的地的距离和为最小。这是两种完全不同的准则,在控制理论、逼近论、决策论中也使用最大最小化原则。,34,2018/6/7,最大最小化问题的数学模型为式中,x, b, beq, lb, and ub为矢量, A、Aeq
17、为矩阵,c(x), ceq(x),F(x)为函数,返回矢量。F(x), c(x),ceq(x)可以是非线性函数。MATLAB优化工具箱中采用序列二次规划法求解最大最小化问题。,35,2018/6/7,例 求解下列最优化问题,使下面各目标函数中的最大值最小:首先编写一个计算x处五个函数的M文件opt2.m。function f = opt2 (x)f(1)= 2*x(1)2+x(2)2-48*x(1)-40*x(2)+304;f(2)= -x(1)2 - 3*x(2)2; f(3)= x(1) + 3*x(2) -18;f(4)= -x(1)- x(2); f(5)= x(1) + x(2) -
18、 8;然后调用优化过程:x0 = 0.1; 0.1; % 初值x,fval = fminimax(opt2,x0)得到问题的解x = 4.0000 4.0000fval = 0.0000 -64.0000 -2.0000 -8.0000 -0.0000,36,2018/6/7,例:定位问题:设某城市有某种物品的10个需求点,第i个需求点Pi的坐标为(ai,bi),道路网与坐标轴平行,彼此正交。现打算建一个该物品的供应中心,且由于受到城市某些条件的限制,该供应中心只能设在x界于5,8,y界于5,8的范围内。问该中心应建在何处为好? Pi点的坐标为 ai:1 4 3 5 9 12 6 20 17
19、8 bi:2 10 8 18 1 4 5 10 8 9该供应中心的位置为(x,y),要求它到最远需求点的距离尽可能小。由于此处应采用沿道路行走的距离,可知用户Pi到该中心的距离为|xai|+|ybi|,从而可得目标函数,37,2018/6/7,首先, 编写一个计算x处10个目标函数的M文件opt3.m ;function f=opt3(x)a= 1 4 3 5 9 12 6 20 17 8; b=2 10 8 18 1 4 5 10 8 9; %输入各个点的坐标值f(1)=abs(x(1)-a(1)+abs(x(2)-b(1); f(2)=abs(x(1)-a(2)+abs(x(2)-b(2)
20、;f(3)=abs(x(1)-a(3)+abs(x(2)-b(3); f(4)=abs(x(1)-a(4)+abs(x(2)-b(4);f(5)=abs(x(1)-a(5)+abs(x(2)-b(5); f(6)=abs(x(1)-a(6)+abs(x(2)-b(6);f(7)=abs(x(1)-a(7)+abs(x(2)-b(7); f(8)=abs(x(1)-a(8)+abs(x(2)-b(8);f(9)=abs(x(1)-a(9)+abs(x(2)-b(9); f(10)=abs(x(1)-a(10)+abs(x(2)-b(10);clear; x0=6;6; %初值AA=-1 0; 1
21、 0; 0 -1; 0 1; bb=-5; 8; -5; 8; %约束条件的系数x,fval=fminimax(opt2,x0,AA,bb)运行结果: x = 8 8fval = 13 6 5 13 8 8 5 14 9 1,38,2018/6/7,七、遗传算法(GA),生物的进化是一个奇妙的优化过程,它通过选择淘汰,突然变异,基因遗传等规律产生适应环境变化的优良物种。遗传算法是根据生物进化思想而启发得出的一种全局优化算法。 1967年Bagley最早提出遗传算法的概念; 1975年Michigan大学的J.H.Holland开始遗传算法的理论和方法的系统性、开创性研究。遗传算法简称GA(Ge
22、netic Algorithm),在本质上是一种不依赖具体问题的直接搜索方法。遗传算法在模式识别、神经网络、图像处理、机器学习、结构优化、自适应控制、生物科学、社会科学等方面都得到应用。在人工智能研究中,现在人们认为“遗传算法、自适应系统、细胞自动机、混沌理论与人工智能一样,都是对今后十年的计算技术有重大影响的关键技术”。,39,2018/6/7,1遗传算法的基本概念,遗传算法的基本思想是基于Darwin进化论和Mendel的遗传学说的。Darwin进化论最重要的是适者生存原理。它认为每一物种在发展中越来越适应环境。物种每个个体的基本特征由后代所继承,但后代又会产生一些异于父代的新变化。在环境
23、变化时,只有那些能适应环境的个体特征方能保留下来。Mendel遗传学说最重要的是基因遗传原理。它认为遗传以密码方式存在细胞中,并以基因形式包含在染色体内。每个基因有特殊的位置并控制某种特殊性质;所以,每个基因产生的个体对环境具有某种适应性。基因突变和基因杂交可产生更适应于环境的后代。经过存优去劣的自然淘汰,适应性高的基因结构得以保存下来。,40,2018/6/7,由于遗传算法是由进化论和遗传学机理而产生的直接搜索优化方法,因而在这个算法中要用到各种进化和遗传学的概念。这些概念如下:(1)串(String) 它是个体(Individual)的形式,在算法中为二进制串,并且对应于遗传学中的染色体(
24、Chromosome)。(2)群体(Population) 个体的集合称为群体,串是群体的元素(3)群体大小(Population Size) 在群体中个体的数量称为群体的大小。(4)基因(Gene) 基因是串中的元素,基因用于表示个体的特征。例如有一个串S1011,则其中的1,0,1,1这4个元素分别称为基因。它们的值称为等位基因(Alletes)。,41,2018/6/7,(5)基因位置(Gene Position) 一个基因在串中的位置称为基因位置,有时也简称基因位。基因位置由串的左向右计算,例如在串S1101中,0的基因位置是3。基因位置对应于遗传学中的地点(Locus)。(6)基因特
25、征值(Gene Feature) 在用串表示整数时,基因的特征值与二进制数的权一致;例如在串S=1011中,基因位置3中的1,它的基因特征值为2;基因位置1中的1,它的基因特征值为8。(7)串结构空间SS 在串中,基因任意组合所构成的串的集合。基因操作是在结构空间中进行的。串结构空间对应于遗传学中的基因型(Genotype)的集合。(8)参数空间SP 这是串空间在物理系统中的映射,它对应于遗传学中的表现型(Phenotype)的集合。(9)非线性 它对应遗传学中的异位显性(Epistasis)(10)适应度(Fitness) 表示某一个体对于环境的适应程度。,42,2018/6/7,2遗传算法
26、的原理,遗传算法GA把问题的解表示成“染色体”,在算法中也即是以二进制编码的串。并且,在执行遗传算法之前,给出一群“染色体”,也即是假设解。然后,把这些假设解置于问题的“环境”中,并按适者生存的原则,从中选择出较适应环境的“染色体”进行复制,再通过交叉,变异过程产生更适应环境的新一代“染色体”群。这样,一代一代地进化,最后就会收敛到最适应环境的一个“染色体”上,它就是问题的最优解。(1)遗传算法的目的 典型的遗传算法通常用于解决下面这一类的静态最优化问题:考虑对于一群长度为L的二进制编码xi,i1,2,n;有 xi 0,1L; 给定目标函数f,有f(xi),并且0f(xi);同时f(xi)f(
27、xi+1) 求满足:maxf(xi)| xi 0,1L的xi 。显然,遗传算法是一种最优化方法,它通过进化和遗传机理,从给出的原始解群中,不断进化产生新的解,最后收敛到一个特定的串xi处,即求出最优解。,43,2018/6/7,(2)遗传算法的基本原理 长度为L的n个二进制串xi (i1,2,n)组成了遗传算法的初解群,也称为初始群体。在每个串中,每个二进制位就是个体染色体的基因。根据进化术语,对群体执行的操作有三种:1选择(Selection) 这是从群体中选择出较适应环境的个体。这些选中的个体用于繁殖下一代。故有时也称这一操作为再生(Reproduction)。由于在选择用于繁殖下一代的个
28、体时,是根据个体对环境的适应度而决定其繁殖量的,故而有时也称为非均匀再生(differential reproduction)。2交叉(Crossover) 这是在选中用于繁殖下一代的个体中,对两个不同的个体的相同位置的基因进行交换,从而产生新的个体。3变异(Mutation) 这是在选中的个体中,对个体中的某些基因执行异向转化。在串xi中,如果某位基因为1,产生变异时就是把它变成0;反亦反之。,44,2018/6/7,(3)遗传算法的步骤和意义a初始化选择一个群体,即选择一个串或个体的集合xi,i=1,2,.n。这个初始的群体也就是问题假设解的集合。一般取n30160。通常以随机方法产生串或
29、个体的集合xi,i1,2,.n。问题的最优解将通过这些初始假设解进化而求出。b选择根据适者生存原则选择下一代的个体。在选择时,以适应度为选择原则。适应度准则体现了适者生存,不适应者淘汰的自然法则。给出目标函数f,则f(xi)称为个体xi的适应度。显然:(i)适应度较高的个体,繁殖下一代的数目较多。 (ii)适应度较小的个体,繁殖下一代的数目较少;甚至被淘汰。这样,就产生了对环境适应能力较强的后代。对于问题求解角度来讲,就是选择出和最优解较接近的中间解。,45,2018/6/7,c交叉对于选中用于繁殖下一代的个体,随机地选择两个个体的相同位置,按交叉概率P。在选中的位置实行交换。这个过程反映了随
30、机信息交换;目的在于产生新的基因组合,也即产生新的个体。交叉时,可实行单点交叉或多点交叉。例如有个体 S1=100101,选择左边3位进行交叉操作,则 S1=010101 S2=010111 S2=100111 一般而言,交叉概率P常取为0.250.75。d变异根据生物遗传中基因变异的原理,以变异概率Pm对某些个体的某些位执行变异。在变异时,对执行变异的串的对应位求反,即把1变为0,把0变为1。变异概率Pm一般取值较小,一般取0.01-0.2。例如有个体S=101011, 对其的第1,4位置的基因进行变异, 则有 S=001111单靠变异不能在求解中得到好处。但是,它能保证算法过程不会产生无法
31、进化的单一群体。因为在所有的个体一样时,交叉是无法产生新的个体的,这时只能靠变异产生新的个体。也就是说,变异增加了全局优化的特质。,46,2018/6/7,e全局最优收敛当最优个体的适应度达到给定的阀值,或者最优个体的适应度和群体适应度不再上升时,则算法的迭代过程收敛、算法结束。否则,用经过选择、交叉、变异所得到的新一代群体取代上一代群体,并返回到第2步即选择操作处继续循环执行。,47,2018/6/7,简单遗传算法框图,48,2018/6/7,3遗传算法的手工计算示例,考虑下列一元函数求最大值的优化问题:,极值点满足:,49,2018/6/7,下面用遗传算法求解上述简单优化问题: (1)编码
32、 变量x作为实数,可视为遗传算法的表现型形式,从表现型到基因型的映射称为编码。通常用二进制串编码形式,串长度取决于求解精度。若需要达到6位小数,则需将区间-1,2分为3106等份,因为 2097152=221 3106 222=4194304所以二进制串长度需要22位,50,2018/6/7,将一个22位二进制串(b21b20b0)化为十进制数,在区间-1,2内,x对应的实数为:,例:二进制串s1= 表示实数0.637197 x=(1000101110110101000111 )2=2288967,二进制串和 表示区间-1,2的两个端点值,51,2018/6/7,(2)产生初始种群 一个个体由
33、串长为22的随机产生的二进制串组成染色体的基因码,可以产生一定数目的个体组成种群,种群的大小就是群中的个体数目;(3)计算适应度 直接引用目标函数作为适应度函数: f (s) = f (x) 如: s1= s2= f(s1)=f(x1)=2.586345 f(s2)=f(x2)=1.078878显然,两个个体中, s1的适应度大,个体s1优于个体s2,52,2018/6/7,(4)遗传操作 介绍交叉和变异这两个遗传操作的工作过程: 下面是经过选择操作(轮盘赌选择方法)的两个个体,先执行单点交叉,如 s1= s2=随机选择一个交叉点,例如第5位与第6位之间的位置,交叉后产生新的子个体 s1= s
34、2= 这两个子个体的适应度分别为: f(s1)=f(-0.998113)=1.940865 f(s2)=f(1.666028)=3.459245 适应度高于两个父个体的适应度,53,2018/6/7,下面考察变异操作:假设以一小概率选择了s2的第5个遗传因子(即第5位)变异,遗传因子由原来的0变为1,产生新的个体为 s2= 计算该个体的适应度: f(s2)=f(1.721638)=0.917743发现个体s2的适应度比其父个体的适应度减少了,但如果选择第10个遗传因子变异,产生新的个体为: s2=适应度:f(s2)=f(1.630818)=3.343555个体s2的适应度比其父个体的适应度改善
35、了,这说明了变异操作的”扰动”作用。,54,2018/6/7,(5)模拟结果 设定种群大小为50,交叉概率为0.25,变异概率为0.01,按照上述基本遗传算法(SGA),在运行到89代时获得最佳个体: smax= xmax=1.850549, f(xmax)=3.850274这个个体对应的解与其它方法预计最优解的情况吻合,可以作为问题的近似最优解。,55,2018/6/7,4Matlab遗传算法与直接搜索工具箱 (The Genetic Algorithm and Direct Search Toolbox),%定义一个简单的适应度函数,即目标函数function y = simple_fit
36、ness(x)y = 100 * (x(1)2 - x(2) 2 + (1 - x(1)2;%开始搜索clearFitnessFunction = simple_fitness;numberOfVariables = 2;x,fval = ga(FitnessFunction,numberOfVariables),56,2018/6/7,%定义simple_objective.m function y = simple_objective(x) y = (4 - 2.1*x(1)2 + x(1)4/3)*x(1)2 + x(1)*x(2) + . (-4 + 4*x(2)2)*x(2)2;%开
37、始搜索ObjectiveFunction = simple_objective;X0 = 0.5 0.5; % Starting pointx,fval = patternsearch(ObjectiveFunction,X0),57,2018/6/7,八、模拟退火算法(SA),模拟退火算法工具箱 satools 模拟退火算法(Simulated Annealing Algorithm,简称为SA算法)的基本思想最早由Metropolis等人于1953年提出,用于模拟固体在给定温度下的热平衡过程。此后被扩展到温度变化的情况,并用于求解组合优化问题。对离散变量的组合优化问题和连续变量函数的极小化
38、问题都获得了很大成功。SA算法将组合优化问题与统计物理中的热平衡问题相类比,基于固体物质的退火过程与组合优化问题求解的相似性,开辟了求解组合优化问题的新途径。,58,2018/6/7,在固体物理中,退火代表一种物理过程,一种固体在加热罐中升温到足够高的温度,这时所有的粒子都在液相物质中随机自由排列。然后把该物质慢慢地冷却,这时粒子逐渐过渡到有较低能量水平的晶格状态。只要加热到足够高的温度,而冷却的过程足够缓慢,当冷却过程中每一个温度物体都可以达到热平衡时,物质系统具有能量E的概率满足 其中,P 为某个事件出现的概率,E为能量,T 为绝对温度,kB 称为Boltzmann常数, 称为配分函数。可
39、以看出,温度越低,系统处于低能量状态的概率越大。,59,2018/6/7,在这一物理模型以及概率论的理论基础上产生了模拟退火算法的基本思想。它与其他极小化方法不同,并不要求每一步搜索均满足 F(Xk+1)F(Xk) 而允许F(Xk+1)F(Xk)以一定的概率exp(-E/kBT)出现。从算法上看,SA算法在大多数搜索时间内将使得目标函数按梯度下降方向演化,而在某些情况下还容许按梯度上升方向演化,所以,目标函数有可能跳出局部极小点向着全局极小点收敛。对于存在多个局部极值点的优化问题,采用SA算法处理该问题尤其适合。,60,2018/6/7,适当地选择参数,当N时,搜索产生的序列Xk收敛到所希望解
40、的概率趋向于1。模拟退火法求解极小化问题的基本步骤为:1) 初始化:任给初始状态X0,取初始温度To0,计算目标函数F(X0);2) 作随机扰动产生新状态X1,按下式计算, F(Xk+1)-F(Xk);3) 若0,转 5),否则,在(0,1)区间上产生一随机数r;4) 若P() = exp(-/T)r,转 2);5) 用X0X1,F F +;6) 在此温度T下检验SA算法是否达到稳定,若不稳定,转 2);7) 降低温度:令Tk+1=Tk,(01,常取=0.95)。8) SA算法是否结束,若否,则转 2)9) 输出最终解 X,结束。,61,2018/6/7,理论上可以证明,只要初始温度T0,下降系数适当,便能模拟退火过程中的足够高温度和缓慢冷却过程,最终解 X是全局最优解的概率为1。SA算法的优点是原理简单,方法容易实现,对问题的信息量要求不高,一般只需要目标函数这一信息即可,其缺点是计算时间长,其原因在于SA算法中的每一步搜索都是随机的,因而整个搜索过程带有很大的盲目性,因此,在实际应用中有很多改进的方法,如将遗传算法与SA算法相结合构成遗传退火算法、将单纯形法与SA算法相结合或将模糊理论与SA算法相结合等改进的算法,都可以在保证获得全局最优解或近似全局最优解的前提下,加快收敛速度。,