anyoptimization / pymoo

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

RuntimeWarning: invalid value encountered in cast multiarray.copyto(a, fill_value, casting='unsafe') #611

Open alibaba613 opened 2 months ago

alibaba613 commented 2 months ago

I keep getting this warning (it links to the numpy folder on my laptop). I was using an outdated version of numpy and updated it to 1.26.2, but the problem persisted for both. I'm avoiding updating to numpy 2.0 to avoid huge compatibility issues with other packages. This is the test problem:

from pymoo.algorithms.moo.nsga3 import NSGA3
from pymoo.algorithms.moo.unsga3 import UNSGA3
from pymoo.algorithms.moo.nsga2 import NSGA2
from pymoo.optimize import minimize
from pymoo.problems import get_problem
from pymoo.util.ref_dirs import get_reference_directions
from pymoo.visualization.scatter import Scatter

# create the reference directions to be used for the optimization
ref_dirs = get_reference_directions("das-dennis", 3, n_partitions=12)

# create the algorithm object
algorithm = NSGA3(pop_size=92,
                  ref_dirs=ref_dirs)

# execute the optimization
res = minimize(get_problem("dtlz1"),
               algorithm,
               seed=1,
               termination=('n_gen', 600))

Scatter().add(res.F).show()

The warning only appears when I use NSGA3 or UNSGA3, and not NSGA2. It should be noted that the warning also only appears on the first run, and not any other subsequent runs unless I restart the Jupyter Notebook kernel. Considering the problem I'm using actually requires ~9 hours to run, I wanted to ask if it is necessary to run the quick dtlz1 beforehand just to fix the warning before running my main problem, or if it isn't something I should worry about.

blankjul commented 2 months ago

Can you post the warning you are receiving here as well?

(+1 on the compatabilty issues. I have not looked into the numpy changelog yet and see what changes for pymoo)

alibaba613 commented 2 months ago

Hey Julian, I appreciate the response. The full warning is this: [rest of filepath]\site-packages\numpy\core\numeric.py:330: RuntimeWarning: invalid value encountered in cast multiarray.copyto(a, fill_value, casting='unsafe') There's no more traceback or anything

blankjul commented 2 months ago

I am not able to reproduce this warning. What OS are you using? (might be tricky to fix. Happy to look at a PR if you find where the warning occurs)