- 
          
 - 
                Notifications
    
You must be signed in to change notification settings  - Fork 376
 
GSoC 2023 Implement pgr_withPointsKSP and Add Overloads
- Proposal
 - Participants
 - Weekly Report and Plan
 - Log of Pull Requests
 - Final Report
 
The project aims implement pgr_withPointsKSP and all its overloads.
Yen's algorithm computes single-source K-shortest loopless paths for a graph with non-negative edge cost. It employs any shortest path algorithm to find the best path, then proceeds to find K − 1 deviations of the best path.
Sometimes the applications work “on the fly” starting from a location that is not a vertex in the graph. Those locations, in pgRouting, are called points of interest.So this function will modify the graph to include these points of interest and, using Yen’s Algorithm finds K shortest paths.
Currently, the pgRouting repository implements the pgr_withPointsKSP function with only single signature (one to one).
Current Signature
pgr_withPointsKSP(Edges SQL, Points SQL start vid, end vid, K, [options])
options: [directed, heap_paths, driving_side, details]
RETURNS SET OF (seq, path_id, path_seq, node, edge, cost, agg_cost)
OR EMPTY SET
However, it is not an official pgRouting function but its available for users.
- Adding all overloads will refrain users from writing and executing multiple queries.
 - Proposed Signatures :-
 
pgr_yen_withPoints(Edges SQL, Points SQL, start vid, end vid, K,[options])
pgr_yen_withPoints(Edges SQL, Points SQL, start vid, end vids, K,[options])
pgr_yen_withPoints(Edges SQL, Points SQL, start vids, end vid, K,[options])
pgr_yen_withPoints(Edges SQL, Points SQL, start vids, end vids,K,[options])
pgr_yen_withPoints(Edges SQL, Points SQL, Combinations SQL, K,[options])
options: [directed, heap_paths, driving_side, details])
RETURNS SET OF (seq, path_id, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)
OR EMTPY SET
- The proposed function will return the same set of columns for all overloads, reducing users' and developers’ developing time.
 - The function will help users to calculate the K Shortest Paths not only between two vertices but also between the points (such as restaurants, supermarkets, etc.) closer to the particular edge and combinations of two.
 - Why the name is to be changed:
- using the algorithm's author name, which will generalize better with the users and will help them to look up for the function in documentation easily.
 - Postgres does not allow two functions with the same set of input parameters but with different output columns
 - Adding these algorithms to pgRouting will result in more functionalities in pgRouting which will help the current and future users and developers to use and integrate with other algorithms.
 
 
- pgr_withPointsKSP => pgr_yen_WithPoints
 - Have pgr_yen_WithPoints with all overloads:
- one to one
 - one to many
 - many to one
 - many to many
 - combinations
 
 - driving_side CHAR: Value in [r,R,L,l] indicating if the driving side is:
- r,R for right driving side
 - l,L for left driving side
 - Any other value (including NULL) will be considered as r
 
 - Return columns on all overloads: seq, path_id, path_seq, start_vid, end_vid, node, edge, cost, agg_cost
 - pgTap test equivalence with pgr_withPoints when K = 1 and the points are actual vertices on the graph
 - Documentation of the new function
 - Documentation on how to migrate to the new function
 
Detailed Proposal in PDF format
| Title | GitHub Handle | Name | 
|---|---|---|
| 1st Mentor | @krashish8 | Ashish Kumar | 
| 2nd Mentor | @cvvergara | Vicky Vergara | 
| Student Software Developer | @Abhinj | Abhinav Jain | 
-Introduce myself to the community, interact with mentors, and actively get involved in the discussion. -Setting up the Development Environment -Develop a better understanding of PostgreSQL, PostGIS and how they interact with pgRouting. -Set up the wiki page to keep track of weekly progress.
- Introductory mail [SoC], [pgRouting-dev]
 - Community Bonding Period Report [SoC], [pgRouting-dev]
 
- Create new one-to-one renamed function
 - Reuse and duplicate Code wherever possible
 - Deeply study pgr_withPointsKSP
 
Report Mail - [SoC], [pgRouting-dev]
What did I get done this week?
- Created a branch where i will be working.
 - Tasks in the issue #289
 - Understand the working of the function and its calls.
 - Added my name in contributor's list and Made a PR.
 
Plans for the next week:-
- Will try to replicate what vicky did in this for pgr_kspWithPoints.
 - Start standardizing columns of the function
 
Am I blocked on anything?
- No, Currently I am not blocked to anything.
 
- Create a basic skeleton for C, C++, SQL, and pgTap Tests
 
Report Mail - [SoC], [pgRouting-dev]
What did I get done this week?
- Watch Twitch about the simplification of bdAstar.
 - Tried to simplify the withPoints_ksp function similar to dijkstra but getting errors in github actions.
 
Plans for the next week:-
- Will resolve the issues facing during week 2.
 - Standardise the output columns.
 
Am I blocked on anything?
- No, Currently I am not blocked to anything.
 
- Create C++ containers for passing SQL data to C++ containers for data processing
 - Refine the code
 
