Method: shipping.designShippingNetwork

Belirtilen DesignShippingNetworkRequest için yolcu taşıma ağı tasarımı ve planlama sorununu (LSNDSP) çözer.

LSNDSP, bir yolcu gemisi taşıma ağının optimum tasarımını ve zamanlamasını bulmaya çalışan karmaşık bir optimizasyon problemidir. Amaç, limanlar arasındaki kargo talebinin mümkün olduğunca büyük bir kısmını karşılarken ağı çalıştırmanın toplam maliyetini en aza indirmektir.

LSNDSP, ağ tasarımı ve planlama olmak üzere iki ana alt soruna ayrılabilir. Ağ tasarımı alt sorunu ağ tarafından hizmet verilecek bağlantı noktaları kümesini, her bir güzergâh üzerinde dağıtılacak gemi sayısını ve gemilerin izleyeceği rotaları belirler. Planlama alt sorunu, limanlar arasında seyretmek için geçen süreyi, yük yükleyip boşaltmak için gereken süreyi ve limanlar arasındaki yük taşıma talebini dikkate alarak gemiler için yelkenli sefer saatlerini belirler.

Basit bir şekilde ifade etmek gerekirse LSNDSP'de hizmet hangi bağlantı noktasının kullanılacağına, kaç tane geminin kullanılacağına ve kargo talebinin karşılanması için geliri en üst düzeye çıkarırken ağ işletme maliyetinin en aza indirilmesi için gemilerin nasıl programlanacağına karar verme sorunudur. LSNDSP'nin zorlu bir alt bileşeni olan kargo rotasıdır. Kargo rotası, geliri en üst düzeye çıkarmak için hangi taleplerin karşılanacağını ve hangi rotaların kargoya atanacağını belirler.

HTTP isteği

POST https://optimization.googleapis.com/v1/shipping:designShippingNetwork

URL, gRPC Kod Dönüştürme söz dizimini kullanır.

İstek içeriği

İstek gövdesi, aşağıdaki yapıya sahip verileri içerir:

JSON gösterimi
{
  "requestId": string,
  "solverParameters": {
    object (SolverParameters)
  },
  "ports": [
    {
      object (Port)
    }
  ],
  "legCandidates": [
    {
      object (LegCandidate)
    }
  ],
  "vesselClasses": [
    {
      object (VesselClass)
    }
  ],
  "commodityDemands": [
    {
      object (CommodityDemand)
    }
  ],
  "vesselServices": [
    {
      object (VesselService)
    }
  ]
}
Alanlar
requestId

string

Sorun veya istek kimliği.

solverParameters

object (SolverParameters)

Çözücü parametreleri.

ports[]

object (Port)

Gemi hizmetlerinde çağrılabilecek olası bağlantı noktalarının listesi. İstek yalnızca bu listedeki bağlantı noktası kimliklerini içermelidir.

legCandidates[]

object (LegCandidate)

Gemi hizmetlerine eklenecek potansiyel ayak adaylarının listesi. İstek yalnızca bu listedeki aday aday kimliklerini içermelidir.

vesselClasses[]

object (VesselClass)

Gemi hizmetleri verilen gemi sınıflarının listesi. Aynı sınıfa ait tüm gemilerin tamamen değiştirilebilir olduğunu unutmayın. İstek yalnızca bu listede bulunan gemi sınıfı kimliklerini içermelidir.

commodityDemands[]

object (CommodityDemand)

Gemi hizmetleri tarafından karşılanması gereken potansiyel emtia (ör. konteyner) taleplerinin listesi.

vesselServices[]

object (VesselService)

Optimizasyonun başlangıç noktası olarak kullanılması için geçerli gemi hizmetlerinden oluşan bir ağ (genellikle ağın mevcut durumu) sağlanabilir.

Yanıt gövdesi

Yanıt, çözümü istekte iletilen LSNDSP örneğine tutar. Geçerli bir gemi hizmetleri ağı ve emtia talep yolları ağı içerir. Her bir ayaktan geçen toplam emtia talebi, bu ayağa hizmet veren gemi sınıfı kapasitesini aşamaz. Karşılanan talep olmadan gemi hizmeti bulunmamasının, yolcu gemisi kargo ağı tasarımı ve planlama sorunu için her zaman uygun bir çözüm olduğunu unutmayın.

