Index
CommodityDemand
(message)CommodityDemandPath
(message)CommodityDemandPath.VesselServiceLegId
(message)Duration
(message)LegCandidate
(message)Port
(message)Port.VesselCost
(message)ScheduleTime
(message)SolverParameters
(message)VesselClass
(message)VesselService
(message)VesselServiceLeg
(message)
CommodityDemand
Commodity demand, i.e., a potential demand to be fulfilled by a shipper.
Fields | |
---|---|
id |
Unique ID assigned to this commodity demand. |
origin_port_id |
ID of the origin port. |
destination_port_id |
ID of the destination port. |
container_count |
Maximum number of containers to be fulfilled. |
freight_rate |
Freight rate per container (which could include a penalty for unfulfilled demand). It should remove the cost of loading and discharging per container at origin and destination. |
maximum_transit_duration |
Maximum transit duration (if set, should be stricly positive). Transit time is defined from the time when the first vessel serving this demand leaves the origin port to the time when the last vessel serving this demand arrives at the destination port. |
CommodityDemandPath
The different services and ports that a fraction of a given commodity demand is taking. Indices used below are based on the order of vessel services in the response and the order of service legs in individual vessel services.
Fields | |
---|---|
commodity_demand_id |
Commodity demand ID fulfilled. |
container_count |
Number of containers going through this path. For each commodity demand, the total fulfilled quantity cannot exceed the total demand. |
vessel_service_leg_ids[] |
List of vessel service leg IDs taken through this path. For a valid commodity demand path, the following properties hold: 1. First leg's departure_port_id must match origin_port_id of the commodity demand. 2. Last leg's destination_port_id must match destination_port_id of the commodity demand. 3. Consecutive legs' arrival_port_id and departure_port_id must match. 4. If provided for this commodity demand, the maximum transit time should be greater or equal than the total duration of the path. |
VesselServiceLegId
Single vessel service leg used in a commodity demand path. For instance, consider that there are two vessel services. The first is made of three legs (indexed 0, 1 and 2) and the second two (indexed 0 and 1). In addition, the first leg of the first service arrives at the departure port of the second leg of the second service. A commodity path consisting of the three following vessel service leg ids: {vessel_service_index: 0, vessel_service_leg_index: 2} {vessel_service_index: 0, vessel_service_leg_index: 0} {vessel_service_index: 1, vessel_service_leg_index: 1} means that containers take 2 consecutive legs from the first vessel service (note that 2 and 0 are consecutive since each service is a cycle), then transships to vessel service 1 for a single leg.
Fields | |
---|---|
vessel_service_index |
Index of the vessel service. |
vessel_service_leg_index |
Index of the leg from the vessel service indexed by |
Duration
A duration (port stay/transshipment, demand transit) is defined on an hourly granularity.
Fields | |
---|---|
hours |
Number of hours defining the duration. |
LegCandidate
Vessel service leg candidate. There can be multiple leg candidates between the same two ports, e.g. representing different ocean routes and/or vessel velocities. However, there can only be one leg candidate between two ports with a given duration.
Fields | |
---|---|
id |
Unique ID assigned to this leg candidate. |
departure_port_id |
ID of the departure port. |
arrival_port_id |
ID of the arrival port. |
duration |
Duration of the leg. |
vessel_class_costs |
Cost for assigning this leg candidate to a certain vessel class. This can include vessel operating cost, bunker cost, charter cost. A vessel class can only sail though this leg candidate if it has an entry in this map. |
Port
Port, e.g. a terminal or all terminals of a port.
Fields | |
---|---|
id |
Unique ID assigned to this port. |
minimum_port_stay_duration |
Minimum duration of stay for a port call. Most studies assume constant as ports typically assign more cranes to larger vessels with high move counts, as they take up more space. |
minimum_transshipment_duration |
Minimum duration of a transshipment at a given port, including duration to unload a container and reload it onto another vessel. |
transshipment_cost |
Cost of transshipping a container. It will usually be lower than the sum of loading and discharging because transshipping does not require customs paperwork at the port. |
vessel_class_costs |
Costs incurred when calling this port mapped by vessel class ID. A vessel class can only call this port if it has an entry in this map. |
VesselCost
Vessel cost for calling and staying at this port is defined as a linear function of the stay duration (fixed_cost
+ hourly_cost
* hours).
Fields | |
---|---|
fixed_cost |
Fixed cost for calling this port. |
hourly_cost |
Hourly cost for staying at this port. |
ScheduleTime
A schedule time (vessel/demand departure/arrivals) is defined on a weekly frequency at a given hour.
Fields | |
---|---|
day |
Day on the schedule. Day 0 is the first possible day. |
hour_of_day |
Hour of day of the schedule time should be an integer between 0 and 23 inclusive. |
SolverParameters
Parameters that control a single solve of the LSNDSP.
Fields | |
---|---|
time_limit |
Maximum time the solver should spend on the problem. This value is not a hard limit and it does not account for the communication overhead. The expected latency to solve the problem may slightly exceed this value. |
VesselClass
Vessel class, i.e., a group of vessel(s) sharing the same properties. There is no way to differentiate between two vessels from the same class.
Fields | |
---|---|
id |
Unique ID assigned to this vessel class. |
container_capacity |
Vessel class capacity (in containers). |
vessel_count |
Number of vessels in this vessel class. |
VesselService
Vessel service which can be used to serve commodity demands. IMPORTANT: a current assumption is that services are on a weekly frequency and port stay times cannot exceed one week. Consider the following sequence of vessel service legs: vessel_service_legs { leg_candidate_id: "0->1" origin_departure_time {} destination_arrival_time { day: 3 hour_of_day: 12 } } vessel_service_legs { leg_candidate_id: "1->0" origin_departure_time { day: 4 } destination_arrival_time { day: 7 hour_of_day: 12 } } These legs define a one-week service lines going through two ports with both port stay times of 12 hours.
Fields | |
---|---|
vessel_class_id |
Vessel class ID performing the service. |
vessel_service_legs[] |
For a valid vessel service, the following properties hold: 1. It cannot be empty. 2. Consecutive legs' destination_port_id and origin_port_id must match (including for the last and first legs). |
VesselServiceLeg
A single leg of a vessel service.
Fields | |
---|---|
leg_candidate_id |
Assigned leg candidate ID. |
origin_departure_time |
Time of departure at the origin port on the weekly schedule. |
destination_arrival_time |
Time of arrival at the destination port on the weekly schedule. |