单目标优化求解基于matlab遗传算法求解非线性目标函数最小值问题含Matlab源码 1574期

Posted 紫极神光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单目标优化求解基于matlab遗传算法求解非线性目标函数最小值问题含Matlab源码 1574期相关的知识,希望对你有一定的参考价值。

一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【单目标优化求解】基于matlab遗传算法求解非线性目标函数最小值问题【含Matlab源码 1574期】

获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、遗传算法简介(附课程作业报告)

1 引言


2 遗传算法理论
2.1 遗传算法的生物学基础


2.2 遗传算法的理论基础




2.3 遗传算法的基本概念






2.4 标准的遗传算法


2.5 遗传算法的特点


2.6 遗传算法的改进方向

3 遗传算法流程



4 关键参数说明

三、部分源代码

clear all
clc
close all
%% 参数
parameter.nvar = 2;
parameter.xmin = -1;
parameter.xmax = 1;
parameter.m = 50; 
parameter.k = 15;%控制适配值之间差异的常数
parameter.num_part =10;
itermax = 2000;
crossover_probability = 0.5;
mutation_probability = 0.001;
num_part = parameter.num_part;
nvar = parameter.nvar; 
xmin = parameter.xmin;
xmax = parameter.xmax;
m = parameter.m;

   %% 初始化
    generation = repmat([], num_part, 1);
    for i = 1:num_part
        generation(i).x_bi = randi([0,1],1,parameter.nvar*parameter.m);%随机初始
        generation(i).cost = my_obj(generation(i).x_bi,parameter);
    end
   
   generation_new =generation;   
   dert_mean_cost = 1;
    
iter = 1;
while(dert_mean_cost>1e-10&&iter<=itermax)
generation = generation_new;
%% 复制选择
[cost_sort index] = sort([generation.cost]');
generation_sort = generation(index);%从小到大 对应
   for i = 1:num_part
      fitness(i) = parameter.k*(num_part-i)/num_part;
   end 
fitness_percent = fitness/sum(fitness);
[generation_selet] = percent_select(generation_sort,fitness,parameter); 
%% 交叉
 [generation_cross] = crossover(generation_selet,crossover_probability,parameter);
%% 变异,                     
[generation_new] = mutation(generation_cross,mutation_probability,parameter);

best(iter).cost = 10;
 
for i = 1:num_part
    generation_new(i).cost = my_obj(generation_new(i).x_bi,parameter);
    if generation_new(i).cost< best(iter).cost
        best(iter).cost = generation_new(i).cost;
        best(iter).x_bi = generation_new(i).x_bi;
    end
    %-------------------------------
    x_obj =generation_new(i).x_bi;
    b(1) = bi2de(x_obj(1:m));
    b(2) = bi2de(x_obj(m+1:nvar*m));
    x = xmin + b*(xmax-xmin)/(2^m-1);
    tempX(iter,i) =x(1);
    tempY(iter,i) =x(2);
    %-------------------
end
    meancost(iter) = mean([generation_new.cost]);
        disp(['Iteration ' num2str(iter) '| mean cost ' num2str(meancost(iter)) '| best_cost ' num2str(best(iter).cost)]);
     if  iter==1
        dert_mean_cost = 1;
     else
          dert_mean_cost = abs(meancost(iter) - meancost(iter-1));
     end
    iter = iter + 1;
end

四、运行结果


五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
《智能优化算法及其MATLAB实例(第2版)》包子阳 余继周 杨杉著 电子工业出版社

以上是关于单目标优化求解基于matlab遗传算法求解非线性目标函数最小值问题含Matlab源码 1574期的主要内容,如果未能解决你的问题,请参考以下文章

优化求解基于matlab遗传算法结合粒子群算法求解单目标优化问题含Matlab源码 1659期

单目标优化求解基于matlab非线性权重的自适应鲸鱼算法求解单目标优化问题(NWAWOA)含Matlab源码 1665期

单目标优化求解基于matlab粒子群算法求解非线性目标函数最小值问题含Matlab源码 1573期

多目标优化求解基于matlab遗传优化萤火虫算法求解多目标优化问题含Matlab源码 1484期

多目标优化求解基于matlab遗传优化萤火虫算法求解多目标优化问题含Matlab源码 1484期

优化求解基于matlab粒子群与遗传算法混合算法求解切削参数优化问题(以成本和碳排放量为目标函数)含Matlab源码 1619期