Zaman aralıkları

Zaman aralıkları `ShipmentModel`'de, teslim alma ve teslimat nesnelerindeki `Shipment`'da ve `Vehicle`'da bulunur.

Zaman aralıkları, bir rotadaki etkinliklerin zamanlamasını belirtir. Bu etkinlikler arasında sürücünün rotasının başlangıcı ve bitişi, planlanan teslim alma ve teslimat saatleri veya tüm rotanın süresi yer alabilir.

Zaman aralıkları aşağıdaki gibi hedefleri destekleyebilir:

  • Belirtilen zaman aralıklarında teslim alma ve teslimat işlemlerini tamamlamaya öncelik verin.
  • Genel çalışma saatleri içinde çalışacak şekilde rotalar planlayın.
  • Araçların rotalara belirtilen zaman aralıklarında başlayıp bitirmesini sağlayın.

Yapı

Diyagramda gösterildiği gibi, zaman aralıkları aşağıdaki şekilde yapılandırılır:

Essentials kontrol listesi

Aşağıdaki yapılacaklar listesinde, zaman aralıklarıyla ilgili olası hataları önleyen temel bilgiler açıklanmaktadır. Bu liste, isteğinizi doğrulamanıza ve yanıtınızla ilgili sorunları gidermenize yardımcı olabilir.

Özellikler

Aşağıdaki tabloda, genel zaman aralığı özellikleri açıklanmaktadır.

Mülk Biçim Açıklama
globalStartTime Timestamp Herhangi bir etkinlik için en erken zaman.
globalEndTime Timestamp Herhangi bir etkinlik için en geç saat.

Aşağıdaki tabloda, gönderiler ve araçlardaki zaman aralığı özellikleri açıklanmaktadır.

Ebeveyn Mülk Biçim Açıklama
Shipment.pickups timeWindows TimeWindow mesaj türleri dizisi. Gönderi teslim alma için zaman aralıklarını belirtir.
Shipment.deliveries timeWindows Gönderi teslimatı için zaman aralıklarını belirtir.
Vehicle startTimeWindows Bir aracın çalışma planının başlangıç zamanını belirtir.
endTimeWindows Bir aracın çalışma planının bitiş zamanını belirtir.

Aşağıdaki tabloda, TimeWindow mesaj türünün özellikleri açıklanmaktadır.

Mülk Biçim Açıklama
startTime Dize (RFC3339 UTC "Zulu" biçimi) Zaman aralığının başlangıcı.
endTime Dize (RFC3339 UTC "Zulu" biçimi) Zaman aralığının sonu.

Örnekler

Bu bölümde üç tür örnek ele alınmaktadır:

  • Zaman aralıklarının yapısını gösteren kod örnekleri.
  • Zaman aralıklarını kullanarak işletme hedefine ulaşmanın bir yolunu gösteren örnek senaryo.
  • Örnek senaryoda ayarlanan değerleri içeren istek örneği.

Kod örnekleri

Aşağıdaki bölümlerde, farklı zaman aralığı türlerinin kod örnekleri gösterilmektedir.

Genel zaman aralıkları

Aşağıdaki kod örneğinde, genel zaman aralıklarının yapısı gösterilmektedir:

{
  "model": {
    "globalStartTime": "YYYY-MM-DDTHH:MM:SSZ",
    "globalEndTime": "YYYY-MM-DDTHH:MM:SSZ",
    "shipments": [ ... ],
    "vehicles": [ ... ]
  }
}

Teslim alma ve teslimat zaman aralıkları

Aşağıdaki kod örneğinde, bir gönderinin teslim alma ve teslimat işlemlerindeki zaman aralıklarının yapısı gösterilmektedir:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "timeWindows": [
              {
                "startTime": "YYYY-MM-DDTHH:MM:SSZ",
                "endTime": "YYYY-MM-DDTHH:MM:SSZ"
              }
            ]
          }
        ],
        "deliveries": [
          {
            "timeWindows": [
              {
                "startTime": "YYYY-MM-DDTHH:MM:SSZ",
                "endTime": "YYYY-MM-DDTHH:MM:SSZ"
              }
            ]
          }
        ]
      }
    ],
    "vehicles": [ ... ]
  }
}

