Matlab遗传算法性能测试
来源:互联网 发布:java 防止 sql注入 编辑:程序博客网 时间:2024/05/19 12:29
遗传算法,结合生物学遗传规则用于问题最优解求解,具有广泛的用途。
然而,由于其属于不确定性算法,故在搜索性能和最优解的稳定性上仍有待改善。
利用Matlab的遗传算法,编写代码如下:
function [ output_args ] = ga_testclear;%解:X = [0, 0, ...]%nVar = 30%dims: [-30, 30] function fitness = sphere(vals) prod = vals .* vals; fitness = sum(prod, 2); end%f(x) = 1/4000 * sum^n_1(x_i)^2 - prod^n_1 * cos(x_i/sqrt(i)) + 1%f* = 0, x* = [0, 0, ...];%nVar = 30%dims: [-600, 600] function fitness = griewank(vals) [h w] = size(vals); p1 = vals.^2; p1 = 1/4000 .* sum(p1, 2); t = sqrt([1:w]); p2 = vals ./ repmat(t, h, 1); p2 = cos(p2); p2 = prod(p2, 2); fitness = p1 - p2 + 1; end%解: X* = [1, 1, 1, ...]%nVar: 30 function fitness = RosenBroek(vals) [k n] = size(vals); vals1 = vals(:, 1:n-1); vals2 = vals(:, 2:n); tmp = vals2 - vals1 .* vals1; tmp = 100 * tmp .* tmp; tmp1 = (vals1 - 1).^2; fitness = sum(tmp, 2) + sum(tmp1, 2); end%许多局部最小值,最优解:X = [0, 0], 固定2个变量%nVar = 2 function fitness = Rastrigin (X) v = X.^2 - 10 .* cos(2 * pi .* X) + 10; fitness = sum(v, 2); end%参数popSize = 50; % 群规模Run = 4; % 测试轮次option = gaoptimset('PopulationSize', popSize); %, 'UseParallel', true);Ans = {};for r = 1:Run %轮次 Func = r; % 测试适应度函数 switch Func case 1 Func = @sphere Xmin = -100; Xmax = 100; nVar = 30; case 2 Func = @griewank Xmin = -600; Xmax = 600; nVar = 30; case 3 nVar = 30; Func = @RosenBroek Xmin = -100; Xmax = 100; case 4 nVar = 2; Func = @Rastrigin Xmin = -5.12; Xmax = 5.12; end; tic; [Ans{r}.bestGene, Ans{r}.bestFit] = ga(Func, nVar, [], [], [], [], repmat(Xmin, nVar, 1), repmat(Xmax, nVar, 1), [], option); costt = toc Ans{r}.costtime = costt;end %可运行30轮,查看结果for r = 1:Run fprintf('fit=%f, costtime=%f(s) \n', Ans{r}.bestFit, Ans{r}.costtime); %Ans{r}.bestGeneend;end运行结果:
Func =
@ga_test/sphere
Optimization terminated: average change in the fitness value less than options.TolFun.
costt =
4.2468
Func =
@ga_test/griewank
Optimization terminated: average change in the fitness value less than options.TolFun.
costt =
4.2952
Func =
@ga_test/RosenBroek
Optimization terminated: maximum number of generations exceeded.
costt =
14.4236
Func =
@ga_test/Rastrigin
Optimization terminated: average change in the fitness value less than options.TolFun.
costt =
0.2880
fit=0.000100, costtime=4.246814(s)
fit=0.000150, costtime=4.295222(s)
fit=1.511176, costtime=14.423554(s)
fit=0.000000, costtime=0.288025(s)
从运行时间来看,算法的性能不好。
故类似遗传算法、微分进化等方法,仍有待提出新的机制和算法以解决此类问题。
- Matlab遗传算法性能测试
- matlab遗传算法
- MATLAB-遗传算法
- Matlab实现遗传算法
- MATLAB遗传算法实例
- 遗传算法MATLAB
- 遗传算法MATLAB
- 遗传算法MATLAB
- 一个matlab遗传算法源程序
- Matlab遗传算法(一)
- matlab遗传算法工具箱(GADs)
- MATLAB遗传算法函数总结
- 简单遗传算法MATLAB实现
- 遗传算法matlab仿真实例
- 简单遗传算法MATLAB实现
- 遗传算法的matlab实现
- 遗传算法的matlab实现
- 简单遗传算法MATLAB实现
- 东大OJ-Prim算法
- 8月1日 Git Branch Revert 简历应用
- 算法一(复杂度)
- Matlab微分进化算法及优化函数测试
- developer.biao.daily.20140801
- Matlab遗传算法性能测试
- 13.9 Edit Distance
- 创业公司铁律——“一个中心,两个基本点,四项基本原则,三个代表”
- android的notification的写法
- 4 随机现实图片特效
- 添加删除软件不能正常使用
- java 源码与API
- java 容器
- USACO Cowcycles 解题报告