Closed RafaHPSUnicamp closed 2 years ago
Hi Rafael,
(I have removed the issue under the hvwfg repository and I will answer here. Actually, you could have opened a discussion on https://github.com/anyoptimization/pymoo)
It is hard to answer your question. If I run the code that you have provided and try to solve vectorized_problem
, C-TAEA returns 19 valid results all with negative f1 and negative constraints (as it should since pymoo assumes g_i(x) <= 0). Also g1 to g8 seem redundant to setting the upper bounds (xu = ...
).
Where do you see the positive value for f1? I run some tests and found some possible X that generate positive f1 values (e.g. X = array([[ 600000, 650000, 500000, 1500000, 309853, 930190, 14197, 55525, 0.1, 1]])
.
Internally, C-TAEA will keep invalid solutions, but res.opt should contain only valid individuals.
I am also curious, what were the problems with NSGA-II and NSGA-III that you switched to C-TAEA?
So, Cyril. I wanted to analyze the results of NSGA-II, NSGA-III and C-TAEA with Pymoo, since they are the only evolutionary algorithms possible to use on my model. I recently did the same with the NSGA-II and NSGA-III and I found great results. The problems are the same, with the only difference being that I switched the C-TAEA part with the NSGA-II and NSGA-III part.
from pymoo.algorithms.nsga2 import NSGA2 from pymoo.factory import get_sampling, get_crossover, get_mutation
algorithm = NSGA2( pop_size=1100, n_offsprings=10, sampling=get_sampling("real_random"), crossover=get_crossover("real_sbx", prob=0.9, eta=15), mutation=get_mutation("real_pm", eta=20), eliminate_duplicates=True )
from pymoo.factory import get_termination
termination = get_termination("n_gen", 1000)
Also, another issue that I am seeing that the some C-TAEA points cannot obey the restrictions. It will more clear if I check any point, and see that restrictions related to g11 and g12 are not obeyed in some points. If you export the CSV archives, manually checking you can see that. In "Planilha 1".
So, it is common for C-TAEA to ignore some restrictions?
Kind regards,
Em ter., 3 de mai. de 2022 às 05:25, Cyril Picard @.***> escreveu:
Hi Rafael,
(I have removed the issue under the hvwfg repository and I will answer here. Actually, you could have opened a discussion on https://github.com/anyoptimization/pymoo)
It is hard to answer your question. If I run the code that you have provided and try to solve vectorized_problem, C-TAEA returns 19 valid results all with negative f1 and negative constraints (as it should since pymoo assumes g_i(x) <= 0). Also g1 to g8 seem redundant to setting the upper bounds (xu = ...).
Where do you see the positive value for f1? I run some tests and found some possible X that generate positive f1 values (e.g. X = array([[ 600000, 650000, 500000, 1500000, 309853, 930190, 14197, 55525, 0.1, 1]]).
Internally, C-TAEA will keep invalid solutions, but res.opt should contain only valid individuals.
I am also curious, what were the problems with NSGA-II and NSGA-III that you switched to C-TAEA?
— Reply to this email directly, view it on GitHub https://github.com/epfl-lamd/modact/issues/1#issuecomment-1115850690, or unsubscribe https://github.com/notifications/unsubscribe-auth/ARLXSODBORVFHDJU3V5MWL3VIDPGXANCNFSM5U5CMCTQ . You are receiving this because you authored the thread.Message ID: @.***>
-- Rafael Henrique Pinto e Silva Engenheiro de Energia pela Pontifícia Universidade Católica de Minas Gerais Mestre em Planejamento em Sistemas Energéticos pela Universidade Estadual de Campinas Administrador do Conexão Na7ural http://trakto.link/conexaona7
Just to clarify, I am not the author of C-TAEA, but I have written the python implementation based on the C code from the author. This is the original paper:
K. Li, R. Chen, G. Fu, and X. Yao, “Two-Archive Evolutionary Algorithm for Constrained Multiobjective Optimization,” IEEE Transactions on Evolutionary Computation, vol. 23, no. 2, pp. 303–315, Apr. 2019, doi: 10.1109/TEVC.2018.2855411.
It uses two populations : the convergence archive and the diversity archive. The diversity archive never considers constraints. The convergence archive is updated normally only with individuals the respect the constraints, but, as an idea, to improve convergence, it can include individuals from the diversity archive. The paper gives the whole picture.
These are "internal" populations. At the end of your optimization, you should only consider res.opt
.
I believe C-TAEA can suffer from normalization problems that lead to the behavior that you are seeing (only few individuals are in res.opt
. This is expected based on the algorithm. Different algorithms work differently and it seems that C-TAEA is not adapted to your problem.
Hi, Cyril. How was doing?
I am doing a multiobjective optimization about minimization and maximization. My algorithm does work well in NSGA-II and NSGA-III, but there is a problem with the C-TAEA.
As an example, the f1 results are supposed to be only negative (due to code), but there are also positive points (which does not appear in the NSGA-II and NSGA-III). In addition, the restrictions also does not to be obeyed. What is wrong to the C-TAEA code? Can you help me? I already send an e-mail to Julian Blank, but he recommends that I need to talk to you about this problem. The code is at the end of this email, writted using the Pymoo.
Here what Julian answers me about my C-TAEA problem.
Code here:
Kind regards,
Rafael