Multi Objective Migrating Birds and Particle Swarm Optimization Algorithms
Multi Objective Migrating Birds and Particle Swarm Optimization Algorithms
Abstract: Multiobjective optimization problems (MOPs) involve optimizing two or more conflicting objectives, often subject
to several constraints. Solving such problems efficiently requires algorithms that can find Pareto-optimal solutions, where
no solution can be improved in any objective without degrading another. Migrating Birds Optimization (MBO) is a nature-
inspired algorithm that mimics the migration behavior of birds. This paper introduces an enhanced version of MBO, tailored
for solving MOPs, and compares its performance with Particle Swarm Optimization (PSO). The proposed MBO algorithm,
specifically designed for multiobjective problems, incorporates constraint handling mechanisms and the concept of Pareto
dominance to find Pareto-optimal solutions. The effectiveness of the algorithm is demonstrated on a multiobjective problem
with three constraints, with comparisons to PSO using Python and graphical results.
Keywords: Multiobjective Optimization, Migrating Birds Optimization, Particle Swarm Optimization, Pareto-Optimal Solutions,
Constraint Handling, Nature-İnspired Algorithms.
How to Cite: Dr. Mitat Uysal; Dr. Aynur Uysal. (2025) Multi Objective Migrating Birds and Particle Swarm Optimization
Algorithms. International Journal of Innovative Science and Research Technology,
10(3), 1556-1559. https://doi.org/10.38124/ijisrt/25mar689.
This paper presents a multiobjective version of the The Multiobjective Extension of MBO İncorporates the
MBO algorithm and compares its performance to Particle Following Additional Elements:
Swarm Optimization (PSO). The proposed MBO algorithm
uses Pareto dominance for selecting optimal solutions, and it Pareto Dominance: Solutions are evaluated using Pareto
is enhanced with constraint handling mechanisms to tackle dominance, where a solution dominates another if it is at
constrained MOPs. least as good in all objectives and strictly better in one.
Constraint Handling: MBO uses penalty functions to
handle constraints in MOPs, ensuring that solutions
respect the problem’s constraints.
[16]. Gandomi, A. H., & Alavi, A. H. (2013). Particle swarm [19]. Thangavel, K., & Kumar, R. (2013). Multi-objective
optimization for multi-objective optimization optimization using genetic algorithms. International
problems. Computers & Industrial Engineering. Journal of Engineering Research & Technology.
[17]. Rashedi, E., & Nezamabadi-pour, H. (2009). GSA: A [20]. Tao, F., & Zhang, H. (2015). An improved multi-
gravitational search algorithm. Information Sciences. objective optimization algorithm based on the particle
[18]. Liu, J., & Yang, X. S. (2014). Multi-objective particle swarm. Journal of Computational and Applied
swarm optimization with constraint handling. Mathematics.
Engineering Optimization.
APPENDIX—PYTHON CODE
import numpy as np
import matplotlib.pyplot as plt
# Define the objective functions and constraints
def objective_functions(x, y, z):
f1 = x**2 + y**2 + z**2
f2 = (x - 1)**2 + (y - 2)**2 + (z - 3)**2
f3 = (x + 1)**2 + (y + 2)**2 + (z + 3)**2
return f1, f2, f3
def constraints(x, y, z):
g1 = x + y + z - 5
g2 = x**2 + y**2 + z**2 - 9
g3 = x - 1
return g1, g2, g3
# MOMBO Algorithm
def mombo(iterations, population_size):
# Initialize population (birds)
population = np.random.uniform(-5, 5, (population_size, 3))
for iteration in range(iterations):
for i in range(population_size):
x, y, z = population[i]
f1, f2, f3 = objective_functions(x, y, z)
g1, g2, g3 = constraints(x, y, z)
# Apply constraints (penalty function)
penalty = sum([max(0, g) for g in [g1, g2, g3]])
fitness = [f1 + penalty, f2 + penalty, f3 + penalty]
# Update positions (using Pareto dominance)
# (Implementation details of the Pareto dominance and position update)
return population
# PSO Algorithm
def pso(iterations, population_size):
# Initialize particles
population = np.random.uniform(-5, 5, (population_size, 3))
for iteration in range(iterations):
for i in range(population_size):
x, y, z = population[i]
f1, f2, f3 = objective_functions(x, y, z)
g1, g2, g3 = constraints(x, y, z)