Başarılı olursa yanıt metni aşağıdaki yapıyla birlikte verileri içerir:

JSON gösterimi
{
  "requestId": string,
  "vesselServices": [
    {
      object (VesselService)
    }
  ],
  "commodityDemandPaths": [
    {
      object (CommodityDemandPath)
    }
  ]
}
Alanlar
requestId

string

Bu yanıtın ilişkilendirildiği isteğin kimliği.

vesselServices[]

object (VesselService)

Gemi hizmetleri ağı. Her bir gemi sınıfı için kullanılan toplam gemi sayısı, bu sınıftaki mevcut gemi sayısını aşamaz.

commodityDemandPaths[]

object (CommodityDemandPath)

Pozitif ürün talebinin gönderildiği tüm emtia talep yollarının listesi. Hiçbir talep gönderilmiyorsa bazı emtia talep kimliklerinin dahil edilmeyeceğini unutmayın. Alternatif olarak, emtia talebi kısmen karşılanabilir. Her bir emtia talebi için tamamlanan toplam miktar, toplam talebi aşamaz. Son olarak, commodityDemandPaths vesselServices'a bağlıdır (CommodityDemandPath tanımına bakın).

SolverParameters

LSNDSP'nin tek bir çözümünü kontrol eden parametreler.

JSON gösterimi
{
  "timeLimit": string
}
Alanlar
timeLimit

string (Duration format)

Çözme aracının problem üzerinde harcaması gereken maksimum süre. Bu değer sabit bir sınır değildir ve iletişim ek yükünü hesaba katmaz. Sorunu çözmek için beklenen gecikme, bu değeri biraz aşabilir.

En fazla dokuz kesir basamağı olan ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

Bağlantı noktası

Bağlantı noktası, ör. bir terminale veya bir bağlantı noktasının tüm terminallerine uygulanır.

JSON gösterimi
{
  "id": string,
  "minimumPortStayDuration": {
    object (Duration)
  },
  "minimumTransshipmentDuration": {
    object (Duration)
  },
  "transshipmentCost": number,
  "vesselClassCosts": {
    string: {
      object (VesselCost)
    },
    ...
  }
}
Alanlar
id

string

Bu bağlantı noktasına atanan benzersiz kimlik.

minimumPortStayDuration

object (Duration)

Bir numara taşıma çağrısı için minimum konaklama süresi. Limanlar daha fazla alan kapladığından, yüksek hareket sayısına sahip daha büyük gemilere genelde daha fazla vinç atadığından çoğu çalışmada sabit bir değer olduğu varsayılır.

minimumTransshipmentDuration

object (Duration)

Bir konteyneri boşaltma ve başka bir gemiye yeniden yükleme süresi dahil olmak üzere, belirli bir bağlantı noktasında nakliyenin minimum süresi.

transshipmentCost

number

Bir kapsayıcının taşınmasının maliyeti. Transshipping limanda gümrük evrakları gerektirmediğinden, genellikle yükleme ve boşaltma işlemlerinin toplamından daha düşük olur.

vesselClassCosts

map (key: string, value: object (VesselCost))

Bu limanın çağrılması sırasında ödenen ücretler, gemi sınıfı kimliğiyle eşlenmiştir. Bir gemi sınıfı, bu limanı yalnızca bu haritada bir girişi varsa çağırabilir.

"key": value çiftlerinin listesini içeren bir nesne. Örnek: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

Süre

Süre (bağlantı noktası/taşıma, talep taşıma), saatlik ayrıntı düzeyiyle tanımlanır.

JSON gösterimi
{
  "hours": string
}
Alanlar
hours

string (int64 format)

Süreyi tanımlayan saat sayısı.

VesselCost

Bu limanda arama ve konaklama için gemi maliyeti, konaklama süresinin (fixedCost + hourlyCost * saat) doğrusal bir işlevi olarak tanımlanır.

JSON gösterimi
{
  "fixedCost": number,
  "hourlyCost": number
}
Alanlar
fixedCost

