实验目的和意义

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、实验目的和意义

用遗传算法解决下面函数的极小值问题:

遗传算法的具体实施策略不限,最好用MATLAB,上交内容包括源程序和运行结果

二、实验原理

目标函数是一个含有30维变量的复杂型超越函数,决定使用MA TLAB下的遗传函数工具箱来寻找函数最小值。

三、详细设计步骤

1、函数编辑

在m文件下编辑目标函数:

function y =fun(x);

y = zeros(size(x,1),1); %产生一个列向量,(种群数)*1,作为预留解空间

[xSize, Dim] = size(x); %xSize:种群数; Dim:变量x的维数

indices = repmat(1:Dim, xSize, 1); %生成函数中i的空间矩阵,(种群数)*(变量维数)

y = sum(((x.^2) / 4000)')' - prod(cos(x ./

sqrt(indices))')' + 1; %函数表达式,此处均采用矩

阵点乘的形式

2、遗传算法参数设置

通过gatool(遗传算法工具箱)设置参数,运行程序,选择合适参数。

Number of variables(变量维数):30

Population size:100

Initial range:[-600;600]

Selection function (选择函数): tournament(锦标赛); tournament size:2

Mutation function (变异函数): Uniform(); Rate:0.05

Crossover function: Intermediate; Ratio: 0.05

Generrations: 5000; Stall generations: Inf; Stall time limite: Inf

Fitness function is vectorized: on

其余均为工具箱默认参数。

3、运行程序

将设置好参数的算法程序运行30次运行,最佳运行结果为:3.4937e-010

x1~x30取值:

1.0e-004 *

-0.0097 0.0017 0.0587 -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.1146

0.0768 -0.0203 0.0910 -0.0571 0.0065 -0.1384

4、保存遗传算法程序

将在工具箱中编辑好的算法导出为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 GA options structure.

%%Fitness function

fitnessFunction = @fun;

%%Number of Variables

nvars = 30;

%Start with default options

options = gaoptimset;

%%Modify some parameters

options = gaoptimset(options,'PopInitRange' ,[-600 ; 600 ]);

options = gaoptimset(options,'PopulationSize' ,100);

options = gaoptimset(options,'Generations' ,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 });

options = gaoptimset(options,'MutationFcn' ,{ @mutationuniform 0.05 });

options = gaoptimset(options,'Display' ,'off');

options = gaoptimset(options,'PlotFcns' ,{ @gaplotbestf });

options = gaoptimset(options,'Vectorized' ,'on');

%%Run GA

[X,FVAL,REASON,OUTPUT,POPULATION,SCORES] = ga(fitnessFunction,nvars,options);

以上结果亦可在m文件中直接运行获得。

5、修改参数,改进算法

继续修改算法的相关参数,运行,寻找更优的算法

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.0004

0.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.0033

0.0090 -0.3386 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.0414

0.0798 -0.1442 -0.3390 0.3439 -0.1162 0.3160 -0.0368 0.0111

-0.4248 -0.4128 0.3928 -0.4598 -0.2377 -0.3688 0.4046 -0.4820

-0.1920 0.2408 -0.3225 -0.2477 -0.1940 -0.3161

3.Mutation 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.0945

0.0336 -0.1454 -0.0182 0.0028 -0.1411 0.0716 -0.2317 0.1134

0.0990 -0.0250 0.0808 -0.0626 0.1475 0.3507 0.2061 0.0549

0.2066 -0.3231 0.0079 -0.0948 -0.0661 0.2036

四、总结

遗传算法(GA)是人工智能的重要新分支,是基于达尔文进化论,在计算机上模拟生命进化机制而发展起来的一门学科。它根据适者生存等自然法则来进行搜索和计算。对许多用传统数学难以解决或明显实效的复杂问题,特别是优化问题,GA提供了一个行之有效地新途径,也为人工智能的研究带来了新的生机。

简单遗传算法的三个基本运算是选择、交换、变异。

五、参考文献

李仁厚,智能控制理论和方法,西安电子科技大学出版社

相关文档
最新文档