# Mobility and Smart Cities

## CIMO - Ordered Calculator of Multimodal Itineraries

### Presentation

CIMO is an algorithm designed to efficiently calculate multimodal itineraries for real trans-territories based on dynamic programming. The algorithm takes into account the different modes of transportation available, such as buses, trains, and subways, and considers the time window of transportation demand, ensuring that itineraries are generated within a reasonable time frame.

CIMO has several optimizations to improve its efficiency and accuracy, and has been tested in three different versions to ensure that it can respond to travelers' demands in an envisaged time.

Overall, CIMO algoritm provides an efficient solution to find between multiple mode a of transportation in real trans-territories, and has the potential to greatly improve the travel experience for commuters, students, and shoppers alike.

### Problem

The CIMO algorithm is a multi-constraints and multi-objectives problem.

Objectives:

- Take into account the departure station and the arrival station
- Take into account the departure at the earliest and the arrival at the latest, which is the time window of the transport demand.
- Minimize the number of modal transfers: which amounts to minimize the number of quadruplets in the itinerary
- Minimize the travel time tt
- Minimize the time in Transport even the effective time tet
- Minimize the sum of waiting times in correspondences tac
- Satisfaction of all the constraints

Constraints:

- Coherence of time windows and travel time with normalization
- Itinerary constraints
- Stop position dependencies respected between different modes of transportation
- Capacity constraints of different modes of transportation
- Cost constraints of different modes of transportation
- Safety constraints of different modes of transportation

### Conception

The CIMO algorithm is a combination of exact, heuristic, and metaheuristic methods. The exact methods include the branch and bound method, the method of plane cuts (Cutting-Plane), the (Branch and Cut) method, and the method of generation of columns. The combination of these methods allows CIMO to provide a feasible solution of good quality that is also rapid and more complete and complex than a simple heuristic algorithm.

CIMO generates a tree with all the possible stops to take and evaluates the best path. The cut and price method is implemented to limit the resources and time needed to solve the problem. This allows CIMO to efficiently calculate the optimal multimodal itinerary for the traveler, taking into account various criteria such as travel time, cost, and convenience. By using a combination of these methods, CIMO can provide a high-quality solution that is both efficient and effective.

#### Inputs

The CIMO algorithm uses various types of data to calculate the optimal multimodal itinerary for the traveler. These include static internal data such as lines, stations, and timetables, as well as external data from various transport networks such as illicom, Optymo, and CTPM.

To calculate the optimal multimodal itinerary for the traveler, one must  input the origin and destination of the traveler, the time window for departure and arrival, and any other constraints or preferences.

### Examples

#### Graphical representation of a problem with 9 stations and 3 transport networks

!["Graphical representation of a problem with 9 stations and 3 transport networks"](https://media.discordapp.net/attachments/715467633851498566/1160909790554366052/image.png?ex=6536607e&is=6523eb7e&hm=6541fc3facc8c63b1eec4563bf286441e37f257dc3308c424893150104e609f1&=)

#### Exploration of all the possibilities from a given origin and destination

|!["Exploration of all the possibilities from a given origin and destination"](https://media.discordapp.net/attachments/715467633851498566/1160912895249485844/image.png?ex=65366362&is=6523ee62&hm=7a4b6d4a8016c705987782b065d728045d025bb704415825ab6e8963c772c62b&=) |
|:--:|
| *Exploration of all the possibilities from a given origin and destination* |

|!["Exploration of all the possibilities from a given origin and destination once cuts are applied"](https://media.discordapp.net/attachments/715467633851498566/1160913040364019762/image.png?ex=65366385&is=6523ee85&hm=238b555b002ac43dcf86eac0bf316cf5faac97ac1c7556f20750c5cc54bbbff3&=) |
|:--:|
| *Exploration of all the possibilities from a given origin and destination with cuts* |