number

Bu bağlantı noktasını aramayla ilgili sabit ücret.

hourlyCost

number

Bu bağlantı noktasında kalmanın saatlik maliyeti.

LegCandidate

Tekne hizmet ayağı adayı. Aynı iki bağlantı noktası arasında birden fazla bacak adayı olabilir, ör. Semboller kullanılır.

JSON gösterimi
{
  "id": string,
  "departurePortId": string,
  "arrivalPortId": string,
  "duration": {
    object (Duration)
  },
  "vesselClassCosts": {
    string: number,
    ...
  }
}
Alanlar
id

string

Bu ayak adayına atanan benzersiz kimlik.

departurePortId

string

Kalkış limanının kimliği.

arrivalPortId

string

Varış limanının kimliği.

duration

object (Duration)

Bacağın süresi.

vesselClassCosts

map (key: string, value: number)

Bu ayak adayını belirli bir gemi sınıfına atama maliyeti. Bu maliyetlere gemi işletme maliyeti, sığınak maliyeti, kiralama belgesi maliyeti dahildir. Bir gemi sınıfının yelken açabilmesi için bu ayak adayının bu haritada yelken yapması gerekir.

"key": value çiftlerinin listesini içeren bir nesne. Örnek: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

VesselClass

Tekne sınıfı, yani aynı özellikleri paylaşan bir gemi grubu. Aynı sınıftaki iki gemiyi birbirinden ayırt etmenin bir yolu yoktur.

JSON gösterimi
{
  "id": string,
  "containerCapacity": string,
  "vesselCount": string
}
Alanlar
id

string

Bu gemi sınıfına atanan benzersiz kimlik.

containerCapacity

string (int64 format)

Tekne sınıfı kapasitesi (kapsayıcı cinsinden).

vesselCount

string (int64 format)

Bu gemi sınıfındaki gemi sayısı.

CommodityDemand

Emtia talebi, yani bir taşıyıcı tarafından karşılanacak potansiyel talep.

JSON gösterimi
{
  "id": string,
  "originPortId": string,
  "destinationPortId": string,
  "containerCount": string,
  "freightRate": number,
  "maximumTransitDuration": {
    object (Duration)
  }
}
Alanlar
id

string

Bu ürün talebine atanan benzersiz kimlik.

originPortId

string

Kaynak bağlantı noktasının kimliği.

destinationPortId

string

Hedef bağlantı noktasının kimliği.

containerCount

string (int64 format)

Yerine getirilecek maksimum container sayısı.

freightRate

number

Konteyner başına navlun ücreti (karşılanmayan talep nedeniyle cezayı da içerebilir). Başlangıç noktası ve hedefte her container başına yükleme ve boşaltma maliyetlerini kaldırmalıdır.

maximumTransitDuration

object (Duration)

Maksimum nakliye süresi (ayarlanmışsa büyük bir pozitif olmalıdır). Nakliye süresi, bu talebe hizmet veren ilk geminin kalkış bağlantı noktasından ayrılması ile bu talebe hizmet veren son geminin hedef limana gelmesi arasında geçen zamandır.

VesselService

Emtia taleplerini karşılamak için kullanılabilen gemi hizmeti. ÖNEMLİ: Hizmetlerin haftalık sıklıkta olduğu ve taşıma süresinde konaklama süresinin bir haftayı geçemeyeceği varsayılmıştır. Aşağıdaki gemi hizmet ayakları dizisini göz önünde bulundurun: vesselServiceLegs { legCandidateId: "0->1" originDepartureTime {} destinationArrivalTime { day: 3 hourOfDay: 12 } } vesselServiceLegs { legCandidateId: "1->0" origin dayalıTime { day: 4 } destinationArrivalTime { day: 7 hourOfDay: 12 } } Bu ayaklar, iki bağlantı noktasından geçen bir haftalık hizmet hattını tanımlar ve her iki bağlantı noktası konaklama süresi 12 saattir.

JSON gösterimi
{
  "vesselClassId": string,
  "vesselServiceLegs": [
    {
      object (VesselServiceLeg)
    }
  ]
}
Alanlar
vesselClassId

string

