Arc III: The Confluence

Nanubala Gnana Sai
2 min readSep 3, 2021

Nearly three months have passed since Google Summer of Code’ 21 began. This is the final blog as a summary of all the work which happened and closure to the saga.

The original goal was to lay the seeds for Multi-objective suites of problems for the library. To reiterate, a multi-objective problem is a special class of problem suites where multiple conflicting objectives are to be minimized simultaneously. This yields a set of equally optimal solutions known as “Pareto Front”.

The following was achieved in the said period:

  • Improvising NSGA-II: NSGA-II is the status quo of the multi-objective optimizer (MOO) and was implemented already by one of my mentors. My goal was to work upon its speed, increase readability. I also ended up fixing bugs in the main loop.
  • Performance metrics: Since this problem suite is an entirely separate entity, defining metrics to measure performance is paramount for future progress. Built a framework for indicators and added the IGD+ Epsilon indicators.
  • Test Suite: A test suite to benchmark future MOO algorithms is required. Zitzler-Deb-Thiele (ZDT) is a set of 6 objective functions designed to test an algorithm’s ability to converge in an artificially constructed hindrances environment. (More on Arc I).
  • Callbacks: As the algorithm proceeds to converge, it’s of interest to track the evolutionary process. That is, to query the current Pareto Front at some defined rate. This simply wasn’t possible with the existing code-base, so I had to build a separate callback module for MOO from scratch and use it here.
  • New Algorithms: Now that the framework is ready, it’s time to release the Krake- I mean algorithm. Multi-objective evolutionary algorithm- Differential Variant (MOEA/D-DE) is a state-of-the-art MOO algorithm. The algorithm in itself is more of a “system”, in which the user can plug and choose the “Decomposition” and “Weight Initialization” policy via template arguments.
  • Benchmark: It’s often a good idea to measure newer algorithms against existing ones to test the claims of the paper. Benchmarks revealed 32x boost in speed and a 20% higher convergence in IGD+ metric compared to NSGA-II. Not bad at all.
  • Real-life applications: Now comes the fun part, to demonstrate the uses of these algorithms in real-world problems. In particular, in Portfolio Optimization and Rocket Injector design problem. For the latter, a Unity WebGL game was created to simulate the injector surface of a rocket within the notebook itself!

The defining characteristic of this project was not the new algorithms or the interactive notebooks, but the framework which was built. This framework would be the cornerstone for future algorithms to be added to this library. From having crude support for multi-objective algorithms to being on par with the hottest multi-objective libraries, this sure was an exciting journey.

--

--