Aditya Khuntia

B.Tech, Mathematics & Computing Engineering

Delhi Technological University

adityakhuntia05@gmail.com

← Projects

Saarathi

2021  ·  Mobile Application  ·  AI · Maps · Python

Saarathi is a mobile application developed as a social welfare initiative in response to COVID-19 in India. The app aims to ensure the safety of the Indian population during the COVID-unlock phase by providing navigation solutions. After India's strict lockdown, the app addresses the challenge of navigating safely amidst the current precarious situation by pinpointing COVID-prone areas using six versatile factors. It utilises comprehensive algorithms to assess routes and guide users safely to their destinations. The app draws an analogy to Krishna guiding Arjun in the Mahabharata, symbolising its aim to steer people away from dangers posed by COVID.

Algorithms

Routing — Waypoint Routing

The traditional problem with routing is that it is difficult to provide a complete solution because routing engine services only provide the best paths (time-wise), missing the route which might have been the safest. Using the Google API, for example, we get only 3 routes maximum. To get all possible routes between the origin and the destination, we use a recursive algorithm — we reroute on waypoints. On a given route, we try to find new directions on every turn, leading to an exponential rise in the number of routes considered.

Population Density

Uses data from EU's GHSL calculations, which estimates population density based on satellite imaging and India's census surveys at a resolution yielding data for tiles as small as 0.07 km². Along each route, we evaluate every point on the road and assign it a population density danger rating modelled by a bell curve — danger increases with population density until saturation:

\[ \frac{dD}{dP} = \frac{K \cdot e^{-((P-b)^2/2a^2)}}{a \cdot \sqrt{2\pi}} \] where \(K = 4{,}500{,}000{,}000\), \(a = 18{,}800\), \(b = 30{,}000\). After integration and normalisation: \[ D = \frac{2.25 \cdot \mathrm{erf}\!\left(\dfrac{P - 3000}{2000\sqrt{2}}\right) + 1.949}{3.1795}, \quad \forall P \in \mathbb{R} \]

Covid Points

Uses district-wise COVID case data made public by the government to keep people away from infested areas. We compute each district's COVID threat (DCT), then normalise by the highest DCT along the route so the algorithm remains comparative rather than absolute:

\[ \text{DCT} = \frac{\text{total district cases}}{\text{district population}}, \qquad \text{Point Rating} = \frac{\text{DCT}}{\text{DCT}_{\max}} \]

Point Avoid

Thousands of coordinates across India describing the location of hospitals, public transport spots, non-sanitary areas, and other hotspots are assigned a weightage according to danger. The cumulative danger effect on a point is fitted to a logistic model:

\[ DE = \frac{W}{r^2 \cdot n}, \qquad DES = \sum_{i=1}^{n} DE_i, \qquad \text{Danger Rating} = \frac{1}{1 + e^{-0.02(DES - 150)}} \]

To increase time efficiency, all locations are geohashed — India is divided into area-wise sectors and assigned codes. Only locations in the vicinity of a point are accessed for calculations, arranged into a dictionary for fast lookup.

Containment Zones

Fetches government data on declared containment zones and uses ray casting to determine if any point on a route lies inside a containment polygon. If so, that route is eliminated from consideration:

\[ f(N) = \begin{cases} \text{Containment Zone} & \text{if } \displaystyle\sum_{n=1}^{N} I_n \bmod 2 = 1 \\[6pt] \text{Not in Containment Zone} & \text{otherwise} \end{cases} \]

Traffic

A database of all roads in India is updated every 10 minutes. The jamming factor (JF, 0–10) for each road is mapped directly to a point rating:

\[ \text{Point Rating} = \text{Road Rating} = \frac{\text{JF}}{10} \]

Temperature & Humidity

The coronavirus R-value is influenced by temperature and humidity. As temperature rises and humidity decreases, transmission generally slows.

Temperature relationship:

\( R_t = e^{(\gamma - \delta \cdot T_c)} \)   where   \(\gamma = 0.752038698\),   \(\delta = 0.01732867958\)

Humidity relationship:

\( R_h = e^{(\alpha - \beta \cdot H)} \)   where \(\alpha\) and \(\beta\) are piecewise constants derived from loess models adapted to Indian spread patterns.

Combined risk:

\[ \text{Risk (Temperature)} = f(-16.766 + 38.91 \cdot R_t), \qquad \text{Risk (Humidity)} = f(-50.0001 + 50.0003 \cdot R_h) \] Temperature and humidity factors are weighted 2.5 : 1 to compute the cumulative Final Risk Rating (0–100).

Rating & Combination

For algorithms that produce point-level ratings, we aggregate them into a route rating by fitting a probability density function to the frequency distribution of ratings (bracket width 0.005) and computing its expected value:

\[ E = \int \text{Rating} \times \text{Frequency} \; d(\text{rating}) \] Distance is factored in at 30% weight. Letting \(q\) be the number of points on the route: \[ FDR = \frac{7E}{10} + \frac{3}{10}\!\left(1 - e^{q/288}\right), \qquad \text{Final Safety Rating} = 1 - FDR \]

Integrated Algorithm

To determine the weightage of each of the six algorithms, we generated test data where backend developers chose between two routes with arbitrary algorithm values. A machine learning model learned the implicit preferences and output a percentage importance for each algorithm.

Senior Guidance & Contributors

Pragyan Pandey

Pragyan Pandey

Garvit Goswami

Garvit Goswami

Resham Talwar

Resham Talwar

Kunaal Gautam

Kunaal Gautam