Report Mail - [SoC], [pgRouting-dev]
What did I get done this week?
- Had a meeting with mentors and identified a new function signature, which can be found #300
 - Standardised the output columns of withPointsKSP
 
Plans for the next week:-
- I will start testing my implemented function and backward compatibility
 
Am I blocked on anything?
- As my sister's wedding draws near, my focus and dedication will be centered around this occasion. However, rest assured that I am committed to reclaiming and fulfilling my work obligations in the forthcoming weeks.
 
Report Mail - [SoC], [pgRouting-dev]
What did I get done this week?
- Removed unused code
 - Worked on Backward compatibility
 
Plans for the next week:-
- Catch up on my week 4 work.
 - Fix pgtap cases.
 
Am I blocked on anything?
- Sister's Wedding
 
Report Mail - [SoC], [pgRouting-dev]
What did I get done this week?
- Bug fixes in output columns
 - Some testing with doc queries
 
Plans for the next week:-
- Catch up on my week 5 work.
 - Will start working on documentation.
 - pgtap test cases
 
Am I blocked on anything? I currently do not have any blocking issues and can proceed with my tasks smoothly.
Report Mail - [SoC], [pgRouting-dev]
What did I get done this week?
- added more docqueries
 - worked on feedback provided by vicky
 
Plans for the next week:-
- Catch up on my week 6 work.
 - Have to more work on feed provided by vicky
 
Am I blocked on anything? I currently do not have any blocking issues and can proceed with my tasks smoothly.
- Submit a working pgr_yen_withPoints function with its documentation without pgTap tests
 
Report Mail - [SoC], [pgRouting-dev]
What did I get done this week?
- Discussed the meaning of 
driving sidewith mentors and other GSoC students. - Updated old Code for backward compatibility
 - Updated Docqueries for newer function
 - Changed SQL functions to v4
 
Plans for the next week:-
- Work on feedback.
 - Fixing pgTap cases and docqueries
 
Report Mail - [SoC], [pgRouting-dev]
What did I get done this week?
- Inner_query and types_check are passing for v3.6
 - resolved linting and signature errors
 - Involved in the discussion for 
driving_side 
Plans for the next week:-
- Will work on pgtap tests to pass on every version of pgrouting.
 - Validating parameters according to discussion.
 
Report Mail - [SoC], [pgRouting-dev]
What did I get done this week?
- Validating parameters according to discussion[1].
 - Work according to the issue[2]
 - Updated User and migration documentation
 
What do I plan on doing next week?
- Meeting with mentors.
 - Working on update tests
 
Report Mail - [SoC], [pgRouting-dev]
What did I get done this week?
- Now tests pgTap passes for v3.1.3.
 - Created a tag on my forked repo[1].
 - Update test passes. Latest can be [2] and previous on [3].
 
What do I plan on doing next week?
- Start preparing PR to main repository.
 
Report Mail - [SoC], [pgRouting-dev]
What did I get done this week?
- Changes Suggested by vicky
 - Removed old driver file
 - Minor Changes in Migration queries
 - Practiced Rebase[1].
 
What do I plan on doing next week?
- Meeting with mentors
 - Rebase to main repository
 
Report Mail - [SoC], [pgRouting-dev]
What did I get done this week?
- Modifying code with vicky's suggestion.
 - Updating v3.6 release note and NEWS.
 - Rebase my code.
 
- Prepare PR to main repository
 - Prepare final report
 
Link to all the Pull Requests I made in GSoC-pgRouting repository for GSoC 2023
| Pull Request | Description | Date | Status | 
|---|---|---|---|
| #2545 | GSoC-2023: Modifying - withpointsdd - supplement | Aug 22th, 2023 | Merged | 
| #2544 | GSoC-2023: Modifying - withpointsdd | Aug 21th, 2023 | Merged | 
| #350 | GSoC-2023: Yige Huang Week 12 | Aug 20th, 2023 | Merged | 
| #341 | GSoC-2023: Yige Huang Week 11 | Aug 13td, 2023 | Merged | 
| #335 | GSoC-2023: Yige Huang Week 10 | Aug 7th, 2023 | Merged | 
| #332 | GSoC-2023: Yige Huang Week 9 | July 31st, 2023 | Merged | 
| #325 | GSoC-2023: Yige Huang Week 8 | July 23rd, 2023 | Merged | 
| #324 | GSoC-2023: Yige Huang Week 7 | July 16st, 2023 | Merged | 
| #318 | GSoC-2023: Yige Huang Week 6 | July 8th, 2023 | Merged | 
| #313 | GSoC-2023: Yige Huang Week 5 | July 1st, 2023 | Merged | 
| #309 | GSoC-2023: Yige Huang Week 4 | July 24th, 2023 | Merged | 
| #303 | GSoC-2023: Yige Huang Week 3 | July 15th, 2023 | Merged | 
| #299 | GSoC-2023: Yige Huang Week 2 | June 9th, 2023 | Merged | 
| #291 | GSoC-2023: Yige Huang Week 1 | June 4th, 2023 | Merged | 
| #278 | Task 2: Experience with GitHub & Git | March 23th, 2022 | GSoC Task Pull Request - Not to Merge |