differential evolution
Hello all, Having nothing to do with crystallography, I downloaded cctbx only to use the python implementation of the differential evaluation. I am not knowledgeable about the details of the algorithm so I have to ask this question: Is it normal to have population members with coordinates outside of the specified limits? Thanks and regards, Nikolay Mladenov
Hi Nikolav,
The limits are set only to define the initial sampling of the population.
The optimisation procedure can subsequently move anywhere it likes, which is
handy when the initial bounderies were not chosen properly. If you want to
restrict your search area, i suggested your reparametrise your refineable
variables such that they map from [a,b] to (-infty,+infty)
HTH
Peter
2010/7/13 Nikolay Mladenov
Hello all,
Having nothing to do with crystallography, I downloaded cctbx only to use the python implementation of the differential evaluation.
I am not knowledgeable about the details of the algorithm so I have to ask this question:
Is it normal to have population members with coordinates outside of the specified limits?
Thanks and regards,
Nikolay Mladenov
_______________________________________________ cctbxbb mailing list [email protected] http://phenix-online.org/mailman/listinfo/cctbxbb
-- ----------------------------------------------------------------- P.H. Zwart Research Scientist Berkeley Center for Structural Biology Lawrence Berkeley National Laboratories 1 Cyclotron Road, Berkeley, CA-94703, USA Cell: 510 289 9246 BCSB: http://bcsb.als.lbl.gov PHENIX: http://www.phenix-online.org SASTBX: http://sastbx.als.lbl.gov -----------------------------------------------------------------
The implementation of the algorithm seems wrong. As I understand it, the new generation has to be generated based on the old one, at which point every member of the old generation is replaced or not by its child. In the cctbx implementation every member is replaces as soon as it gives birth to a better child. I am not sure what the implications are but it probably reduces the gene pool. Nikolay.
Good point, so I tested it (quickly)
The current implementation needs 748 to minimize a 6D rosenbrock function.
If I update the code to make a temporary population and do not do an
'in place operation', things do not converge under the same settings.
The in place operation of solution vector updates is as far as I
understand in line with the pseudo code found here:
http://en.wikipedia.org/wiki/Differential_evolution
I could have made a mistake of course and if you can show me a code
modification that improves convergence, I'm happy to update the code.
HTH
Peter
On 16 November 2010 08:24, Nikolay Mladenov
The implementation of the algorithm seems wrong. As I understand it, the new generation has to be generated based on the old one, at which point every member of the old generation is replaced or not by its child. In the cctbx implementation every member is replaces as soon as it gives birth to a better child. I am not sure what the implications are but it probably reduces the gene pool.
Nikolay. _______________________________________________ cctbxbb mailing list [email protected] http://phenix-online.org/mailman/listinfo/cctbxbb
-- ----------------------------------------------------------------- P.H. Zwart Research Scientist Berkeley Center for Structural Biology Lawrence Berkeley National Laboratories 1 Cyclotron Road, Berkeley, CA-94703, USA Cell: 510 289 9246 BCSB: http://bcsb.als.lbl.gov PHENIX: http://www.phenix-online.org SASTBX: http://sastbx.als.lbl.gov -----------------------------------------------------------------
Hi Peter,
On Tue, Nov 16, 2010 at 12:13 PM, Peter Zwart
Good point, so I tested it (quickly)
The current implementation needs 748 to minimize a 6D rosenbrock function.
If I update the code to make a temporary population and do not do an 'in place operation', things do not converge under the same settings.
The in place operation of solution vector updates is as far as I understand in line with the pseudo code found here:
http://en.wikipedia.org/wiki/Differential_evolution
I could have made a mistake of course and if you can show me a code modification that improves convergence, I'm happy to update the code.
I don't have neither the knowledge nor the setup to do that. All I can say is that not only the speed of the convergence is important, but also the quality. I think the probability of mis-convergence is higher with the wikipedia algorithm. This is since when member N is updated it could get "genes" from member N+s, and because it is updated immediately, when member N+s is updated it could get its own "genes" back from member N ( I know it is not exactly that simple and it is mostly an idea since the "genes" go trough mutation). The symmetry of the algorithm is also broken a bit. I have also changed the end conditions in my code, I think you have a comparison of O(eps) and O(eps*eps) (or similar) as a conversion criteria. HTH , Nikolay
HTH
Peter
On 16 November 2010 08:24, Nikolay Mladenov
wrote: The implementation of the algorithm seems wrong. As I understand it, the new generation has to be generated based on the old one, at which point every member of the old generation is replaced or not by its child. In the cctbx implementation every member is replaces as soon as it gives birth to a better child. I am not sure what the implications are but it probably reduces the gene pool.
Nikolay. _______________________________________________ cctbxbb mailing list [email protected] http://phenix-online.org/mailman/listinfo/cctbxbb
-- ----------------------------------------------------------------- P.H. Zwart Research Scientist Berkeley Center for Structural Biology Lawrence Berkeley National Laboratories 1 Cyclotron Road, Berkeley, CA-94703, USA Cell: 510 289 9246 BCSB: http://bcsb.als.lbl.gov PHENIX: http://www.phenix-online.org SASTBX: http://sastbx.als.lbl.gov ----------------------------------------------------------------- _______________________________________________ cctbxbb mailing list [email protected] http://phenix-online.org/mailman/listinfo/cctbxbb
participants (2)
-
Nikolay Mladenov
-
Peter Zwart