Last updated: 2026-03-01
This is the first project we will have in CS 355, on linear programming and OR-Tools. Due dates and other information will be available on the course website. Please ask any questions you have about this project in class.
You are in charge of moving products from one set of US cities to another set of US cities. (All of these cities will have their own airports.) However, you are only allowed to use preexisting shipping routes.
You are given a list of trips that can be taken between US airports. Each trip will have a capacity (in pounds) that the route can transfer, based on the largest amount that was transferred in a one month period, over the 9 months from January 2025 to September 2025. There is also a distance associated with each trip, given in miles. Lastly, you will be given the amounts of inventory that you have in each starting city, along with the amount of inventory that you need to send to each destination. (These amounts will tie out.)
Your job is to determine how to move the inventory to the destinations as efficiently as possible.
Here is some sample data (most important columns, first 5 rows):
| source | target | capacity | dist | src_lat | src_lon | dst_lat | dst_lon | src_city | dst_city |
|---|---|---|---|---|---|---|---|---|---|
| AAF | OCF | 3450.0 | 173.0 | 29.7275 | -85.0274 | 29.1725 | -82.2241 | Apalachicola | Ocala |
| AAF | SUA | 3450.0 | 341.0 | 29.7275 | -85.0274 | 27.1816 | -80.2210 | Apalachicola | Stuart |
| ABE | ACK | 3450.0 | 285.0 | 40.6517 | -75.4427 | 41.2531 | -70.0602 | Allentown | Nantucket |
| ABE | ACY | 46051.0 | 94.0 | 40.6517 | -75.4427 | 39.4575 | -74.5772 | Allentown | Atlantic City |
| ABE | AFW | 3813000.0 | 1318.0 | 40.6517 | -75.4427 | 32.9904 | -97.3194 | Allentown | Fort Worth |
Latitude and longitude for both source and target cities are included if you want to plot your route.
You must:
Some specifics on the task:
You will be given a list of 5 source airports and 10 destination airports. These sets will not have any overlap, so you don’t need to worry about that edge case. Along with these source and destination airports, you will be given numbers for supply and demand for each of the source and destination airports respectively, which should each add to 100 for demand (or -100 for supply).
This data will come as a CSV file with columns like this (this is just an example, your data will be different):
| type | airport | flow |
|---|---|---|
| source | RDU | 8 |
| source | BLD | 38 |
| … | … | … |
| sink | FOD | -10 |
| sink | CEZ | -22 |
Notes on your input data:
You will also be given the full dataset as described above, with information on available routes, and the capacity and distance of each route. The only columns you really need to use are source, target, capacity, and dist.
Submit a Jupyter notebook to Brightspace that has the following in it:
For each of the following requirements that you do not follow, you will lose 5 points:
Submit your Jupyter notebook file to Brightspace.
Grading:
Use whatever resources you feel comfortable with.
There are no restrictions.