Araç zaman aralıkları

Aşağıdaki kod örneğinde, bir aracın zaman aralıklarının yapısı gösterilmektedir:

{
  "model": {
    "shipments": [ ... ],
    "vehicles": [
      {
        "startTimeWindows": [
          {
            "startTime": "YYYY-MM-DDTHH:MM:SSZ",
            "endTime": "YYYY-MM-DDTHH:MM:SSZ"
          }
        ],
        "endTimeWindows": [
          {
            "startTime": "YYYY-MM-DDTHH:MM:SSZ",
            "endTime": "YYYY-MM-DDTHH:MM:SSZ"
          }
        ]
      }
    ]
  }
}

Örnek senaryo

Bu bölümde, köpek bakım merkezi işletmesi senaryosu kullanılmıştır. Örnekte, iki farklı evden köpekleri alıp bırakmak için rotalar optimize edilmektedir. Sahiplerin aynı alma ve bırakma zaman aralıkları vardır. Optimizasyon aracı, kreşin çalışma saatlerine, müşteriler için belirli teslim alma ve bırakma zaman aralıklarına ve sürücünün çalışma saatlerine uymalıdır.

Bu örnekte, istekteki özellik değerleri şunlardır:

Ebeveyn Mülk Değer Senaryo
ShipmentModel globalStartTime 2023-01-13T07:00:00Z Köpek kreşinizin açılış saatini temsil eder. Bu saatten önce teslim alma veya teslimat yapılamaz.
ShipmentModel globalEndTime 2023-01-13T19:00:00Z Köpek kreşinizin kapanış saatini temsil eder. Tüm teslim alma ve teslimat işlemleri bu saate kadar tamamlanmalıdır.
Shipment.pickups timeWindows startTime:
2023-01-13T07:30:00Z
Müşterinin evinden köpek almak için kabul edilebilir zaman aralığını tanımlar. Bu örnekte, her iki müşteriye de 07:30 ile 09:00 arasında teslim almaya hazır olmalarını söylediniz.
endTime:
2023-01-13T09:00:00Z
Shipment.deliveries timeWindows startTime:
2023-01-13T17:00:00Z
Köpeğin müşterinin evine bırakılması için kabul edilebilir zaman aralığını tanımlar. Bu örnekte, her iki müşteriye de köpeklerinin 17:00 ile 18:30 arasında teslim edileceğini söylediniz.
endTime:
2023-01-13T18:30:00Z
Vehicle startTimeWindows startTime:
2023-01-13T07:00:00Z
endTime:
2023-01-13T07:15:00Z
Aracın başlaması (07:00 - 07:15) ve bitmesi (17:00 - 17:15) için kabul edilebilir zaman aralığını tanımlar.
endTimeWindows startTime:
2023-01-13T18:45:00Z
endTime:
2023-01-13T19:00:00Z

Aşağıdaki diyagramda, bu rotayı etkileyen zaman aralıkları gösterilmektedir.

Birkaç zaman çizelgesi; genel zaman aralığını, teslim alma ve teslimat zaman aralıklarını, araç başlangıç ve bitiş zaman aralıklarını ve araç çalışma saatlerini temsil eder.

Bu senaryoda, diyagramda gösterildiği gibi zaman pencereleri aşağıdaki şekilde çalışır:

  • Genel zaman aralığı, köpek kreşinin çalışma saatlerini temsil eder ve diğer tüm zaman aralıkları bu zaman aralığına denk gelmelidir.
  • Teslim alma ve teslimatların günün başında ve sonunda kendi timeWindows vardır.
  • Aracın startTimeWindows, araç operatörüne çalışmaya başlaması gereken bir zaman aralığı verir ve endTimeWindows, gününü bitirmesi gereken başka bir zaman aralığı sağlar.
  • İlk startTimeWindow öğesinin başlangıç zamanı ve son endTimeWindow öğesinin bitiş zamanı, aracın çalışma saatlerini tanımlar. Bu örnekte, çalışma saatleri genel zaman aralığıyla aynıdır.