Hizmeti gerçekleştiren gemi sınıfı kimliği.

vesselServiceLegs[]

object (VesselServiceLeg)

Geçerli bir gemi hizmeti için aşağıdaki mülkler geçerli olur: 1. Boş bırakılamaz. 2. Ardışık bacak targetPortId ve originPortId eşleşmelidir (son ve ilk ayaklar dahil).

VesselServiceLeg

Gemi hizmetinin tek ayağı.

JSON gösterimi
{
  "legCandidateId": string,
  "originDepartureTime": {
    object (ScheduleTime)
  },
  "destinationArrivalTime": {
    object (ScheduleTime)
  }
}
Alanlar
legCandidateId

string

Atanan bacak aday kimliği.

originDepartureTime

object (ScheduleTime)

Haftalık programdaki kalkış bağlantı noktasında kalkış saati.

destinationArrivalTime

object (ScheduleTime)

Haftalık programda hedef limana varış saati.

ScheduleTime

Zaman planlaması zamanı (gemi/talep kalkış/varışlar), belirli bir saatteki haftalık sıklıkta tanımlanır.

JSON gösterimi
{
  "day": string,
  "hourOfDay": integer
}
Alanlar
day

string (int64 format)

Programdaki gün. 0. gün, mümkün olan ilk gündür.

hourOfDay

integer

Program zamanının günün saati, 0 ile 23 arasında (0 ve 23 dahil) bir tam sayı olmalıdır.

CommodityDemandPath

Belirli bir emtia talebinin aldığı farklı hizmetler ve limanlar. Aşağıda kullanılan endeksler, yanıttaki gemi hizmetlerinin sırasına ve münferit gemi hizmetlerindeki hizmet ayaklarının sırasına göre belirlenmiştir.

JSON gösterimi
{
  "commodityDemandId": string,
  "containerCount": string,
  "vesselServiceLegIds": [
    {
      object (VesselServiceLegId)
    }
  ]
}
Alanlar
commodityDemandId

string

Ürün talep kimliği karşılandı.

containerCount

string (int64 format)

Bu yoldan geçen container sayısı. Her bir emtia talebi için tamamlanan toplam miktar, toplam talebi aşamaz.

vesselServiceLegIds[]

object (VesselServiceLegId)

Bu yol boyunca alınan gemi hizmet ayağı kimliklerinin listesi. Geçerli bir emtia talep yolu için aşağıdaki mülkler şunları barındırır: 1. İlk ayağın FROMPortId değeri, emtia talebinin originPortId'si ile eşleşmelidir. 2. Son grubun targetPortId değeri, emtia talebinin hedefPortId'si ile eşleşmelidir. 3. Ardışık bacak varışPortId ve DEPARTUREPortId eşleşmelidir. 4. Bu ürün talebi için sağlanıyorsa maksimum nakliye süresi, yolun toplam süresinden daha uzun veya bu süreye eşit olmalıdır.

VesselServiceLegId

Emtia talep yolunda kullanılan tek gemi hizmet ayağı. Örneğin, iki gemi hizmeti olduğunu düşünün. İlki üç ayaktan (0, 1 ve 2 endeksli) ve ikinci iki ayaktan (0 ve 1 endeksli) oluşur. Ayrıca ilk hizmetin ilk ayağı, ikinci hizmetin ikinci ayağının kalkış limanına ulaşır. Aşağıdaki üç gemi hizmet ayağı kimliğinden oluşan bir commodity yolu: {vesselServiceIndex: 0, vesselServiceLegIndex: 2} {vesselServiceIndex: 0, vesselServiceLegIndex: 0} {vesselServiceIndex: 1, vesselServiceLegIndex: 1}, her bir hizmetin art arda 2 gemi ve ardından ilk nakliye bacası hizmeti aldığı anlamına gelir.

JSON gösterimi
{
  "vesselServiceIndex": integer,
  "vesselServiceLegIndex": integer
}
Alanlar
vesselServiceIndex

integer

Gemi hizmeti dizini.

vesselServiceLegIndex

integer

vesselServiceIndex tarafından dizine eklenen gemi hizmeti ayına ait bacağın dizini.