NiaPy icon indicating copy to clipboard operation
NiaPy copied to clipboard

Real (engineering) optimization problems

Open rhododendrom opened this issue 3 years ago • 3 comments

NiaPy problems which consist of benchmark functions offer an excellent way of benchmarking nature-inspired algorithms quickly. However, many researchers now prefer to evaluate their algorithms also on real-world optimization (e.g. engineering) problems.

Thus, I recommend a new feature which involves the implementations of some popular engineering problems as for example:

  • Welded beam design,
  • Pressure vessel design,
  • Speed reducer design, etc.

Some of these are presented in detail in following paper (Appendix): http://www.informatica.si/index.php/informatica/article/viewFile/204/201

Many of engineering problems are constrained in its nature. Is it possible to add some of the constraints-handling mechanisms in NiaPy?

rhododendrom avatar Jun 08 '21 14:06 rhododendrom

@zStupan, what do you think?

firefly-cpp avatar Aug 29 '21 19:08 firefly-cpp

@firefly-cpp Constraint handling can probably already be done by some sort of penalty method if you extend the Problem class, and something like ranking the solutions by degree of feasibility would take a lot of effort and restructuring of the whole library probably. I'll have a look at how other frameworks are doing it.

zStupan avatar Aug 29 '21 20:08 zStupan

I have managed to go over range-based constraints problem resolution under NiaPy by modifying the problem evaluation function to accept 0-1 ranged input variables applying offset and scale for each one of them. I used Differential Evolution for this.

sisco0 avatar Jan 01 '22 21:01 sisco0