第一题:利用进化算法解决TSP问题。试给出相应算法伪码以及关键的数据结构。进而说明其中对应全局探索(Exploration)能力和局部探测(Exploitation)能力的构成要素分别是什么?你如何实现二者的平衡?
解答:
伪代码如下:
Random initialization of the population P While (not satisfied termination condition) do i=0 Begin for each individual Si ∈ P do begin (if i!=N) { S'← Si Select (randomly) a City C from S' Repeat {begin if (rand() ≤ p1 ) {select the city C' from S' invert the gene segment between C andC' } else {select (randomly) an individual S '' in P assign to C' the next city to the city C in the select individual } if (the next city or the previous city of city C in S' is C' ) exit repeat loop else {invert the gene segment between C andC' calculate d if(d<0 and evolutionary speed< critical speed) exit repeat loop } C ←C' end } if (eval(S') ≤ eval(Si )) Si ← S' i = i +1} end calculate evolutionary speed and update the probability of mutation if (evolutionary speed< critical speed and (rand() ≤ p2 ) {select (randomly) S1 , S2 from P select (randomly) gene segment Δs1 from S1 if ( Δs1= Δs2 and the starting city is same) // Δs2 in S2 replace Δs1 with Δs2 } Select the better gene segments from those adaptive chromosomes if (eval(g1 ) ≤ eval(g2 )) g1 ← g2 end
选择操作:从群体{p}中随机选择两条染色体s1,s2,并使得f(s2)>f(s1)。从s1中随机选择一个基因片段s1,判断在s2中是否有满足下列条件:即和s1长度相同,并且起始城市相同。若存在这样的s2,则用s2替换掉s1,并将剩下的基因按照部分映射规则进行调整。
替换操作:从群体{p}中随机选择两条染色体s1,s2,并使得f(s2)>f(s1)。令s1是双亲染色体,
判断在s2中是否有满足下列条件:即和s1长度相同,并且所包括城市相同,只是城市序列不相同。若存在这样的s2,则判断两个基因片段,各自的距离,如果较短,则用s2替换掉s1,负责退出该操作。
突变操作:由于突变操作本身是盲目的,该操作在该算法开始时效率会比较高,但是当它汇聚近似最佳的解决方案时,成功地优化染色体的概率证明是非常低的。故采用如下方程式来计算突变概率:
p = p × (1-GenNum× 0.01/maxGen)
其中GenNum是当前进化的次数,MaxNum是当算法结束时最大的进化次数。
该算法中使用选择和替换操作来进行局部探测,为了避免算法陷入局部最优,采用了突变操作,进行全局搜索。
第二题:利用群智能优化算法解决TSP问题。试给出相应算法伪码以及关键的数据结构。进而说明其中对应全局探索(Exploration)能力和局部探测(Exploitation)能力的构成要素分别是什么?你如何实现二者的平衡?
解答:
利用粒子群优化算法(Particle Swarm Optimization)来解决TSP问题:
粒子群的velocity和位置更新方程为:
算法描述伪代码:
TSP-PSO-1 Initialization: each of the partices gets a random solution and a random Swap Sequence, namely velocity. TSPPSO-2 If the algorithms are ended, go to TSP-PSO-5. TSP-PSO-3 . For all the particles in position xid, calculating the 3-1 Calculating difference between Pid between Xid according to the method we have proposed above, A=Pid-Xid, where A is a basic sequence. 3-2 Calculating B=Pgd-Xid,B is also a basic sequence 3-3 Calculating velocity Vidaccording to.fopmula.(1) and then we transform swap Sequce Vid to a Basic Swap Sequence. 3-4 Calculating new solution Xid=Xid+Vid Formula (7) means that Swap Sequence vi, acts on solution Xid to get a new solution. 3-5 Updating Pid if tlie new solution is superior to Pid TSP-PSO-4. Updating Pgd if there is new best solution;,which is TSP-PS0-5 Sketch the global best solution.
全局搜索与局部探测的构成要素:方程式(1)中Pid表示第i个粒子的历史最优序列,Xid表示第i个粒子的当前序列,Pgd表示全局最优序列,粒子群的当前速度向量受到该粒子当前速度向量、以及该粒子历史最优向量和全局最优向量的影响,和是区间[0,1]上的随机数,分别代表粒子历史最优向量和全局最优向量的影响程度概率。通过改变和来对粒子的全局搜索和局部探测的影响程度做出改变,达到二者的平衡。
第三题:对于无约束优化问题,列出你已知的所有优化方法及其基本思想。
解答:
2、极大似然估计
基本思想:
(1)写出似然函数;
(2) 对似然函数取对数,并整理;
(3) 求导 ;
(4) 解似然方程
3. 遗传算法
基本思想:
a)初始化:设置进化代数计数器t=0,设置最大进化代数T,随机生成M个个体作为初始群体P(0)。
b)个体评价:计算群体P(t)中各个个体的适应度。
c)选择运算:将选择算子作用于群体。选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的。
d)交叉运算:将交叉算子作用于群体。所谓交叉是指把两个父代个体的部分结构加以替换重组而生成新个体的操作。遗传算法中起核心作用的就是交叉算子。
e)变异运算:将变异算子作用于群体。即是对群体中的个体串的某些基因座上的基因值作变动。
群体P(t)经过选择、交叉、变异运算之后得到下一代群体P(t 1)。
f)终止条件判断:若t=T,则以进化过程中所得到的具有最大适应度个体作为最优解输出,终止计算。
4. 进化规划算法
基本思想:
进化算法是以达尔文的进化论思想为基础,通过模拟生物进化过程与机制的求解问题的自组织、自适应的人工智能技术。生物进化是通过繁殖、变异、竞争和选择实现的;而进化算法则主要通过选择、重组和变异这三种操作实现优化问题的求解。
5.蚁群优化算法
蚁群算法是从自然界中真实蚂蚁觅食的群体行为得到启发而提出的,其很多观点都来源于真实蚁群,因此算法中所定义的人工蚂蚁与真实蚂蚁存在如下共同点。
(1)都存在一个群体中个体相互交流通信的机制
人工蚂蚁和真实蚂蚁都存在一种改变当前所处环境的机制:真实蚂蚁在经过的路径上留下信息素,人工蚂蚁改变在其所经路径上存储的数字信息,该信息就是算
法中所定义的信息量,它记录了蚂蚁当前解和历史解的性能状态,而且可被其他后继人工蚂蚁读写。蚁群的这种交流方式改变了当前蚂蚁所经路径周围的环境,同
时也以函数的形式改变了整个蚁群所存储的历史信息。通常,在蚁群算法中有一个挥发机制,它像真实的信息量挥发一样随着时间的推移来改变路径上的信息量。
挥发机制使得人工蚂蚁和真实蚂蚁可以逐渐地忘却历史遗留信息,这样可使蚂蚁在选择路径时不局限于以前蚂蚁所存留的“经验”。
(2)都要完成一个相同的任务
人工蚂蚁和真实蚂蚁都要完成一个相同的任务,即寻找一条从源节点(巢穴)到目的节点(食物源)的最短路径。人工蚂蚁和真实蚂蚁都不具有跳跃性,只能在
相邻节点之间一步步移动,直至遍历完所有城市。为了能在多次寻路过程中找到最短路径,则应该记录当前的移动序列。
(3)利用当前信息进行路径选择的随机选择策略
人工蚂蚁和真实蚂蚁从某一节点到下一节点的移动都是利用概率选择策略实现的,概率选择策略只利用当前的信息去预测未来的情况,而不能利用未来的信息。
因此,人工蚂蚁和真实蚂蚁所使用的选择策略在时间和空间上都是局部的。
6. 粒子群优化算法
PSO从这种模型中得到启示并用于解决优化问题。PSO中,每个优化问题的解都是搜索空间中的一只鸟。我们称之为“粒子”。所有的粒子都有一个由被优化的函数决定的适应值(fitnessvalue),每个粒子还有一个速度决定他们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。
PSO初始化为一群随机粒子(随机解),然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个“极值”来跟踪自己。第一个就是粒子本身所找到的最优解。另一个就是整个种群目前找到的最优解。