【智能优化算法】基于黏菌优化算法求解多目标优化问题
(MOSMA)含Matlab代码
1 简介
This paper proposes a multi-objective Slime Mould Algorithm (MOSMA), a multi-objective variant
of the recently-developed Slime Mould Algorithm (SMA) for handling the multi-objective
optimization problems in industries. Recently, for handling optimization problems, several meta-
heuristic and evolutionary optimization techniques have been suggested for the optimization
community. These methods tend to suffer from low-quality solutions when evaluating multi-
objective optimization (MOO) problems than addressing the objective functions of identifying
Pareto optimal solutions' accurate estimation and increasing the distribution throughout all
objectives. The SMA method follows the logic gained from the oscillation behaviors of slime
mould in the laboratory experiments. The SMA algorithm shows a powerful performance
compared to other well-established methods, and it is designed by incorporating the optimal food
path using the positive-negative feedback system. The proposed MOSMA algorithm employs the
same underlying SMA mechanisms for convergence combined with an elitist non-dominated
sorting approach to estimate Pareto optimal solutions. As a posteriori method, the multi-objective
formulation is maintained in the MOSMA, and a crowding distance operator is utilized to ensure
increasing the coverage of optimal solutions across all objectives.
2 部分代码
3 仿真结果
function f = evaluate_objective(x,m)%% function f = evaluate_objective(x)%
Function to evaluate the objective functions for the given input vector% x. x is
an array of decision variables and f(1), f(2), etc are the% objective functions.
The algorithm always minimizes the objective% function hence if you would like to
maximize the function then multiply% the function by negative one. M is the
numebr of objective functions and% D is the number of decision variables. % This
functions is basically written by the user who defines his/her own% objective
function. Make sure that the M and D matches your initial user% input.% A set of
testing function is stored in folder TEST%% Retrieve function from folder TESTf =
zdt3(x); % change the name of function we can use different functionsend