一问题设置和结果1问题Fitnessfunction适应值函数是最小化目标函数。可以使用形式为@objfun函数句柄指定这个函数,其中objfun.m是返回一个量的函数文件。Numberofvariables变量个数是适应值函数中独立变量的个数.2约束Linearinequalities线性不等式是有矩阵A和向量b定义的Ax≤b。Linearequalities线性等式是有矩阵Aeq和向量beq定义的Aeq*x=beq。Bounds边界是变量的上界(Upper)和下界(Lower)。Nonlinearconstraintfunction非线性约束函数定义了非线性约束,可把这个函数定义为一个无名函数或者形式为@nonlcon的函数句柄,其中nonlcon.m是返回向量c和ceq的函数文件。非线性等式的形式是ceq=0,非线性不等式的形式是c≤0。3运行求解器并查看结果要运行求解器,单击start按钮。当算法终止时,状态和结果格中显示该算法终止的原因。二选项1.Population种群Populationoptions种群选项设置遗传算法的种群的选项。Populationtype种群类型设置适应值函数的输入类型和约束:(1)Doublevector条目为Double型的向量(2)Bitstring字节串即由0和1组成的二进制串。对于创建函数和变异函数,选择“均匀”或“自定义”;对于交叉函数,选择“分散”、“单点”、“双点”或“自定义”;不可以使用混合函数或非线性约束函数。(3)custom自定义对于交叉函数和变异函数,选择“自定义”;对于创建函数,选择自定义或提供一个初始种群;不可以使用混合函数或非线性约束函数。Populationsize种群规模指定了每一代有多少个体。如果你把种群规模设置为一个比1大的向量,算法会创建多个子种群。向量的每个条目指定一个子种群的规模。Creationfunction创建函数指定了创建初始种群的函数:Useconstraintdependentdefault使用约束依赖。如果没有约束,选择“均匀”;否则,选择“可行种群”。(1)Uniform均匀根据均匀分布创建随机初始种群;(2)Feasiblepopulation可行种群创建满足边界和线性约束的随机初始种群。Custom自定义可以提供自己的创建函数,必须产生在种群类型中定义的类型的数据。输入函数句柄@CreationFcn可以定义。Initialpopulation初始种群需要为遗传算法指定一个初始种群。如果你不设置初始种群,算法用创建函数创建一个函数。可以设置比种群规模更少的个体;如果这样做,创建函数创建的是最好的。Initialscore初始值设置初始种群的适应度,如果你不设置初始适应度,算法使用适应度函数计算适应度。Initialrange初始范围指定了初始种群的向量条目的上下界。可以用一个2行和初始长度做列的矩阵指定初始范围,第一行是初始种群的向量条目的下界,第二行是上界。如果指定初始种群为2行1列的矩阵,两个标量扩大为长度为初始长度的常数向量。2.Fitnessscaling适应值缩放缩放函数把适应值函数返回的初始适应值转换为适应选择函数的范围的值。Rank排序根据每一个个体的排名扩大或缩小原始的适应度。排序之后,个体的排名便是它的位置。最优个体的排名是1,次优个体的排名为2,以此类推。排序适应度缩放法消除了原始适应度的扩展效应。Proportional按比例使每个个体的期望(比例)与其原始适应度值成比例。当原始适应度值不在一个“好的范围”中,该策略会有缺陷。Top用最大适应度等同的扩大或缩小个体。如果选用了该策略,可以指定Quantity,即产生后代的最优个体的数目。Quatity必须是1到种群规模之间的整数,或介于0到1之间的表明占种群规模比例的分数。每一个个体都有相同的复制概率。其余的个体复制概率为0。Shiftlinear扩大或缩小初始适应度,使最优个体的期望值等于一个常数,定义此常数为“最大存活率”。Custom自定义自己可以定义缩放函数。输入一个形式为@ScaleFcn的句柄就可以定义。3.Selection选择选择函数是基于适应值缩放函数缩放之后的值为下一代选择父代。可以选择如下的选择函数:Stochasticuniform随机均匀产生一条线,每一个父代个体对应于线上的一段,线段的长度所占的比例相应于父代个体的期望值所占的比例。该算法以相同的步长沿线移动,每一步确定一个父代,算法确定其“着陆”的部分为一个父代。该算法的第一步是确定一个比步长小的均匀随机数。Remainder每一个个体的缩放之后的适应度的整数部分赋于父代,然后使用轮盘赌选择方法选择剩余的分数部分。Uniform均匀依据均匀分布函数,根据父代的期望和数目随机的选择父代。该方法是无定向搜索。均匀选择不是一个特别有效的搜索策略,但是可以用来测试遗传算法。Shiftlinear扩大或缩小初始适应度,使最优个体的期望值等于一个常数,定义此常数为“最大存活率”。Roulette轮盘赌模拟一个轮盘,使每一个个体所占的面积与其期望成正比。然后产生一个随机数,随机数落在个体的积累面积之内就选择这个个体作为父代。Tournament竞争随机的选择个体,这些被选择的个体的数目成为竞争规模,然后选择最优的个体使之成为父代。Custom自定义自己可以定义选择函数。输入一个形式为@SelectFcn的句柄就可以定义。4.Reproduction复制复制决定遗传算法在新的一代产生多少后代。Elitecount精英数下一代最少存活的个体数目。精英数应为小于或等于种群规模的正整数。Crossfraction交叉率参与交叉运算的个体所占比例。交叉率为0到1之间的一个分数。5.mutation变异变异函数使个体产生微小变化,扩大遗传算法搜索范围。在Mutationfunction中指定变异方程,可从下选择策略:Useconstraintdependentdefault策略:Gaussian指无约束;否则选adaptivefeasible,即自适应可行。Gaussian策略:为每个个体向量提供一个随机数,这个随机数从以零为中心的高斯分布中选出,这个分布的标准差由参数Scale(决定第一代的标准差)和Shrink(随着每代的变化控制标准差的收缩)决定。如果shrink是0则标准差是连续的;如果是1则标准差线性递减到0。Uniform均匀策略:这是一个两步的过程。首先,算法选择个体向量的一段进行变异,每个个体变异的概率相等。然后,算法交换选中的部分。Adaptivefeasible自适应可行策略:随机产生适应上一代变异方向。变异长度根据变异方向选择,这样就会满足非线性约束。Custom自定义:可以允许你写下自己的变异函数。格式为@MutateFcn,MutateFcn.m文件的语法详见帮助。6.Crossover交叉结合两个个体(父代)来形成一个新个体,用Crossoverfunction来设置交叉函数,可以选择的策略:Scattered分散策略:创造随机二进制向量。从第一个父代中选择向量中为“1”的位置,从第二个父代中选择向量中为“0”的位置,结合组成子代。例如:p1=[abcdefgh]p2=[12345678]randomcrossovervector=[11001000]child=[ab34e678]Singlepoint单点交叉策略:选择一个1到变量数的随机整数n,从第一个父代中选择一个向量,基因位置小于等于n片段,从第二个父代选择一个基因位置大于n的片段,连接这两个片段形成子代。例如:p1=[abcdefgh]p2=[12345678]randomcrossoverpoint=3child=[abc4567]Twopoint多点交叉策略:选择1到变量数间的两个整数m和n。算法从第一个父代中选择基因位置小于等于m的片段,从第二个父代中选择基因位置为m+1到n的片段,从第一个父代中选择基因位置大于n的片段,算法连接这些基因片段形成新基因。例如:p1=[abcdefgh]p2=[12345678]randomcrossoverpoints=3,6child=[abc456gh]Intermediate策略:以随机权重由父代产生子代。由参数Ratio控制:child1=parent1+…rand*Ratio*(parent2-parent1),Ratio可以是标量或是变量个数长度的向量,如果Ratio是[0,1]间的数,子代位于由父代位置定义的空间相反的顶点。Heuristic启发式策略:子代位于父代两点连成的直线,距离父代距离近适应值较好,距离父代远适应值较差。Arithmetic算数策略:子代是父代的差,在父代所在的直线上。Custom自定义策略:允许自定义交叉函数,以@CrossoverFcn调用,具体语法见帮助。7.Migration迁移是不同子代间个体的移动,如果种群规模(Populationsize)设定为长度大于1的向量则有算法产生。偶尔,子代中最优个体代替另一子代中的最差个体。可由以下三个参数控制迁移产生的频率:Direction指定迁移发生的方向,如果设为Forward,迁移在最后一代发生,就是第n个子代迁移到第n+1个子代;如果设为Both,则第n个子代既迁移到第n-1个子代也迁移到第n+1个子代。迁移可能陷入局部解,也就是最后一个子代迁移到第一个子代,第一个迁移到最后一个,为了防止这种情况要指定一个子代的规模为0。Fraction控制子代间移动的个体数。移动个体数要小于较小规模子代的个体数。如果从一个个体数为50的子代移动到个体数位100的子代,Fraction为0.1,则要移动0.1×50=5个个体。从一个子代移动到另一个的个体是要复制过去,移动源的子代不变。Interval控制移动间隔的代数。如果设置为20,则每20代移动一次。8.Algorithmsettings算法设置(针对非线性约束)初始惩罚(Initialpenalty)算法的初始值,必须大于等于1。惩罚因子(Penaltyfactor)当问题不满足要求的精度或者不满足约束时,就用惩罚因子加大惩罚参数。惩罚因子要大于1。9.Hybridfunction杂交函数允许在遗传算法终止后,再指定一个最小化函数。可选择项为:无fminsearch(无约束)patternsearch(有约束或无约束)fminunc(无约束)fmincon(有约束)设置此选项的命令行为“optmset(psoptimsetforpatternsearch)”10.stoppingcriteria停止准则Generations指定遗传算法的迭代次数。Timelimit指定遗传算法运行的最长时间,以秒为单位。Fitnesslimit最优适应值小于等于fitnesslimit则停止算法。Stallgenerations平均加权适应值函数小于functiontolerance。Stalltimelimit在一定间隔时间秒数内(stalltimelimit设定)适应值函数值没有提高,算法终止。Functiontolerance如果适应值函数在stallgenerations累计的变动小于functiontolerance,算法终止。Nonlinearconstrainttolerance超出非线性约束的最大终止容忍度。11.plotfunctions散点图绘制函数可以用散点图标示遗传算法执行时的不同方面。每方面在屏幕上用一个单独的轴表示。用“stop”键停止运行。Plotinterval指定区域中更新的代数。Bestfitness根据迭代次数标示出每代的最优函数值。Bestindividual标示出每代种群中,有最优适应值的个体的向量。Distance标示出每代种群中个体的平均距离。Expectation根据每代初始适应值标