anyoptimization / pymoo

NSGA2, NSGA3, R-NSGA3, MOEAD, Genetic Algorithms (GA), Differential Evolution (DE), CMAES, PSO
https://pymoo.org
Apache License 2.0
2.13k stars 372 forks source link

Multiobjective PSO or ACO available in pymoo? #378

Closed PBerit closed 1 year ago

PBerit commented 1 year ago

Hi all,

I would like to know if other types of multiobjective optimization algorithms like Multi-objective particle swarm optimization (MO-PSO) or multi-objective ant colony optimization (MO-ACO) are available in pymoo. On the list of the website I could not find them and I am wondering why they are not there. From what I read it definitely makes sense to also use MO-ACO and MO-PSO for testing on a problem instead of only multi-objective evolutionary algorithms as pymoo mainly uses.

jacktang commented 1 year ago

Hi @PBerit, currently pymoo only supports SO-PSO without constraints.

PBerit commented 1 year ago

Thanks jecktang for your answer. Do you know if there are any plans of including PSO or ACO for multiobjective problems (with constraints) in pymoo? So far not many state-of-the-art algorithms are supported by pymoo for multiobjective optimization.

blankjul commented 1 year ago

What MO-PSO versions are you referring to? SMPSO or OMOPSO?

ACO has so far not been the focus of pymoo.

PBerit commented 1 year ago

I am referring to multi-objective particle swarm optimization in general. Is there any included in Pymoo?

blankjul commented 1 year ago

Currently not. Are you a researcher in this area and would be interested in contributing? I would be interested in adding one or more versions of PSO if you are interested.

PBerit commented 1 year ago

Thanks for the answer blankjul. I am not really a reseacher in that field altough I have a basic understanding. I just apply these methods without knowing too much about the details. I know that other frameworks for multiobjective optimization in Python have implemented it (e.g. jMetalPy https://github.com/jMetal/jMetalPy). So I was wondering why Pymoo does not include multiobjective PSO as it is one of the main metaheuristics for multiobjective optimization. For me it is kind of strange that it is not included and a big disadvantage, compared to other frameworks. Are there any plans from the Pymoo-team to include it soon?

blankjul commented 1 year ago

Probably not soon, but it definitely is a good consideration. If someone creates a PR reimplementation of the jMetaPy version I am more than happy to look at it.

Have you benchmarked the version you are referring to? Is it outperforming the NSGA-II implementation in pymoo?

PBerit commented 1 year ago

@blankjul : Thanks for your answer blank. What do you mean by PR reimplementation?

Actually I have not benchmarked the multi-objective PSO. As you know, the quality of metaheuristics strongly depend on the problem. So for some problems the evolutionary algorithms might work better than particle-swarm optimizaiton and for other it's vice versa. I think you find some problems in the literature where particle swarm optimizaiton is better than evolutionary algorithms (and vice versa). But okay, I understand that you don't have time to implement it and you choose to only implement evolutionary algorithms. I'll see whether I proceed using Pymoo or switch to jMetalPy. Thanks for the information.