Package google.research.optimization.v1.networkdesign

Индекс

Товарный спрос

Спрос на товар, т. е. потенциальный спрос, который должен быть удовлетворен грузоотправителем.

Поля
id

string

Уникальный идентификатор, присвоенный этому спросу на товар.

origin_port_id

string

Идентификатор исходного порта.

destination_port_id

string

Идентификатор порта назначения.

container_count

int64

Максимальное количество контейнеров, подлежащих заполнению.

freight_rate

double

Ставка фрахта за контейнер (которая может включать штраф за неудовлетворенный спрос). Это должно устранить стоимость погрузки и разгрузки каждого контейнера в пункте отправления и назначения.

maximum_transit_duration

Duration

Максимальная продолжительность транзита (если установлена, должна быть строго положительной). Время транзита определяется с момента, когда первое судно, обслуживающее этот спрос, покидает порт отправления, до момента прибытия последнего судна, обслуживающего этот спрос, в порт назначения.

Путь спроса на товары

Различные услуги и порты, на которые приходится часть спроса на определенные товары. Используемые ниже индексы основаны на порядке обслуживания судов в ответе и порядке этапов обслуживания в отдельных службах судов.

Поля
commodity_demand_id

string

Идентификатор спроса на товар выполнен.

container_count

int64

Количество контейнеров, проходящих по этому пути. По каждому товарному спросу общий удовлетворенный объем не может превышать общий спрос.

vessel_service_leg_ids[]

VesselServiceLegId

Список идентификаторов участков обслуживания судов, пройденных по этому пути. Для действительного пути спроса на сырьевые товары выполняются следующие свойства: 1. Параллельный_port_id первого этапа должен совпадать с origin_port_id спроса на сырьевые товары. 2. Destination_port_id последнего этапа должен совпадать с Destination_port_id спроса на сырьевые товары. 3. Прибытие_port_id и отправление_port_id последовательных этапов должны совпадать. 4. Если предусмотрен данный товарный спрос, максимальное время транзита должно быть больше или равно общей продолжительности пути.

СудноServiceLegId

Ветка обслуживания одного судна, используемая на пути спроса на сырьевые товары. Например, предположим, что есть два судовых сервиса. Первый состоит из трех ветвей (с индексами 0, 1 и 2), а второй — из двух (с индексами 0 и 1). Кроме того, первый этап первого рейса прибывает в порт отправления второго этапа второго рейса. Путь товара, состоящий из трех следующих идентификаторов участков обслуживания судна: {vessel_service_index: 0, сосуд_service_leg_index: 2} {vessel_service_index: 0, сосуд_service_leg_index: 0} {vessel_service_index: 1, сосуд_service_leg_index: 1} означает, что контейнеры проходят два последовательных этапа от первого судно (обратите внимание, что 2 и 0 идут последовательно, поскольку каждая услуга представляет собой цикл), затем перегружается на судно 1 на одном участке.

Поля
vessel_service_index

int32

Указатель судового сервиса.

vessel_service_leg_index

int32

Индекс участка судового сервиса, проиндексированный vessel_service_index .

Продолжительность

Продолжительность (стоянка/перевалка в порту, потребность в транзите) определяется с почасовой детализацией.

Поля
hours

int64

Количество часов, определяющее продолжительность.

НогаКандидат

Кандидат на службу на судне. Между одними и теми же двумя портами может быть несколько кандидатов на участки, например, представляющие разные океанские маршруты и/или скорости судов. Однако между двумя портами с заданной продолжительностью может быть только один кандидат на ветку.

Поля
id

string

Уникальный идентификатор, присвоенный этому кандидату на ветвь.

departure_port_id

string

Идентификатор порта отправления.

arrival_port_id

string

Идентификатор порта прибытия.

duration

Duration

Продолжительность ноги.

vessel_class_costs

map<string, double>

Стоимость назначения этого кандидата на ветку определенному классу судна. Сюда могут входить расходы на эксплуатацию судна, стоимость бункера, стоимость чартера. Класс судна может проходить через этот кандидат только в том случае, если он имеет запись на этой карте.

Порт

Порт, например терминал или все терминалы порта.

Поля
id

string

Уникальный идентификатор, присвоенный этому порту.

minimum_port_stay_duration

Duration

Минимальная продолжительность пребывания для захода в порт. В большинстве исследований предполагается, что краны постоянны, поскольку порты обычно назначают больше кранов более крупным судам с большим количеством перемещений, поскольку они занимают больше места.

minimum_transshipment_duration

Duration

Минимальная продолжительность перевалки в данном порту, включая продолжительность разгрузки контейнера и его перегрузки на другое судно.

transshipment_cost

double

Стоимость перевалки контейнера. Обычно она будет ниже суммы погрузки и разгрузки, поскольку перевалка не требует оформления таможенных документов в порту.

vessel_class_costs

map<string, VesselCost >

Затраты, понесенные при заходе в этот порт, сопоставлены с идентификатором класса судна. Класс судна может зайти в этот порт только в том случае, если он отмечен на этой карте.

Стоимость судна

Стоимость захода и пребывания судна в этом порту определяется как линейная функция продолжительности стоянки ( fixed_cost + hourly_cost * часы).

Поля
fixed_cost

double

Фиксированная стоимость звонка на этот порт.

hourly_cost

double

Почасовая стоимость пребывания в этом порту.

РасписаниеВремя

Время расписания (отправление/прибытие судна/требования) определяется с еженедельной частотой в заданный час.

Поля
day

int64

День по расписанию. День 0 — первый возможный день.

hour_of_day

int32

Час дня расписания должен быть целым числом от 0 до 23 включительно.

Параметры Солвера

Параметры, управляющие одним решением LSNDSP.

Поля
time_limit

Duration

Максимальное время, которое решатель должен потратить на решение задачи. Это значение не является жестким пределом и не учитывает накладные расходы на связь. Ожидаемая задержка решения проблемы может немного превышать это значение.

Класс судна

Класс судна, т. е. группа судов, имеющих одинаковые характеристики. Невозможно отличить два судна одного класса.

Поля
id

string

Уникальный идентификатор, присвоенный этому классу судна.

container_capacity

int64

Класс судна Вместимость (в контейнерах).

vessel_count

int64

Количество судов данного класса судов.

Сервис судна

Судовые услуги, которые можно использовать для удовлетворения потребностей в товарах. ВАЖНО: в настоящее время предполагается, что услуги предоставляются еженедельно, а время пребывания в порту не может превышать одной недели. Рассмотрим следующую последовательность этапов обслуживания судна: сосуд_сервис_легс { leg_candidate_id: "0->1" origin_departure_time {} Destination_arrival_time { день: 3 час_день: 12 } } сосуд_service_legs { leg_candidate_id: "1->0" origin_departure_time { день: 4 } Destination_arrival_time { day: 7hour_of_day: 12 } } Эти ветки определяют недельные линии обслуживания, проходящие через два порта, причем время пребывания в обоих портах составляет 12 часов.

Поля
vessel_class_id

string

Идентификатор класса судна, выполняющего услугу.

vessel_service_legs[]

VesselServiceLeg

Для действительного судового сервиса выполняются следующие свойства: 1. Он не может быть пустым. 2. Destination_port_id и origin_port_id последовательных ветвей должны совпадать (в том числе для последней и первой ветвей).

СудноСервисНога

Один этап судового сообщения.

Поля
leg_candidate_id

string

Присвоенный идентификатор кандидата на ногу.

origin_departure_time

ScheduleTime

Время отправления в порт отправления по еженедельному графику.

destination_arrival_time

ScheduleTime

Время прибытия в порт назначения по недельному графику.