Skip to content

Itinerary planning with graph models on real data, including some cool stuff like full fledge scraping, captch parsing and itinerary planning...

Notifications You must be signed in to change notification settings

dumbPy/project_lakshadweep_itinerary

Repository files navigation



Project Lakshadweep Itinerary

Introduction

Lakshadweep is a group of islands off south western coast of India, and has a lots of scenic and Beautiful Untouched Beaches and Lagoons worth exploring. The Islands are open to Tourists under permit from the Administrative Officer (email). The mode of transport however, is limited to Govt. operated Ships that mainly ply between Mainland India (Kochi and Mangalore port) and the islands of Lakshadweep. The prime purpose of these Ships is to satisfy the needs of the Islanders that depend solely on supplies from Mainland India. Hence, the Ship Schedule is mostly dependent on the Cargo needs of each Island and is prepared fresh every month and frequency is very low. The seat availability is very limited and gets filled within a couple of days of Ship Schedule announcement for any given month.
There is a Daily Flight from Kochi to Agatti operated by Air India, but the inter-Island transport is again limited to the same above Ships. The same ships are also used by the Islanders for transport, causing a stable internal demand for these limited seats.
Hence the need to come up with a suitable Itinerary planning method was felt by the author, and gave rise to this project.

This project deals with Directed Graph implementation of
Mainland(India) <–> Lakshadweep Sea Transport Network and Itinerary planning from this Graph.

Ship Schedule

Each Month, the Lakshadweep Administration publishes a new Schedule for these ships. An example of this schedule can be found below:
Sample Ship Schedule

Manual Itinerary Planning based on above schedule is hard and will surely lead to missing a lot of possible travel options that are hard to spot in the above jumbled schedule. A small example can be found below:

Manual itinerary

Steps before running the code

Extracting the above Ship Schedule manually.

The Ship Schedule is captcha and text selection protected Run the get_new_schedule.py to download latest Schedule

The Code will extract the required Schedule Table from the HTML file generated

Methodology

Layman’s:

enter image description here
Above Network shows Travel and Stay as Edges with related Data. Note: ‘ship’:None represents Stay at the island representing same Island by two different nodes at two different timing.

Technical

(You may neglect this part)
how_it_works.ipynb to understand the working of the project.

Future Work

  • [Done] I would love to expand this project to output all the itineraries overlayed onto a map, with timestamps of each node.
  • Add extensive sorting options like sorting by
    • Highest Contingency Itineraries
      In case a ship gets cancelled, possibility to hop onto another ship and change itinerary without much hustle would be great.
    • Seat Availability
      Scraping Seat Availability from lakport.nic.in.
      Sorting out itineraries with maximum possible seats available for n passengers. (Seat Availability details on lakport.nic.in are not available for all ships at once. We need to check for availability for each ship on each voyage separately, protected by captcha.)
  • About

    Itinerary planning with graph models on real data, including some cool stuff like full fledge scraping, captch parsing and itinerary planning...

    Resources

    Stars

    Watchers

    Forks

    Releases

    No releases published

    Packages

    No packages published