<div dir="ltr">Hello Everyone,<br><div>    </div><div>    <span style="color:rgb(0,0,0);white-space:pre-wrap">With the Google Summer of Code 2022 coming to an end, I hereby present the final report of my work, which I have done over the course of this summer. Everything that has a beginning must have an end, it has been my pleasure working with the pgRouting community and mentors and becoming a part of OSGeo.</span></div><div><span style="color:rgb(0,0,0);white-space:pre-wrap"><br></span></div><div><span style="color:rgb(0,0,0);white-space:pre-wrap">This report is in accordance with the guidelines set by <a href="https://developers.google.com/open-source/gsoc/help/work-product">Google</a> and <a href="https://lists.osgeo.org/pipermail/soc/2022-September/004962.html">OSGeo GSoC Admins</a>.</span></div><div><span style="color:rgb(0,0,0);white-space:pre-wrap"><br></span></div><div><span style="color:rgb(0,0,0);white-space:pre-wrap">1) a) </span><span style="color:rgb(36,41,47);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";box-sizing:border-box;font-weight:600">Title:</span><span style="color:rgb(36,41,47);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji""> </span>Adding Google OR-Tools functionality to pgRouting</div><div>    b) <b>Organisation: </b><span style="color:rgb(0,0,0);white-space:pre-wrap">pgRouting under OSGeo</span></div><div><span style="color:rgb(0,0,0);white-space:pre-wrap"><br></span></div><div><span style="color:rgb(0,0,0);white-space:pre-wrap">2) <b>Abstract:  </b></span><span style="color:rgb(0,0,0);white-space:pre-wrap">The GSoC project dealt with the implementation of the <a href="https://developers.google.com/optimization/bin/bin">OR-Tools Bin Packing</a> category </span><span style="color:rgb(0,0,0);white-space:pre-wrap">functions in the vrpRouting repository of pgRouting.</span></div><div><span style="white-space:pre-wrap;color:rgb(0,0,0)"><br></span></div><div><span style="white-space:pre-wrap;color:rgb(0,0,0)">Google OR-Tools is an open-source software suite that can solve optimization problems such </span><span style="white-space:pre-wrap;color:rgb(0,0,0)">as:</span></div><div><ul><li><font color="#000000"><span style="white-space:pre-wrap">Vehicle Routing</span></font></li><li>Flows</li><li>Integer and Linear Programming</li><li>Constraint Programming</li><li>Bin Packing</li></ul><div>The project dealt with implementing the OR-Tools Bin packing functionality as a PostgreSQL function so that it can be used directly in the database. It involved creating three functions in vrpRouting</div><div><ol><li>vrp_knapsack</li><li>vrp_multiple_knapsack</li><li>vrp_bin_packing</li></ol><div><span style="color:rgb(36,41,47);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";box-sizing:border-box">3)</span><span style="color:rgb(36,41,47);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";box-sizing:border-box;font-weight:600"> State of the Project Before GSoC:</span><span style="color:rgb(36,41,47);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji""> </span>Currently, in <a href="https://vrp.pgrouting.org/v0/en/introduction.html">vrpRouting</a>, Vehicle routing optimization functions with various constraints have been implemented and are in the experimental stage. No functions related to scheduling, linear optimization and bin packing have been implemented.<br></div></div></div><div><br></div><div>4) <b>The addition that my project brought to pgRouting:</b> </div>My project added the code, documentation (with the docqueries), and the pgTAP tests of these three functions: <div><ol><li>vrp_knapsack  </li><li>vrp_multiple_knapsack </li><li>vrp_bin_packing</li></ol><div>These functions can now provide solutions to Bin Packing problems in vrpRouting.</div></div><div><br></div><div>5) <b>Potential Future Work:  </b>The library can be extended to solve other optimization problems like:</div><div><ul><li>Vehicle Routing</li><li>Scheduling</li><li>Network Flows </li></ul></div><div><div>and also special functions (different signature but similar code) for different applications.</div></div><div><br></div><div>6) <b>Links:</b></div><div><ul><li><b>Tags:</b></li><ul><li>OR-Tools Bin Packing (2022-manas23601-ortools)<b>: </b><a href="https://github.com/pgRouting/GSoC-pgRouting/releases/tag/2022-manas23601-ortools">https://github.com/pgRouting/GSoC-pgRouting/releases/tag/2022-manas23601-ortools</a></li></ul><li><b>Pull Requests:</b></li><ul><li><b>Final Pull Request: </b>Experimental OR-Tools Category Bin Packing functions: <a href="https://github.com/pgRouting/vrprouting/pull/40">https://github.com/pgRouting/vrprouting/pull/40</a></li><li><b>Intermediate Pull Request: </b><a href="https://github.com/pgRouting/GSoC-pgRouting/pull/264">https://github.com/pgRouting/GSoC-pgRouting/pull/264</a></li></ul><li><b>Project Documentation:</b></li><ul><li><b>Wiki Page: </b>GSoC 2022 Add Google OR Tools functionality in vrpRouting: <a href="https://github.com/pgRouting/pgrouting/wiki/GSoC-2022-Add-Google-OR-Tools-functionality-in-vrpRouting">https://github.com/pgRouting/pgrouting/wiki/GSoC-2022-Add-Google-OR-Tools-functionality-in-vrpRouting</a></li><li><b>User's Documentation: </b>OR-Tools Category: <a href="https://manas23601.github.io/GSoC-pgRouting/dev/en/or_tools-category.html">https://manas23601.github.io/GSoC-pgRouting/dev/en/or_tools-category.html</a></li><li><b>PL/Python What is it and How to use it?: </b><a href="https://github.com/pgRouting/vrprouting/wiki/Pl-Python">https://github.com/pgRouting/vrprouting/wiki/Pl-Python</a></li></ul><li><b>Example Image: </b><a href="https://drive.google.com/file/d/1pNO3h-zs4EHkwRvBhDrsM1SJZGaN6Oe2/view?usp=sharing">https://drive.google.com/file/d/1pNO3h-zs4EHkwRvBhDrsM1SJZGaN6Oe2/view?usp=sharing</a></li><li><b>Media:</b></li><ul><li><b>FOSS4G 2022 Presentation: </b><a href="https://docs.google.com/presentation/d/1HbLVxSCwjrUiJE2cy3sdFihpyWihugJ02mJtr643B0Y/edit#slide=id.p1">https://docs.google.com/presentation/d/1HbLVxSCwjrUiJE2cy3sdFihpyWihugJ02mJtr643B0Y/edit#slide=id.p1</a></li></ul></ul><div>7) <b>Blog: </b> Work in Progress : <a href="https://manaspilot.blogspot.com/2022/08/google-summer-of-code.html">https://manaspilot.blogspot.com/2022/08/google-summer-of-code.html</a></div><div><br></div><div>I'm forever grateful for this opportunity. It has been a strange yet satisfying learning for me. I would be delighted if my code is useful to the community. Finally, thanks to my mentors Vicky and Ashish and all of you for your encouragement. Looking forward to contributing more and growing with the community.</div><div><br>Thanks and regards,<br>Manas Sivakumar<br></div></div><div><br></div></div>