GSoC 2025 Bandwidth Algorithm - pgRouting/pgrouting GitHub Wiki

Table of Contents

Proposal

Brief Description

This project aims to add Bandwidth Boost Graph Library Algorithm for pgRouting.

State of the Project Before GSoC

Bandwidth algorithm has not been implemented in pgRouting. However, from the graph metrics of the Boost Graph Library, only brandes_betweenness_centrality has been implemented in pgRouting so far.

Deliverables

  • Implementation of pgr_bandwidth() function.
  • Code with detailed comments.
  • User's documentation.
  • A wiki page for each week's progress and product created.
  • Basic pgTap tests for the mentioned functions.
  • Integration examples with existing pgRouting algorithms.

Detailed Proposal

Detailed Proposal link

Participants

Title GitHub Handle Name
1st Mentor @robe2 Regina Obe
2nd Mentor @cvvergara Vicky Vergara
3rd Mentor @sanak Ko Nagase
4th Mentor @iosefa Iosefa Percival
Student Developer @Saloni-2005 Saloni Kumari

Timeline

Community Bonding Period

  • Introduce myself to the community, interact with my mentors, and learn more about pgRouting.
  • Understand the coding style, generating documentation, and the interaction of pgRouting with other applications.
  • Set up a wiki page to keep track of my progress.
  • Make a branch in the GSoC_pgRouting repository where I will push my weekly code.
  • Review pgRouting C++ coding style from Google C++ coding style guide.
  • Participate in community discussions, meetings, or forums to engage with the project

    Community Bonding Period Report

    • Created OSGeo profile and linked it to the GSoC 2025 Accepted Students wiki page.
    • Set up project wiki page with project summary, and placeholders for weekly reports and deliverables.
    • Initialized basic folder structure for the Bandwidth algorithm implementation in pgRouting.
    • Explored pgRouting and Boost Graph Library to understand integration and function design.
    • Interacted with mentors and participated in community discussions for onboarding and project clarity.
    • Ready for coding phase with a clear understanding of next steps: C++ implementation, SQL wrapping, and testing setup.

First Coding Period

Week 1 (June 2nd - June 8th)

  • Original Plan

    • Review BGL’s Bandwidth algorithm.

    • Design data structures for pgr_bandwidth().

  • Revised Plan:

    • Focused on setting up file structure to support later development.
  • Work Done:

    • Created foundational files for pgr_bandwidth() implementation:

      • SQL: bandwidth.sql, _bandwidth.sql

      • Include: bandwidth_driver.h, bandwidth.hpp, bandwidth_process.h

      • Src: bandwidth_driver.cpp, bandwidth_process.cpp, bandwidth.c

  • Plan for Next Week:

    • No major progress expected due to final exams (June 9–15).

    • Will resume implementation and testing in Week 3.

  • Blockers:

    • Final exams during Week 2 (non-technical).
  • PR links : #441 , #443

Week 2

  • Original Plan:

    • Create initial SQL function interface

    • Develop C++ bandwidth calculation algorithm

  • Revised Plan:

    • Focus shifted to resolving structural and naming issues across files

    • Postpone logic implementation until after final exams

    • Prioritize clean, consistent codebase setup for upcoming development

  • Work Done:

    • Fixed naming issues and removed duplicate/unnecessary files

    • Renamed files for consistency and clarity

    • Updated license headers across all implementation files

    • Modified CMakeLists.txt accordingly

    • Attended project meetings (June 8 & 9)

    • Implemented mentor feedback

    • Updated wiki documentation

  • PR link : #445

  • Plan for Week 3:

    • Resolve compilation errors

    • Resume full development

    • Catch up on pending work

  • Blockers:

    • None

Week 3

TBD

Week 4

TBD

Week 5

TBD

Week 6

TBD

Second Coding Period

Week 7

TBD

Week 8

TBD

Week 9

TBD

Week 10

TBD

Week 11

TBD

Week 12

TBD

Log of Pull Requests

Link to pull requests made in GSoC-pgRouting repository

Pull Request Description Date Status
#441 Week 1 June 3 Closed
#443 Week 1 June 7 Merged
#445 Week 2 June 9 Open

Final Report

TBD

Potential Future Work :

TBD

Links:

  • Pull Requests:
    • Final Pull Request: TBD
    • Intermediate pull requests: TBD

References

  1. Bandwidth - Boost Graph Library
  2. Graph Bandwidth : Wikipedia