Giter Club home page Giter Club logo

Comments (6)

jmejia8 avatar jmejia8 commented on August 18, 2024 1

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:

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.

jmejia8 avatar jmejia8 commented on August 18, 2024

That's a great idea. Let's work on it. I may start by suggesting:

from metaheuristics.jl.

jbytecode avatar jbytecode commented on August 18, 2024

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.

jbytecode avatar jbytecode commented on August 18, 2024
  • 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.

jmejia8 avatar jmejia8 commented on August 18, 2024

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.

jbytecode avatar jbytecode commented on August 18, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.