Comments (6)
Regarding your last comments:
- Filtering by year but also considering the popularity (citation rate) 🤔.
- Regarding multiple comparisons, the Kruskal-Wallis rank sum test can be used to find statistical differences between multiple algorithms.
- CEC test problems combined with a set of real-world problems could be a good option.
I may suggest the following Julia packages to perform this study:
- DrWatson.jl as the project assistant.
- HypothesisTests.jl for the statistical tests.
- HardTestProblems.jl for the test problems.
Some questions:
- Which metaheuristics will be implemented? Maybe those filtered in which the original author's code is available.
- How to save the data (format)?
- Will the benchmarking be performed alongside this repo? Maybe creating a new repo could be a good option.
- How to set the parameter tuning?
from metaheuristics.jl.
That's a great idea. Let's work on it. I may start by suggesting:
- More metaheuristics: http://fcampelo.github.io/EC-Bestiary/
- A tutorial for comparing evolutionary and swarm intelligence algorithms: https://doi.org/10.1016/j.swevo.2011.02.002
- Review on metaheuristics and competitions: https://doi.org/10.1007/s12559-018-9554-0
from metaheuristics.jl.
There is a huge set of works included in the literature and I think it is not that straightforward to end up with super-comprehensive comparisons with tons of algorithms.
What is possible?
- Filtering the emergent algorithms or relatively new ones (maybe filtering by year?)
- Multiple comparisons are hard, single comparisons require a reference algorithm to extend the idea of single comparison to multiple ones, the reference algorithm can be selected as the long run winner, e.g., ABC, WOA, or something else?
- Selecting the test suite is not that problematic, a CECxx set can be selected, or creating a combined one is also possible.
These are my first thoughts after taking a look at the references you provided.
from metaheuristics.jl.
- Filtering by year but also considering the popularity (citation rate): Filtering by year and popularity is a better idea (but I am not sure how we would sort two dimensional points (year, popularity) objectively :)
- Maybe, and interestingly, we can select only the new ones and reveal potential stars? How about considering the less known and new ones only?
- The other option is to select some oldy and goldy ones with relatively new ones, e.g., GA, DE, and PSO with Newbee1, Newbee2, and Newbee3, where Newbee_i is a relatively new metaheuristics.
- Multiple comparisons is okay, perhaps using the
HypothesisTest.jl
package? HardTestProblems.jl
includes vast majority of test functions and thank you for listing this software, too!
Do we really need a project assistant for this? I suggest using separate files for each test function. In those files we can iterate a function, say that it is Ackley, for different p
(number of variables). The results can be simultaneously written in a csv
file or an sqlite
file. Ackley.sqlite
would hold all of the information such like
p | f | algorithm | etc... |
---|---|---|---|
5 | 0.002 | Whale | ... |
5 | 0.004 | Whale | ... |
5 | 0.029 | Whale | ... |
... | ........ | ........... | ....... |
for different p (number of parameters), algorithms, and algorithm configurations so we can later perform reports using SQL statements.
- Parameter setting is a difficult one, what should be the popsize, crossover rate for GA, or, what should be the DE special values? Maybe the suggested parameters can be used in the corresponding original paper - or maybe even software package defaults.
- Different parameter setting for several dimensionality, e.g., for
p = 5
,p = 10
,p = 25
,p = 50
, different popsizes such as 50, 100, 150, 200? (numbers are in random).
from metaheuristics.jl.
I agree with you. IMO, we can answer the remaining questions once we are ready to begin the benchmarking.
Let's implement new metaheuristics.
My suggestions (listed in the EC-Bestiary with available source code):
- Battle Royale Game: Farshi TR (2020). “Battle royale optimization algorithm.” Neural Computing and Applications, 33(4), 1139-1157. doi: 10.1007/s00521-020-05004-4 [code]
- Black Widow: Hayyolalam V, Kazem AAP (2020). “Black Widow Optimization Algorithm: A novel meta-heuristic approach for solving engineering optimization problems.” Engineering Applications of Artificial Intelligence, 87, 103249. doi: 10.1016/j.engappai.2019.103249 [code]
- Border Collie: Dutta T, Bhattacharyya S, Dey S, Platos J (2020). “Border Collie Optimization.” IEEE Access, 8, 109177-109197. doi: 10.1109/access.2020.2999540 [code]
- Red Fox: Połap D, Woźniak M (2021). “Red fox optimization algorithm.” Expert Systems with Applications, 166, 114107. doi: 10.1016/j.eswa.2020.114107 [code]
- Social Behavior: Urbanization: Ghasemian H, Ghasemian F, Vahdat-Nejad H (2020). “Human urbanization algorithm: A novel metaheuristic approach.” Mathematics and Computers in Simulation, 178, 1-15. doi: 10.1016/j.matcom.2020.05.023 [code]
- Chameleons: Braik MS (2021). “Chameleon Swarm Algorithm: A bio-inspired optimizer for solving engineering design problems.” Expert Systems with Applications, 174, 114685. doi: 10.1016/j.eswa.2021.114685 [code]
Related software: mealpy a python library implementing some metaheuristics.
from metaheuristics.jl.
I've just taken a look the code provided for the "Battle royale optimization algorithm". What is the best option? Directly converting the Matlab code into the corresponding Julia code? Or reading the papers and preparing our own implementations?
PS: I am not a good Matlab programmer nor ever used it. It seems the code uses an object of a soldier
data type which is not implemented elsewhere.
from metaheuristics.jl.
Related Issues (20)
- Issues from encapsulating `State` in `Algorithm` HOT 2
- Is there a reason the samplers generate row instead of column matrices? Julia is column major HOT 1
- Metaheuristics.jl doesn't compile in Julia v1.11.0-alpha1 HOT 1
- Multiple constraints handling in constrained optimization
- Proposals for Combinatorial Optimization HOT 1
- Feature request: allow passing a random generator or create a fresh generator for `optimize`
- Callable objects are not supported by `optimize`
- Printing progress to terminal when running optimization? HOT 3
- New features coming in next release HOT 3
- Reuse intervals from IntervalSets.jl HOT 2
- 3.3 version: many types stopped working HOT 2
- How to access non-dominated points in multiobjective optimization? HOT 5
- Real-valued GA example in documentation HOT 1
- Combinatorial Space HOT 1
- xfgh_solution vs xFgh_solution vs xf_solution HOT 4
- Handle unstable objective function output HOT 2
- Docs not accessible? HOT 1
- Error on convergence termination criterion when multi-objective problem
- Typo in `update_state!` for DE.jl HOT 2
- Slight grammatical error in Contributions section of ReadME
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 metaheuristics.jl.