[mlpack] [GSOC] Restructing Multi Objective Optimization Module
Marcus Edel
marcus.edel at fu-berlin.de
Thu Mar 11 11:57:41 EST 2021
Hello Nanubala,
welcome, great work on #269 and #263.
> My thoughts are, we could:
> 1) Create separate classes for CrossOvers, Mutations etc.
> 2) Use templates to access their functionality (much like the KernelType Policy <https://www.mlpack.org/doc/stable/doxygen/kernels.html>)
Using the policy-design pattern sounds like a good idea to me, one reason why
we haven't done this for the existing evolution-based optimizers is that they slightly
differ in functionality, but I can see that if we are going to implement more optimizers
that a restructure make sense especially if we can avoid code-duplication.
> During my GSOC I plan on
> a) Creating policy based structuring to outsource operator functions.
> b) Restructure currently implemented algorithms to fit to this principle
> c) Miscellaneous: Add more multiobjective algorithms.
I am interested to see if you have some method in mind for c). Implementing a
new optimizer can take some time, so we should make sure the selection is
reasonable in the context of the GSoC timeline.
Thanks,
Marcus
> On 10. Mar 2021, at 16:52, Nanubala Gnana Sai <gnanasai.n18 at iiits.in> wrote:
>
> Greetings! Team mlpack.
>
> I'm Nanubala Gnana Sai from the Indian Institute of Information Technology, Sri City. My IRC-Channel ID is @jonpsy. For quite some time, I've been contributing to mlpack, more specifically to the MOO algorithms of ensmallen. #269 <https://github.com/mlpack/ensmallen/pull/269> #263 <https://github.com/mlpack/ensmallen/pull/263>.
>
> During my work, I've taken references from multiple resources like Pagmo <https://esa.github.io/pagmo2/>, pymoo <https://pymoo.org/>, DEAP <https://deap.readthedocs.io/en/master/> and research papers. I couldn't help but notice these inefficiencies
>
> * Operators like Crossover, Mutation etc. are implemented per algorithm.
> * This causes bloated coated and increases potential errors.
>
> I really like how others, for ex: DEAP approaches this, they've implemented all the varieties of operators on a separate module <https://deap.readthedocs.io/en/master/tutorials/basic/part2.html> which can be called on by the optimizer. Upon reading our style guide, I think this fits perfectly with our policy based design principle.
>
> My thoughts are, we could:
> 1) Create separate classes for CrossOvers, Mutations etc.
> 2) Use templates to access their functionality (much like the KernelType Policy <https://www.mlpack.org/doc/stable/doxygen/kernels.html>)
>
> During the past year, I've contributed to shogun repository extensively so I have exposure building OOP-based structures, although admittedly I'm new to the policy-based design principle.
>
> During my GSOC I plan on
> a) Creating policy based structuring to outsource operator functions.
> b) Restructure currently implemented algorithms to fit to this principle
> c) Miscellaneous: Add more multiobjective algorithms.
>
> Suggestions and criticism are welcome!
>
>
> Best
> NGS
> _______________________________________________
> mlpack mailing list
> mlpack at lists.mlpack.org
> http://knife.lugatgt.org/cgi-bin/mailman/listinfo/mlpack
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://knife.lugatgt.org/pipermail/mlpack/attachments/20210311/c5548af6/attachment-0001.htm>
More information about the mlpack
mailing list