<div dir="ltr"><div dir="ltr">Hello everyone,<br><br>With the GSoC period coming to an end, I hereby present the final report of my work, which I did over the past 10 weeks. It has been a great experience working twice during GSoC with the pgRouting community and the mentors.</div><div dir="ltr">This report is in accordance with the guidelines set by Google [1] and OSGeo GSoC Admins [2].<br><br><div>1. (a) <b>Title</b>: VRP functionality with VROOM on the database for pgRouting</div><div>    (b) <b>Organization</b>: pgRouting under OSGeo.</div><div><br></div><div>2. <b>Abstract</b>:</div><div>The GSoC project dealt with the implementation of the VROOM category functions in the vrpRouting repository of pgRouting.<br></div><div><br></div><div>VROOM is an open-source optimization engine that aims at providing good solutions to various real-life vehicle routing problems (VRP) within a small computing time. It can solve several well-known types of vehicle routing problems (VRP):<br><ul><li>TSP (travelling salesman problem)</li><li>CVRP (capacitated VRP)</li><li>VRPTW (VRP with time windows)</li><li>MDHVRPTW (multi-depot heterogeneous vehicle VRPTW)</li><li>PDPTW (pickup-and-delivery problem with TW)</li><li>VROOM can also solve any mix of the above problem types.</li></ul></div><div>The project dealt with implementing the VROOM functionality as a PostgreSQL function so that it can be used directly in the database. It involved creating the three functions in vrpRouting - <font face="monospace">vrp_vroom</font>, <font face="monospace">vrp_vroomJobs,</font> and <font face="monospace">vrp_vroomShipments</font>.</div><div><br></div><div>3. <b>The state of the project before GSoC</b>:</div><div>The vrpRouting repository was created a few months before the starting of the GSoC program, by extracting the code of the pgrouting repository involving the VRP functions. It initially contained the functions to solve the Pickup-and-Delivery problem (vrp_pgr_pickDeliver and vrp_pgr_pickDeliverEuclidean) and the Single Depot VRP problem (vrp_oneDepot). However, the VROOM functionality was not implemented in vrprouting. The three functions that I created under the VROOM category did not exist before GSoC.</div><div><br></div><div>4. <b>The addition that my project brought to pgRouting</b>:</div><div>My project added the code, documentation (with the docqueries), and the pgTAP tests of these three functions:</div><div><ul><li><font face="monospace">vrp_vroom</font> - Vehicle Routing Problem with VROOM, involving both jobs and shipments.</li><li><font face="monospace">vrp_vroomJobs</font> - Vehicle Routing Problem with VROOM, involving only jobs.</li><li><font face="monospace">vrp_vroomShipments</font> - Vehicle Routing Problem with VROOM, involving only shipments.</li></ul></div><div>We wanted some standard external library for solving the VRP problems (similar to how the other pgRouting functions used Boost for adding the graph algorithms), and that was made available through these functions that I created during GSoC.</div><div><br></div><div>5. <b>Potential Future Work</b>:</div><div>The implementation of these functions is complete. We can create more similar functions having different signatures based on the use-case, such as replacing the time with timestamps. The VROOM functionality can be tested by creating performance tests. Also, the build can be made compatible with other OS, such as macOS and Windows, as the build perhaps fails on macOS. Different applications of the functions can be studied, and specific functions can be made based on that.</div><div><br></div><div>6. <b>Links</b>:</div><div><br></div><div>(i) <b>Users Documentation</b>:</div><div><ul><li style="margin-left:15px">VROOM - Category (Experimental): <a href="https://vrp.pgrouting.org/dev/en/vroom-category.html" target="_blank">https://vrp.pgrouting.org/dev/en/vroom-category.html</a></li><li style="margin-left:15px">vrp_vroom - Experimental: <a href="https://vrp.pgrouting.org/dev/en/vrp_vroom.html" target="_blank">https://vrp.pgrouting.org/dev/en/vrp_vroom.html</a></li><li style="margin-left:15px">vrp_vroomJobs - Experimental: <a href="https://vrp.pgrouting.org/dev/en/vrp_vroomJobs.html" target="_blank">https://vrp.pgrouting.org/dev/en/vrp_vroomJobs.html</a></li><li style="margin-left:15px">vrp_vroomShipments - Experimental: <a href="https://vrp.pgrouting.org/dev/en/vrp_vroomShipments.html" target="_blank">https://vrp.pgrouting.org/dev/en/vrp_vroomShipments.html</a></li><li style="margin-left:15px">VROOM data section in Sample Data: <a href="https://vrp.pgrouting.org/dev/en/sampledata.html" target="_blank">https://vrp.pgrouting.org/dev/en/sampledata.html</a></li></ul><div>(ii) <b>Tag</b>:</div><div><ul><li style="margin-left:15px">VROOM Category functions: <a href="https://github.com/pgRouting/GSoC-pgRouting/releases/tag/2021-krashish8-vroom-category" target="_blank">https://github.com/pgRouting/GSoC-pgRouting/releases/tag/2021-krashish8-vroom-category</a></li></ul></div>(iii) <b>Pull Requests</b>:</div><div><ul><li style="margin-left:15px">Final Pull Request: Experimental VROOM Category functions - vrp_vroom, vrp_vroomJobs, vrp_vroomShipments - <a href="https://github.com/pgRouting/vrprouting/pull/10" target="_blank">https://github.com/pgRouting/vrprouting/pull/10</a></li><li style="margin-left:15px">Subsequent Pull Request for updating documentation: Added name in contributors list, updated release notes - <a href="https://github.com/pgRouting/vrprouting/pull/11" target="_blank">https://github.com/pgRouting/vrprouting/pull/11</a></li><li style="margin-left:15px">Intermediate weekly Pull Requests created in GSoC-pgRouting repository: <a href="https://github.com/pgRouting/GSoC-pgRouting/pulls?q=is%3Apr+author%3Akrashish8+created%3A%3E2021-01-01" target="_blank">https://github.com/pgRouting/GSoC-pgRouting/pulls?q=is%3Apr+author%3Akrashish8+created%3A%3E2021-01-01</a></li></ul>(iv) <b>Wiki Page</b>:</div><div><ul><li style="margin-left:15px">VRP functionality with VROOM on the database: <a href="https://github.com/pgRouting/pgrouting/wiki/GSoC-2021-VRP-functionality-with-VROOM-on-the-database" target="_blank">https://github.com/pgRouting/pgrouting/wiki/GSoC-2021-VRP-functionality-with-VROOM-on-the-database</a></li></ul>7. <b>Image</b>:</div><div><ul><li style="margin-left:15px">Example of Garbage Collection with dummy data, solved using the VROOM-category functions: <a href="https://drive.google.com/file/d/1C1povjJG5OE1aHGpLcDyetVSXDrPntI6/view?usp=sharing" target="_blank">https://drive.google.com/file/d/1C1povjJG5OE1aHGpLcDyetVSXDrPntI6/view?usp=sharing</a></li></ul>8. <b>Media</b>:</div><div><ul><li style="margin-left:15px">Slide Demonstration: <a href="https://docs.google.com/presentation/d/1hQeRd-BpQfaz2cMViOenhpQun6Mvi28dnislwvbG73M/edit?usp=sharing" target="_blank">https://docs.google.com/presentation/d/1hQeRd-BpQfaz2cMViOenhpQun6Mvi28dnislwvbG73M/edit?usp=sharing</a></li></ul></div><div><br></div><div>I'm glad to participate in the GSoC program twice as a student developer. I would be happy if my code proves beneficial to the community. Thanks to everyone for the support!</div><div><br></div><div>Thank you,<br>Ashish Kumar.</div><div><br></div><div>[1]. <a href="https://developers.google.com/open-source/gsoc/help/work-product" target="_blank">https://developers.google.com/open-source/gsoc/help/work-product</a></div><div>[2]. <a href="https://lists.osgeo.org/pipermail/soc/2021-August/004804.html" target="_blank">https://lists.osgeo.org/pipermail/soc/2021-August/004804.html</a></div><div><br></div></div></div>