• 大小: 450KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-11
  • 语言: Matlab
  • 标签: mopso  

资源简介

mopso 多目标粒子群算法 mopso 多目标粒子群算法 mopso 多目标粒子群算法 可直接运行

资源截图

代码片段和文件信息

% ----------------------------------------------------------------------- %
% 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
     文件        5702  2017-04-25 22:12  example.m
     文件       14646  2017-04-25 22:12  MOPSO.m
     文件        1317  2017-04-25 10:14  license.txt

评论

共有 条评论