引 言
学位论文题目为《基于聚类分析的启发式优化算法》,论文内容涉及了优化算法(主要是经典优化算法,启发式优化算法),算复杂性理论和聚类分析等相关领域。根据这些领域与论文的相关程度,比较详细的归纳总结启发式优化算法,对计算复杂性理论和聚类分析只做了一般性的总结。最后对这些相关领域未来的发展和研究提出自己的观点。
最优化问题
在现实生活中许多重要的问题,都涉及到选区一个最好的目标,或者为达到这个目标而选择某些参数、确定某些值,这些问题都可以归结为最优化问题。
对于一个最小值问题,其形式的描述为
(1)
这里的S为解的可行域,也称为解空间或搜索空间,条件 概括了对向量 的约束。这些约束可以包括线性或非线性函数,以及离散变量,都可以根据实际要求设置。
最优化问题的目标是找到(1)的最优解(全局最优解或局部最优解)。显然,只要改变目标函数的符号,最大值问题就可以转变成最小值问题,因此,本文在说明都是以最小值问题问标准。解决最优化问题的算法称为最优化算法,可以分为经典优化算法和启发式优化算法。
经典优化算法
而经典优化算法又分为线形与非线性最优化算法,下面分别对两类算法的发展及常用的软件包做了介绍。
1. 线性最优化[1][10]:
线性最优化, 又称线性规划, 是运筹学中应用最广泛的一个分支.这是因为自然科学和社会科学中许多问题都可以近似地化成线性规划问题. 线性规划理论和算法的研究及发展共经历了三个高潮, 每个高潮都引起了社会的极大关注. 线性规划研究的第一高潮是著名的单纯形法的研究. 这一方法是Dantzig在1947年提出的,它以成熟的算法理论和完善的算法及软件统治线性规划达三十多年. 随着60年代发展起来的计算复杂性理论的研究, 单纯形法在七十年代末受到了挑战. 1979年前苏联数学家Khachiyan提出了第一个理论上优于单纯形法的所谓多项式时间算法--椭球法, 曾成为轰动一时的新闻, 并掀起了研究线性规划的第二个高潮. 但遗憾的是广泛的数值试验表明, 椭球算法的计算比单纯形方法差.
1984年Karmarkar提出了求解线性规划的另一个多项式时间算法. 这个算法从理论和数值上都优于椭球法, 因而引起学术界的极大关注, 并由此掀起了研究线性规划的第三个高潮. 从那以后, 许多学者致力于改进和完善这一算法,得到了许多改进算法.这些算法运用不同的思想方法均获得通过可行区域内部的迭代点列, 因此统称为解线性规划问题的内点算法. 目前内点算法正以不可抗拒的趋势将超越和替代单纯形法.
在互联网上能访问到的解线性和整数规划问题的软件还有:EQPS(线性,整数和非线性规划),FMP(线性和混合整数规划),HS/LPLO(线性规划),KORBX(线性规划),LAMPS(线性和整数规划),LPBLP(线性规划),MILP(混合整数规划),MINTO(混合整数规划), MPSIII(线性和混合整数规划),OML(线性和混合整数规划), OSL(线性,二次和混合整数规划),PROCLP(线性和整数规划),WB(线性和混合整数规划),WHIZARD(线性和混合整数规划),XPRESSMP(线性和混合整数规划)等[41]。
2.非线性最优化[1][2][3][10]:
非线性规划的一个重要理论是1951年Kuhn-Tucker最优条件(简称KT条件)的建立[2].此后的50年代主要是对梯度法和牛顿法的研究.以Davidon(1959), Fletcher和Powell(1963)提出的DFP方法为起点, 60年代是研究拟牛顿方法活跃时期, 同时对共轭梯度法也有较好的研究. 在1970年由Broyden,Fletcher,Goldfarb 和Shanno从不同的角度共同提出的BFGS方法是目前为止最有效的拟牛顿方法. 由于Broyden, Dennis 和More的工作使得拟牛顿方法的理论变得很完善. 70年代是非线性规划飞速发展时期, 约束变尺度(SQP)方法(Han和Powell为代表)和Lagrange乘子法(代表人物是Powell 和Hestenes)是这一时期主要研究成果.计算机的飞速发展使非线性规划的研究如虎添翼.80年代开始研究信赖域法、稀疏拟牛顿法、大规模问题的方法和并行计算, 90年代研究解非线性规划问题的内点法和有限储存法. 可以毫不夸张的说, 这半个世纪是最优化发展的黄金时期.
与线性规划相比,非线性规划软件还不够完善. 但是已有大量解非线性规划问题的软件, 其中有相当一部分可从互联网上免费下载.LANCELOT是由Conn,Gould和Toint研制的解大规模最优化问题的软件包,适合解无约束最优化、非线性最小二乘、边界约束最优化和一般约束最优化问题.这个软件的基本思想是利用增广Lagrange函数来处理约束条件, 在每步迭代中解一个边界约束优化子问题, 其所用的方法结合信赖域和投影梯度等技术.MINPACK是美国Argonne国家实验室研制的软件包,适合求解非线性方程组和非线性最小二乘问题, 所用的基本方法是阻尼最小二乘法, 此软件可以从网上图书馆获得. PROC NLP是SAS软件公司研制的SAS商业软件中OR模块的一个程序,这个程序适合解无约束最优化、非线性最小二乘、线性约束最优化、二次规划和一般约束最优化问题.TENMIN是Schnabel等研制的解中小规模问题的张量方法软件。在互联网上能访问到的解非线性最优化问题的软件还有:CONOPT(非线性规划),DOT(优化设计工具箱),Excel and Quattro Pro Solvers(线性,整数和非线性规划),FSQP(非线性规划和极小极大问题),GRG2(非线性规划), LBFGS(有限储存法),LINDO(线性、二次和混合整数规划),LSSOL(最小二乘和二次规划),MINOS(线性和非线性规划),NLPJOB(非线性多目标规划), OPTPACK(约束和无约束最优化),PETS(解非线性方程组和无约束问题的并行算法),QPOPT(线性和二次规划),SQOPT(大规模线性和凸二次规划),SNOPT(大规模线性、二次和非线性规划),SPRNLP(稀疏最小二乘,稀疏和稠密非线性规划),SYSFIT(非线性方程组的参数估计),TENSOLVE(非线性方程组和最小二乘), VE10(非线性最小二乘)等[38][39][40][41].
启发式算法
大自然是神奇的,它造就了很多巧妙的手段和运行机制。受大自然的启发,人们从大自然的运行规律中找到了许多解决实际问题的方法。对于那些受大自然的运行规律或者面向具体问题的经验、规则启发出来的方法,人们常常称之为启发式算法(Heuristic Algorithm)。现在的启发式算法也不是全部来自然的规律,也有来自人类积累的工作经验。
启发式算法有不同的定义:一种定义为,一个基于直观或经验的构造的算法,对优化问题的实例能给出可接受的计算成本(计算时间、占用空间等)内,给出一个近似最优解,该近似解于真实最优解的偏离程度不一定可以事先预计;另一种是,启发式算法是一种技术,这种技术使得在可接受的计算成本内去搜寻最好的解,但不一定能保证所得的可行解和最优解,甚至在多数情况下,无法阐述所得解同最优解的近似程度[11]。我比较赞同第二种定义,因为启发式算法现在还没有完备的理论体系,只能视作一种技术。
启发式算法的计算量都比较大,所以启发式算法伴随着计算机技术的发展,取得了巨大的成就[11][23]。
40年代:由于实际需要,人们已经提出了一些解决实际问题快速有效的启发式算法。
50年代:启发式算法的研究逐步繁荣起来。随后,人们将启发式算法的思想和人工智能领域中的各种有关问题的求解的收缩方法相结合,提出了许多启发式的搜索算法。其中贪婪算法和局部搜索等到人们的关注。
60年代: 随着人们对数学模型和优化算法的研究越来越重视,发现以前提出的启发式算法速度很快,但是解得质量不能保证。虽然对优化算法的研究取得了很大的进展,但是较大规模的问题仍然无能为力(计算量还是太大)。
70年代:计算复杂性理论的提出。NP完全理论告诉我们,许多实际问题不可能在合理的时间范围内找到全局最优解。发现贪婪算法和局部搜索算法速度快,但解不好的原因主要是他们只是在局部的区域内找解,得到的解不能保证全局最优性。由此必须引入新的搜索机制和策略,才能有效地解决这些困难问题,这就导致了超启发式算法(meta-heuristic algorithms)的产生。
Holland模拟地球上生物进化规律提出了遗传算法(Genetic Algorithm),它的与众不同的搜索机制引起了人们再次引发了人们研究启发式算法的兴趣,从而掀起了研究启发式算法的热潮。
80年代以后: 模拟退火算法(Simulated Annealing Algorithm),人工神经网络(Artificial Neural Network),禁忌搜索(Tabu Search)相继出现。最近