1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【单目标优化求解】基于matlab遗传算法求解非线性目标函数最小值问题【含Matlab源码

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

时间:2024-04-22 09:18:49

相关推荐

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

一、获取代码方式

获取代码方式1:

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

获取代码方式2:

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

备注:

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

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

1 引言

2 遗传算法理论

2.1 遗传算法的生物学基础

2.2 遗传算法的理论基础

2.3 遗传算法的基本概念

2.4 标准的遗传算法

2.5 遗传算法的特点

2.6 遗传算法的改进方向

3 遗传算法流程

4 关键参数说明

三、部分源代码

clear allclcclose 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_partgeneration(i).x_bi = randi([0,1],1,parameter.nvar*parameter.m);%随机初始generation(i).cost = my_obj(generation(i).x_bi,parameter);endgeneration_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_partfitness(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_partgeneration_new(i).cost = my_obj(generation_new(i).x_bi,parameter);if generation_new(i).cost< best(iter).costbest(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);%-------------------endmeancost(iter) = mean([generation_new.cost]);disp(['Iteration ' num2str(iter) '| mean cost ' num2str(meancost(iter)) '| best_cost ' num2str(best(iter).cost)]);if iter==1dert_mean_cost = 1;elsedert_mean_cost = abs(meancost(iter) - meancost(iter-1));enditer = iter + 1;end

四、运行结果

五、matlab版本及参考文献

1 matlab版本

a

2 参考文献

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。