Java教程

【优化求解】基于无序灰狼算法求解多目标问题matlab代码

本文主要是介绍【优化求解】基于无序灰狼算法求解多目标问题matlab代码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1 简介

Mirjalili 等人提出了一种新的群体智能算法———灰狼优化算法(GWO),并通过多个基准测试函数进行测试,从结果上验证了该算法的可行性,通过对比,GWO 算法已被证明在算法对函数求解精度和稳定性上要明显优于 PSO、DE 和 GSA 算 法。

生物在自然界严酷环境下,即使并不具有人类的高智能,但在相同的目标,即食物的激励下,通过不断地适应与集体合作都表现出了令人惊叹的群体智能。文献[6]基于狼群严密的组织系统及其精妙的协作捕猎方式,提出了一种新的群体智能算法———灰狼优化算法。

​2 部分代码

%% Non Sorted Grey Wolf Algorithm (NSGWO)

clc

clear all

D = 30; % Number of decision variables

M = 2; % Number of objective functions

K=M+D;

LB = ones(1, D).*0; %  LB - A vector of decimal values which indicate the minimum value for each decision variable.

UB = ones(1, D).*1; % UB - Vector of maximum possible values for decision variables.

Max_iteration = 100;  % Set the maximum number of generation (GEN)

SearchAgents_no = 100;      % Set the population size (Search Agent)

ishow = 10;

%% Initialize the population

% Population is initialized with random values which are within the

% specified range. Each chromosome consists of the decision variables. Also

% the value of the objective functions, rank and crowding distance

% information is also added to the chromosome vector but only the elements

% of the vector which has the decision variables are operated upon to

% perform the genetic operations like corssover and mutation.

chromosome = initialize_variables(SearchAgents_no, M, D, LB, UB);

%% Sort the initialized population

% Sort the population using non-domination-sort. This returns two columns

% for each individual which are the rank and the crowding distance

% corresponding to their position in the front they belong. At this stage

% the rank and the crowding distance for each chromosome is added to the

% chromosome vector for easy of computation.

intermediate_chromosome = non_domination_sort_mod(chromosome, M, D);

%% Perform Selection

% Once the intermediate population is sorted only the best solution is

% selected based on it rank and crowding distance. Each front is filled in

% ascending order until the addition of population size is reached. The

% last front is included in the population based on the individuals with

% least crowding distance

% Select NP fittest solutions using non dominated and crowding distance

% sorting and store in population

Population = replace_chromosome(intermediate_chromosome, M,D,SearchAgents_no);

%% Start the evolution process

% The following are performed in each generation

% * Select the parents which are fit for reproduction

% * Perfrom crossover and Mutation operator on the selected parents

% * Perform Selection from the parents and the offsprings

% * Replace the unfit individuals with the fit individuals to maintain a

%   constant population size.

Pareto = NSGWO(D,M,LB,UB,Population,SearchAgents_no,Max_iteration,ishow);

save Pareto.txt Pareto -ascii;  % save data for future use

%% Plot data

if M == 2

    plot_data2(M,D,Pareto)

elseif M == 3

    plot_data_TCQ(M,D,Pareto); 

end

3 仿真结果

4 参考文献

[1]孟安波, and 林艺城. "一种基于多目标的改进灰狼优化算法.", CN107067121A. 2017.

这篇关于【优化求解】基于无序灰狼算法求解多目标问题matlab代码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!