1、智能优化计算课程试验报告实验要求:用遗传算法解决下面函数的极小值问题: 60| ,1cos401)(33012 iiii xxxXf遗传算法的具体实施策略不限,最好用 MATLAB,上交内容包括源程序和运行结果实验内容:目标函数是一个含有 30 维变量的复杂型超越函数,决定使用 MATLAB7.0 下的遗传函数工具箱来寻找函数最小值。一函数编辑在 m 文件下编辑目标函数:function y =fun(x);y = zeros(size(x,1),1); %产生一个列向量,(种群数)*1,作为预留解空间xSize, Dim = size(x); %xSize:种群数; Dim:变量x的维数in
2、dices = repmat(1:Dim, xSize, 1); %生成函数中i的空间矩阵 ,(种群数)*(变量维数)y = sum(x.2) / 4000) - prod(cos(x ./ sqrt(indices) + 1; %函数表达式,此处均采用矩阵点乘的形式二遗传算法参数设置通过 gatool(遗传算法工具箱) 设置参数,运行程序,选择合适参数。Number of variables(变量维数 ):30Population size:100Initial range:-600;600Selection function (选择函数): tournament(锦标赛); tournam
3、ent size:2Mutation function (变异函数): Uniform(); Rate:0.05Crossover function: Intermediate; Ratio: 0.05Generrations: 5000; Stall generations: Inf; Stall time limite: InfFitness function is vectorized: on其余均为工具箱默认参数。三运行程序将设置好参数的算法程序运行 30 次运行,最佳运行结果为:3.4937e-010x1x30 取值:1.0e-004 *-0.0097 0.0017 0.0587 -
4、0.0250 0.0765 0.0391 -0.0824 0.0653-0.0539 -0.3470 -0.1078 0.4388 0.0223 0.0363 0.0003 0.0228-0.0481 -0.4491 -0.5006 -0.2514 0.0608 -0.1022 0.3454 0.11460.0768 -0.0203 0.0910 -0.0571 0.0065 -0.1384500 1000 1500 2000 2500 3000 3500 4000 4500 500005001000GenerationFitnessvalueBest: 3.4999e-010 Mean: 1
5、5.08860 10 20 30 40 50 60 70 80 90 10005001000Fitness of Each Individual四保存遗传算法程序将在工具箱中编辑好的算法导出为 m 函数并保存:function X,FVAL,REASON,OUTPUT,POPULATION,SCORES = untitled% This is an auto generated M file to do optimization with the Genetic Algorithm and% Direct Search Toolbox. Use GAOPTIMSET for default G
6、A options structure.%Fitness functionfitnessFunction = fun;%Number of Variablesnvars = 30;%Start with default optionsoptions = gaoptimset;%Modify some parametersoptions = gaoptimset(options,PopInitRange ,-600 ; 600 );options = gaoptimset(options,PopulationSize ,100);options = gaoptimset(options,Gene
7、rations ,5000);options = gaoptimset(options,StallGenLimit ,Inf);options = gaoptimset(options,StallTimeLimit ,Inf);options = gaoptimset(options,PlotInterval ,30);options = gaoptimset(options,SelectionFcn , selectiontournament 2 );options = gaoptimset(options,CrossoverFcn , crossoverintermediate 0.05
8、);options = gaoptimset(options,MutationFcn , mutationuniform 0.05 );options = gaoptimset(options,Display ,off);options = gaoptimset(options,PlotFcns , gaplotbestf );options = gaoptimset(options,Vectorized ,on);%Run GAX,FVAL,REASON,OUTPUT,POPULATION,SCORES = ga(fitnessFunction,nvars,options);以上结果亦可在m
9、文件中直接运行获得。五修改参数,改进算法继续修改算法的相关参数,运行,寻找更优的算法1将 Generations 改为 10000 代,运行 6 次,得到的解为 3.2041e-013,x 取值为:1.0e-005 *-0.0008 -0.0319 0.0026 0.0009 0.0017 -0.0003 0.0047 0.00040.0020 -0.0023 -0.0006 -0.0018 -0.0061 0.0049 -0.0039 0.0010-0.1542 0.0039 -0.0046 -0.0029 -0.0037 0.0017 -0.0046 -0.00330.0090 -0.33
10、86 0.0132 -0.0013 -0.0015 0.0047如果算法不陷入局部最优,条件允许,通过增加 Generations,结果会更加逼近最优解。2将 Mutation rate 改为 0.1,Generations 仍为 10000 代运行 5 次,得到 y=0 的最优解,x 的取值为:1.0e-007 *0.0727 0.1472 -0.1360 0.1341 0.1999 0.1048 -0.0537 -0.04140.0798 -0.1442 -0.3390 0.3439 -0.1162 0.3160 -0.0368 0.0111-0.4248 -0.4128 0.3928 -
11、0.4598 -0.2377 -0.3688 0.4046 -0.4820-0.1920 0.2408 -0.3225 -0.2477 -0.1940 -0.31613Mutation rate:0.2,Crossover Ratio:0.2运行 10 次,最优结果为 1.4222e-012,x 取值:1.0e-005 *-0.0060 -0.0140 -0.0145 -0.0366 0.0176 -0.0019 -0.0633 -0.09450.0336 -0.1454 -0.0182 0.0028 -0.1411 0.0716 -0.2317 0.11340.0990 -0.0250 0.0808 -0.0626 0.1475 0.3507 0.2061 0.05490.2066 -0.3231 0.0079 -0.0948 -0.0661 0.2036结论从运行结果可以看出,当 x1x30 全部取 0 的时候,目标函数最优解为 0。通过遗传算法能够较好地逼近函数最优解,可见遗传算法是一种可行的寻优手段。对于本次实验结果基本满意,但是程序运行还不是很稳定,容易陷入局部最优,由于时间有限,对于遗传算法没有作更深一步的了解,使用的算法程序都比较简单,还不能用原代码编程。通过实验对智能算法的应用产生了一定的兴趣,在今后的学习中会注意这方面的学习。