İstek örneği

Aşağıdaki örnekte, örnek senaryodaki zaman aralığı değerlerini içeren bir optimizeTours isteğinin yapısı gösterilmektedir.

{
  "model": {
    "globalStartTime": "2023-01-13T07:00:00Z",
    "globalEndTime": "2023-01-13T19:00:00Z",
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            },
            "timeWindows": [
              {
                "startTime": "2023-01-13T07:30:00Z",
                "endTime": "2023-01-13T09:00:00Z"
              }
            ]
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            },
            "timeWindows": [
              {
                "startTime": "2023-01-13T17:00:00Z",
                "endTime": "2023-01-13T18:30:00Z"
              }
            ]
          }
        ]
      },
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.7359,
              "longitude": -122.5011
            },
            "timeWindows": [
              {
                "startTime": "2023-01-13T07:30:00Z",
                "endTime": "2023-01-13T09:00:00Z"
              }
            ]
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            },
            "timeWindows": [
              {
                "startTime": "2023-01-13T17:00:00Z",
                "endTime": "2023-01-13T18:30:00Z"
              }
            ]
          }
        ]
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "costPerHour": 27,
        "startTimeWindows": [
          {
            "startTime": "2023-01-13T07:00:00Z",
            "endTime": "2023-01-13T07:15:00Z"
          }
        ],
        "endTimeWindows": [
          {
            "startTime": "2023-01-13T18:45:00Z",
            "endTime": "2023-01-13T19:00:00Z"
          }
        ]
      }
    ]
  }
}

Esnek zaman aralıkları

Zaman aralıkları, bir TimeWindow mesaj türünde softStartTime ve softEndTime tanımlanarak esnek kısıtlamalar olarak kullanılabilir. Bu sayede optimize edici, belirli bir maliyet karşılığında belirtilen zaman aralığından sapabilir ve faydalı olduğunda zaman aralıklarına sıkı sıkıya bağlı kalmak yerine genel optimizasyona öncelik verebilir.

Esnek zaman aralıklarında aşağıdaki kullanım sınırlamaları geçerlidir:

Özellikler

Aşağıdaki tabloda, zaman aralıkları için esnek kısıtlama özellikleri açıklanmaktadır.

Mülk adı Biçim Tesis açıklaması
softStartTime Zaman damgası Esnek zaman aralığının başlangıcını belirtir. Bu süreden önce bir etkinlik gerçekleşirse maliyet oluşur.
softEndTime Zaman damgası Esnek zaman aralığının sonunu belirtir. Bu süreden sonra bir etkinlik gerçekleşirse maliyet oluşur.
costPerHourBeforeSoftStartTime sayı Bir etkinlik softStartTime tarihinden önce başladığında saat başına tahakkuk eden maliyet. softStartTime kullanılırken bu özellik zorunludur. Maliyetlerin nasıl uygulanacağı hakkında daha fazla bilgi edinmek için Maliyet modeli temel kavramına bakın.
costPerHourAfterSoftEndTime sayı Bir etkinlik softEndTime tarihinden sonra sona erdiğinde saat başına tahakkuk eden maliyet. softEndTime kullanılırken bu özellik zorunludur. Maliyetleri nasıl uygulayacağınız hakkında daha fazla bilgi edinmek için Maliyet modeli temel kavramına bakın.

Kod örneği

Aşağıdaki örnekte, TimeWindow mesaj türünün esnek kısıtlama özelliklerinin yapısı gösterilmektedir:

    {
      "softStartTime": "SOFT_START_TIME",
      "softEndTime": "SOFT_END_TIME",
      "costPerHourBeforeSoftStartTime": COST_BEFORE_START_TIME,
      "costPerHourAfterSoftEndTime": COST_AFTER_END_TIME
    }