Skip to content

Commit

Permalink
Set incremental pareto as an option
Browse files Browse the repository at this point in the history
  • Loading branch information
rsreds committed Nov 2, 2023
1 parent b20544b commit 2748a73
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions optimizer/mopso.py
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,8 @@ def __init__(self, objective_functions,
num_iterations=100,
optimization_mode='individual',
max_iter_no_improv=None,
num_objectives=None):
num_objectives=None,
incremental_pareto=False):
self.objective_functions = objective_functions
if FileManager.loading_enabled:
try:
Expand All @@ -233,6 +234,7 @@ def __init__(self, objective_functions,
self.particles = [Particle(lower_bounds, upper_bounds, num_objectives, num_particles)
for _ in range(num_particles)]
self.iteration = 0
self.incremental_pareto = incremental_pareto
self.pareto_front = []

def save_attributes(self):
Expand All @@ -254,6 +256,7 @@ def save_attributes(self):
'social_coefficient': self.social_coefficient,
'max_iter_no_improv': self.max_iter_no_improv,
'optimization_mode': self.optimization_mode,
'incremental_pareto': self.incremental_pareto,
'iteration': self.iteration
}
FileManager.save_json(pso_attributes, "checkpoint/pso_attributes.json")
Expand Down Expand Up @@ -310,6 +313,7 @@ def load_checkpoint(self, num_additional_iterations):
self.social_coefficient = pso_attributes['social_coefficient']
self.max_iter_no_improv = pso_attributes['max_iter_no_improv']
self.optimization_mode = pso_attributes['optimization_mode']
self.incremental_pareto = pso_attributes['incremental_pareto']
self.num_iterations = num_additional_iterations
self.iteration = pso_attributes['iteration']

Expand Down Expand Up @@ -394,7 +398,10 @@ def update_pareto_front(self):
"""
Update the Pareto front of non-dominated solutions across all iterations.
"""
particles = self.particles + self.pareto_front
particles=self.particles
if self.incremental_pareto:
particles = particles + self.pareto_front

self.pareto_front = [copy.deepcopy(particle) for particle in particles
if not particle.is_dominated(particles)]

Expand Down

0 comments on commit 2748a73

Please sign in to comment.