Skip to content
This repository has been archived by the owner on Jul 16, 2024. It is now read-only.

Serialization problem on multi-objective optimization in archipelagos [sf#8] #8

Closed
darioizzo opened this issue Feb 24, 2014 · 2 comments
Milestone

Comments

@darioizzo
Copy link
Member

Originally created by mmarcusx on 2012-10-23 15:46:20.

Evolution on a specific problem makes the archipelago crash.

To reproduce: download the problem from the attachment and then try:

from PyGMO import *
import dtlz4 as dt4
alg = algorithm.nsga_II(gen=1)
archi = archipelago()
archi.push_back(island(alg, dt4.dtlz4(restrict=[1,2]), 12))

archi.evolve(400)
archi[0]

(If you do not see the error, try another archi.evolve(400))

Stepping inside with pdb and checking state[1] reveals "-nan" values in the middle of all these numbers.

These -nans are somehow correlated to nans produced in population.cpp, in the method "update_crowding_d":

double df = get_individual(I[lastidx]).cur_f[i] - get_individual(I[0]).cur_f[i];
m_crowding_d[I[j]] += (get_individual(I[j+1]).cur_f[i] - get_individual(I[j-1]).cur_f[i])/df;

As with this particular problem, all individuals converge to one point, the border solutions are identical and thus df == 0.0

In the branch "development_marcus" is a workaround for the crowding distance implemented.

It is still unclear, why this bug is causing the archipelago to crash but is not reproducible by using a single island only. Moreover, the method in serialization.h to catch nans and infs seems not to work as we are dealing with negative nans here.

@darioizzo
Copy link
Member Author

Originally posted by mmarcusx on 2013-03-11 16:02:10.

  • status: open --> closed

@darioizzo
Copy link
Member Author

Originally posted by mmarcusx on 2013-03-11 16:02:11.

Negative -nans no longer occur in the computation of the crowding distance. Bug fixed.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant