Comments (3)
Nothing odd here. All is intended behavior.
There several problems with the use of the archipelago
and the algorithm
detailed above.
- If you use the archipelago with
pg.de
and pop_size=1 the "error occurred" is to be expected asde
is a population based algorithm and needs at least a population of size 4. - When an archipelago raises error in the islands, you can inspect those exceptions by calling the
wait_check
method. See https://esa.github.io/pagmo2/docs/python/tutorials/using_archipelago.html#managing-exceptions. If you do so you will see that the exeption is likely to be "de needs at least 4 individuals ...." - Simulated annealing is not population based and, as documented, only evolves one selected individual in the population. Which is what the code above shows.
- "Notice that only the island with the smallest fitness" should be "Notice that only the chromosome with the smallest fitness" -> Which is what sa is supposed to do.
- " most of the fitness vectors change using pg.de()" -> again thats intended behaviour of de. Since the user only evolves for one generation (use of default parameters)
Will close this and let the user rethink what he is doing and in case ask for help in gitter.
from pagmo2.
Thanks for those explanations. I've read and re-read the documentation for c++ and python versions quite a few times, and never understood that an archipelago acts as you suggested. I'm sorry if I use the wrong terms here, but I understand that an archipelago is a collection of islands, and each island is a population of N potential solution vectors to a problem. I thought that evolving an archipelago was just a threaded/parallel way of evolving a population. So if I set up a population of size=96, it will create 96 test vectors for a problem, and then use the algorithm to minimize all 96 of them. I understood an archipelago of n=6 islands with pop_size=16 would also create 96 test vectors and minimize all 96 of them, but using 6 threads so it runs 6x faster. Instead, you seem to be saying that such an archipelago will create 96 test vectors but only evolve the lowest initial champion on each island with simulated annealing, and leave the other 15 alone? However, with the differential-evolution algos, it will minimize all 96 vectors?
Whether I'm right or not, I hope this indicates that the documentation may be missing some important information, or it may be placed in a non-obvious place, or stated in a confusing way.
from pagmo2.
We are always happy to improve the documentation, If you point us exactly to bits that confused you we can consider rewording.
An archipelago is a set of islands, each containing a population. When evolving, the archipelago evolves the population in each island in parallel. To inspect the best individual in each isalnd you can write archi.get_champions_f()
, while your line above: archi[0].get_population().get_f()
gets all the fitness vectors of the population living in the isalnd wth id 0.
Did you follow the many tutorial available in the web pages? In case you found confusing statements there too, let us know.
As for what individual evolves: its the whole population that evolves, but for non - population based algorithm (such as simulated annealing) one must pick one only individual.
from pagmo2.
Related Issues (20)
- [BUG] mhaco asserts if initial population does not verify constraints
- MinGW installation problem HOT 1
- how to run pagmo2 in parallel cluster? HOT 1
- [BUG] redundant code in moead.cpp HOT 2
- [BUG] Could NOT find pagmo_IPOPT (missing: PAGMO_IPOPT_INCLUDE_DIR) HOT 1
- [BUG] No 2.19.0 tag HOT 2
- [BUG] moead_gen is not documented HOT 2
- [FEATURE] PAGMO_VERSION HOT 2
- Scaling of design variables and
- How to optimize with algorithms::ipopt? HOT 2
- [BUG] Maximize function with Ipopt: incorrect population returned HOT 2
- [BUG] Compilation problem with IPOPT HOT 7
- Question: Use of Hessian with Ipopt
- pagmo-devel 2.19 build 3 not found by meson build system HOT 5
- Passing arguments in a user defined problem HOT 6
- Uninitialized variables may be used in cec2014 problem
- MPI Island class for cluster computing HOT 1
- Avoid multiple definitions of mathematical constants
- No "NaN/infinity" verification in sbx crossover implementation AND no bounds verification for NSGA-II's initial population
- Add NSGA-III implementation
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pagmo2.