单目标优化求解基于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期