【多目标优化求解】基于matlab自适应风驱动算法求解多目标优化问题【含Matlab源码 1414期】
一、获取代码方式
获取代码方式1:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。
获取代码方式2:
完整代码已上传我的资源:【多目标求解】基于matlab自适应风驱动算法求解多目标优化问题【含Matlab源码 1414期】
备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);
二、部分源代码
function MO_AWDO_v01()
%-------------------------------------------------------------------------tic; clear; close all; clc;
format long g;
%--------------------------------------------------------------ArchiveParetoFronts = [];% User defined parameters:
param.popsize = 100; % population size.
param.npar = 10; % Dimension of the problem.
param.maxit = 100; % Maximum number of iterations.
maximumV = 0.5; % maximum allowed speed.
%--------------------------------------------------------------% AWDO will select the coefficient values; alpha, RT, g, c, and Vmax:
rec.arx = rand(5,param.popsize); %consistent with the CMAES indexing
%---------------------------------------------------------------% Initialize WDO population, position and velocity:
% Randomize population position in the range of [-1, 1]:
pos = 2*(rand(param.popsize,param.npar)-0.5);
% Randomize velocity in the range of [-Vmax, Vmax]:
vel = maximumV * 2 * (rand(param.popsize,param.npar)-0.5);
%---------------------------------------------------------------% Evaluate initial population via multi-objective function:
for K=1:param.popsize,
% [f1,f2] = kursawe(pos(K,:));
% [f1,f2] = kita(pos(K,:));
% [f1,f2] = schaffer(pos(K,:));
% [f1,f2] = ZDT1(pos(K,:));[f1,f2] = ZDT4(pos(K,:));pres(K,:) = [f1,f2];
end
%----------------------------------------------------------------
%
% Call non-dominated sorting to identify the Pareto-front that each particle belongs:
posF=[pos, pres];
f = non_domination_sort_mod(posF, 2,param.npar); % f = [pos, f1, f2, rank]% extract the rank index, i.e. which Pareto-front the particle belongs:
rank_ind = f(:,param.npar+3);% Select the Pareto-front == 1 particles as Global Best Position:
globalposPOP = f( (f(:,param.npar+3) ==1) , 1:param.npar);
% Archieve the rank 1 particles:
ArchiveParetoFronts = [ArchiveParetoFronts; f( (f(:,param.npar+3) ==1) , 1:(param.npar+2) )];%-----------------------------------------------------------------
% Start iterations :
iter = 1; % iteration counter
for ij = 2:param.maxit,ij% Update the velocity:for i=1:param.popsize% choose random dimensions:a = randperm(param.npar); % choose velocity based on random dimension:velot(i,:) = vel(i,a);% randomly select a globalpos from the 1st Pareto-front members[aa, bb] = size(globalposPOP);globalpos = globalposPOP(round(((aa-1) * rand(1,1)) + 1),:);vel(i,:) = (1-rec.arx(1,i))*vel(i,:)-(rec.arx(2,i)*pos(i,:))+ ...abs(1-1/rank_ind(i))*((globalpos-pos(i,:)).*rec.arx(3,i))+ ...(rec.arx(4,i)*velot(i,:)/rank_ind(i)); end% maxV is optimized by CMAES. Limit it maximumV defined by usermaxV = rec.arx(5,:);maxV = min(maxV, repmat(maximumV, size(rec.arx(5,:),1), size(rec.arx(5,:),2)) );maxV = max(maxV, repmat(-maximumV, size(rec.arx(5,:),1), size(rec.arx(5,:),2)) );% Check velocity limits:vel = min(vel, repmat(maxV',1,param.npar));vel = max(vel, -repmat(maxV',1,param.npar));% Update air parcel positions:pos = pos + vel;pos = min(pos, 1.0);pos = max(pos, -1.0); % Evaluate population: (Pressure)for K=1:param.popsize,
% [f1,f2] = kursawe(pos(K,:));
% [f1,f2] = kita(pos(K,:));
% [f1,f2] = schaffer(pos(K,:));
% [f1,f2] = ZDT1(pos(K,:));[f1,f2] = ZDT4(pos(K,:));pres(K,:) = [f1,f2];end% Call non-dominated sorting to identify the Pareto-front that each particle belongs:posF=[pos, pres];f = non_domination_sort_mod(posF, 2,param.npar); % f = [pos, f1, f2, rank]% extract the rank index, i.e. which Pareto-front the particle belongs:rank_ind = f(:,param.npar+3);% Select the Pareto-front == 1 particles and add them to the archieve along previous Pareto-fronts:ArchiveParetoFronts = [ArchiveParetoFronts; f( (f(:,param.npar+3) ==1) , 1:(param.npar+2) )];% Run the non-dominated sort among the Archieve members:f = non_domination_sort_mod(ArchiveParetoFronts, 2,param.npar); % Replace the archieve with only the rank=1 members:ArchiveParetoFronts = f( (f(:,param.npar+3) ==1) , 1:(param.npar+2) );% Use rank=1 members as global position:globalposPOP = f( (f(:,param.npar+3) ==1) , 1:param.npar); %--------------------------------% call CMAES [rec] = purecmaes_wdo(ij,rec,param.popsize,pres(:, mod(ij,2)+1));%%% PRES has two values, pass one of the pres values at each iter%%% alternating between two.%----------------------------------------------------end%%% PLOT RESULTS:% Call non-dominant sorting:f = non_domination_sort_mod(ArchiveParetoFronts, 2,param.npar);% Plot the MO-results -- debugging purposespres2plot = f( (f(:,param.npar+3) ==1) , param.npar+1 : param.npar+2);plot(pres2plot(:,1), pres2plot(:,2),'ko')xlabel('F1'); ylabel('F2')grid on
% save('Results.mat','pres2plot')hold on% load the known-Pareto-front data for plotting:z = load('paretoZDT4.dat');[a,b]=sort(z(:,2));z = z(b,:);plot(z(:,1),z(:,2),'-k')end
% end-of-WDO.%----------------------------------------------------------------------
%----------------------------------------------------------------------
%----------------------------------------------------------------------
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
《智能优化算法及其MATLAB实例(第2版)》包子阳 余继周 杨杉著 电子工业出版社
【多目标优化求解】基于matlab自适应风驱动算法求解多目标优化问题【含Matlab源码 1414期】相关推荐
- 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】
一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...
- 【Matlab指纹识别】指纹识别门禁系统【含GUI源码 1692期】
一.代码运行视频(哔哩哔哩) [Matlab指纹识别]指纹识别门禁系统[含GUI源码 1692期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余继 ...
- 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】
一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...
- 【Matlab树叶分类】BP神经网络植物叶片分类【含GUI源码 916期】
一.代码运行视频(哔哩哔哩) [Matlab树叶分类]BP神经网络植物叶片分类[含GUI源码 916期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...
- 【Matlab水果蔬菜识别】形态学水果蔬菜识别【含GUI源码 919期】
一.代码运行视频(哔哩哔哩) [Matlab水果蔬菜识别]形态学水果蔬菜识别[含GUI源码 919期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅. ...
- 【Matlab青草识别】形态学马唐草+牛筋草识别【含GUI源码 908期】
一.代码运行视频(哔哩哔哩) [Matlab青草识别]形态学马唐草+牛筋草识别[含GUI源码 908期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...
- 【Matlab限速标志识别】形态学限速标志识别【含GUI源码 1142期】
一.代码运行视频(哔哩哔哩) [Matlab限速标志识别]形态学限速标志识别[含GUI源码 1142期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...
- 【APF三维路径规划】基于matlab人工势场算法无人机三维路径规划【含Matlab源码 168期】
一.获取代码方式 获取代码方式1: 通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码. 获取代码方式2: 完整代码已上传我的资源:[三维路径规划]基于matlab人工势场算法无人机三维 ...
- 【Matlab电力负荷预测】粒子群优化支持向量机短期电力负荷预测【含GUI源码 751期】
一.代码运行视频(哔哩哔哩) [Matlab电力负荷预测]粒子群优化支持向量机短期电力负荷预测[含GUI源码 751期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...
- 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】
一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...
最新文章
- 专业的秘密 | 南方医科大学生物信息学专业
- CCF大数据专家委:2018年大数据发展趋势预测
- [原创]Javascript类成员的作用域
- 赴马来西亚旅游遇车祸 70岁中国籍老人不幸身亡
- Springboot线程池的使用和扩展
- Yii2 mongodb 扩展的where的条件增加大于 小于号
- 10-10-010-简介-重要概念背诵
- mac用python爬虫下载图片_利用Python爬虫采集mac电脑皮肤|简明python教程|python入门|python教程...
- 阿里技术副总裁贾扬清、微软 CTO 韦青重磅出席 AI 开发者大会!
- 搭载Apple芯片的Mac如何使用macOS恢复?
- Win10下的Hp1020P打印机。
- z17刷机miui12教程_努比亚Z17 MIUI12开发版 匠心独特 完美ROOT 隐私升级 通知栏升级...
- Android转接电话到iPhone,Android迁移数据到iPhone
- 美中嘉和在港交所招股书失效:去年亏损约5亿元,杨建宇为实控人
- 吉林省注册公司流程:第一步 企业名称预先核准流程。
- CentOS 7下的软件安装方法及策略
- jre包括jvm和java核心类库_包含JVM标准实现及Java核心类库
- 数据分析: kaggle比赛 - 销量预测
- Vue3发布半年我不学,摸鱼爽歪歪,哎~就是玩儿
- (转)ibatis Tips 之 java.util.Map作为parameterClass和resultClass
热门文章
- maven搭建mybatis测试
- Python安装学习
- VMware系统运维(十一)部署虚拟化桌面 Horizon View 5.2 HTML ACCESS安装
- javascript二叉树基本功能实现
- sql server 2008r2 备份到局势网共享硬盘
- SouthidcEditor编辑器如何支持上传png图片
- POJ 2752 Seek the Name, Seek the Fame (KMP)
- 李昌镐究竟是不是神?
- learning opencv3: 一:overview 打开自己的视频文件加上暂停快进按钮
- 七月算法机器学习5 回归分析与工程应用 小案例