资源简介
粒子群算法(启发式算法)的多目标优化,我也翻过一些这方面的论文。单目标与多目标优化主要区别在于多目标优化问题有多个目标函数,一个解对于某个目标来说可能是较好的,而对于其他目标来讲可能是较差的。因此,存在一个折衷解的集合,也就是所谓的Pareto集。教科书上,解决多目标优化问题的方法一般是,通过数学变换把多目标转换为单目标求解,但是实际问题中涉及到多目标优化问题往往具有非线性、不可微、不连续等特征,难以用数学方法搞定。而启发式算法则不需要这些严格条件,其实也是启发式算法兴起的原因。
![](http://www.nz998.com/pic/39448.jpg)
代码片段和文件信息
% ----------------------------------------------------------------------- %
% Example of use of the funcion MOPSO.m which performs a Multi-objective %
% Particle Swarm Optimization (MOPSO) based on Coello2004. %
% ----------------------------------------------------------------------- %
% Author: Victor Martinez Cagigal %
% Date: 15/03/2017 %
% E-mail: vicmarcag (at) gmail (dot) com %
% ----------------------------------------------------------------------- %
% References: %
% Coello C. A. C. Pulido G. T. & Lechuga M. S. (2004). Handling%
% multiple objectives with particle swarm optimization. IEEE Tran- %
% sactions on evolutionary computation 8(3) 256-279. %
% ----------------------------------------------------------------------- %
clear all; clc;
% Multi-objective function
%MultiObjFnc = ‘Schaffer‘;
MultiObjFnc = ‘Kursawe‘;
%MultiObjFnc = ‘Poloni‘;
%MultiObjFnc = ‘Viennet2‘;
%MultiObjFnc = ‘Viennet3‘;
%MultiObjFnc = ‘ZDT1‘;
%MultiObjFnc = ‘ZDT2‘;
%MultiObjFnc = ‘ZDT3‘;
%MultiObjFnc = ‘ZDT6‘;
switch MultiObjFnc
case ‘Schaffer‘ % Schaffer
MultiObj.fun = @(x) [x(:).^2 (x(:)-2).^2];
MultiObj.nVar = 1;
MultiObj.var_min = -5;
MultiObj.var_max = 5;
load(‘ParetoFronts/Schaffer.mat‘);
MultiObj.truePF = PF;
case ‘Kursawe‘ % Kursawe
MultiObj.fun = @(x) [-10.*(exp(-0.2.*sqrt(x(:1).^2+x(:2).^2)) + exp(-0.2.*sqrt(x(:2).^2+x(:3).^2))) ...
sum(abs(x).^0.8 + 5.*sin(x.^3)2)];
MultiObj.nVar = 3;
MultiObj.var_min = -5.*ones(1MultiObj.nVar);
MultiObj.var_max = 5.*ones(1MultiObj.nVar);
load(‘ParetoFronts/Kursawe.mat‘);
MultiObj.truePF = PF;
case ‘Poloni‘ % Poloni‘s two-objective
A1 = 0.5*sin(1)-2*cos(1)+sin(2)-1.5*cos(2);
A2 = 1.5*sin(1)-cos(1)+2*sin(2)-0.5*cos(2);
B1 = @(xy) 0.5.*sin(x)-2.*cos(x)+sin(y)-1.5.*cos(y);
B2 = @(xy) 1.5.*sin(x)-cos(x)+2.*sin(y)-0.5.*cos(y);
f1 = @(xy) 1+(A1-B1(xy)).^2+(A2-B2(xy)).^2;
f2 = @(xy) (x+3).^2+(y+1).^2;
MultiObj.fun = @(x) [f1(x(:1)x(:2)) f2(x(:1)x(:2))];
MultiObj.nVar = 2;
MultiObj.var_min = -pi.*ones(1MultiObj.nVar);
MultiObj.var_max = pi.*ones(1MultiObj.nVar);
case ‘Viennet2‘ % Viennet2
f1 = @(xy) 0.5.*(x-2).^2+(1/13).*(y+1).^2+3;
f2 = @(xy) (1/36).*(x+y-3).^2+(1/8).*(-x+y+2).^2-17;
f3 = @(xy) (1/175).*(x+2.*y-1).^2+(1/17).*(2.*y-x).^2-13;
MultiObj.fun = @(x) [f1(x(:1)x(:2)) f2(x(:1)x(:2)) f3(x(:1)x(:2))];
MultiObj.nVar = 2;
MultiObj.var_min = [-4 -4];
MultiObj.var_max = [4 4];
load(‘ParetoFronts/Viennet2.mat‘);
MultiObj.
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 12389 2017-04-21 19:57 ParetoFronts\Kursawe.mat
文件 2956 2017-04-21 22:32 ParetoFronts\Schaffer.mat
文件 161755 2017-04-21 22:43 ParetoFronts\Viennet2.mat
文件 220020 2017-04-21 21:48 ParetoFronts\Viennet3.mat
文件 10386 2017-04-21 22:47 ParetoFronts\ZDT1.mat
文件 15219 2017-04-21 23:04 ParetoFronts\ZDT2.mat
文件 15146 2017-04-21 22:48 ParetoFronts\ZDT3.mat
文件 15231 2017-04-21 23:21 ParetoFronts\ZDT6.mat
文件 5851 2017-12-18 17:52 example.m
文件 14652 2017-12-18 17:49 MOPSO.m
文件 1317 2017-12-18 04:53 license.txt
- 上一篇:基于matlab雷达信号仿真
- 下一篇:经济调度粒子群算法matlab源程序
相关资源
- 粒子群算法matlab工具箱
- 多目标跟踪 论文+代码
- 基于粒子群算法的非合作博弈的matl
- 粒子群算法优化pid源码 matlab仿真.ra
- 粒子群算法优化RBF网络matlab源码
- 基本粒子群算法,MATLAB文件的M文件编
- 有约束的基于适应度和连续世代策略
- 粒子群算法求解函数优化问题.zip
- matlab粒子群算法PSO实现函数极值优化
- matlab源码的IMM交互多目标单目标跟踪
- 多目标规划的求解方法及matlab程序
- MATLAB实现群体多目标优化算法MOALO蚁狮
- 多目标函数优化
- l粒子群算法工具箱psot
- MATLAB.遗传算法和粒子群算法程序设计
- 粒子滤波多目标跟踪
- 多目标优化文档及代码
- 多目标优化算法
- 超完整规范的多目标遗传优化算法M
- MATLAB 目标追踪单目标、多目标 可以运
- platEMO内涵几乎所有多目标优化问题的
- Matlab编写多目标优化算法NSGA-Ⅱ的详解
- 两个经典的多目标优化算法代码:N
- 多目标粒子群社团检测算法MODPSO
- matlab多目标跟踪算法及数据集
- 粒子群算法实例172434
- MATLAB 多目标粒子群算法源代码
- 基于粒子群算法的投影寻踪法matlab代
- 粒子群算法优化3-5-3多项式工业机器人
- 粒子群算法应用在路径规划matlab
评论
共有 条评论