সময় জানালা

Time windows are present in `ShipmentModel`, in `Shipment` in the pickups and deliveries objects, and in `Vehicle`.

টাইম উইন্ডো একটি রুটের বিভিন্ন ঘটনার সময় নির্ধারণ করে। এই ঘটনাগুলোর মধ্যে একজন চালকের রুটের শুরু ও শেষ, নির্ধারিত পিকআপ ও ডেলিভারির সময়, অথবা একটি সম্পূর্ণ রুটের সময়কাল অন্তর্ভুক্ত থাকতে পারে।

সময়সীমা নিম্নলিখিত উদ্দেশ্যগুলিকে সমর্থন করতে পারে:

  • নির্দিষ্ট সময়সীমার মধ্যে পণ্য সংগ্রহ এবং বিতরণের কাজ সম্পন্ন করাকে অগ্রাধিকার দিন
  • সামগ্রিক কর্মঘন্টার মধ্যে কার্যক্রম পরিচালনার জন্য রুট পরিকল্পনা করুন
  • যানবাহনগুলো যেন নির্দিষ্ট সময়সীমার মধ্যে তাদের রুট শুরু ও শেষ করে, তা নিশ্চিত করুন

কাঠামো

ডায়াগ্রামে যেমন দেখানো হয়েছে, টাইম উইন্ডোগুলো নিম্নরূপভাবে বিন্যস্ত করা হয়েছে:

প্রয়োজনীয় জিনিসপত্রের চেকলিস্ট

নিম্নলিখিত চেকলিস্টটিতে এমন কিছু অপরিহার্য জ্ঞান বর্ণনা করা হয়েছে যা টাইম উইন্ডো সম্পর্কিত সম্ভাব্য ভুল প্রতিরোধ করে। এই তালিকাটি আপনাকে আপনার অনুরোধ যাচাই করতে এবং আপনার প্রতিক্রিয়ার সমস্যা সমাধানে সাহায্য করতে পারে।

বৈশিষ্ট্য

নিম্নলিখিত সারণিতে গ্লোবাল টাইম উইন্ডো বৈশিষ্ট্যগুলো বর্ণনা করা হয়েছে।

সম্পত্তি ফর্ম্যাট বর্ণনা
globalStartTime Timestamp যেকোনো অনুষ্ঠানের জন্য সর্বনিম্ন সময়।
globalEndTime Timestamp যেকোনো ইভেন্টের জন্য সর্বশেষ সময়।

নিম্নলিখিত সারণিতে চালান এবং যানবাহনের সময়সীমার বৈশিষ্ট্যগুলো বর্ণনা করা হয়েছে।

অভিভাবক সম্পত্তি ফর্ম্যাট বর্ণনা
Shipment . pickups timeWindows TimeWindow মেসেজ টাইপগুলোর অ্যারে। চালান সংগ্রহের জন্য সময়সীমা নির্দিষ্ট করে।
Shipment . deliveries timeWindows চালান সরবরাহের জন্য সময়সীমা নির্দিষ্ট করে।
Vehicle startTimeWindows যানবাহনের পরিচালন সময়সূচীর শুরুর সময় নির্দিষ্ট করে।
endTimeWindows একটি যানবাহনের পরিচালন সময়সূচির সমাপ্তির সময় নির্দিষ্ট করে।

নিম্নোক্ত সারণিতে TimeWindow মেসেজ টাইপের বৈশিষ্ট্যগুলো বর্ণনা করা হয়েছে।

সম্পত্তি ফর্ম্যাট বর্ণনা
startTime স্ট্রিং (RFC3339 UTC "জুলু" ফরম্যাট) একটি নির্দিষ্ট সময়সীমার শুরু।
endTime স্ট্রিং (RFC3339 UTC "জুলু" ফরম্যাট) একটি নির্দিষ্ট সময়সীমার সমাপ্তি।

উদাহরণ

এই অংশে তিন ধরনের উদাহরণ আলোচনা করা হয়েছে:

কোডের নমুনা

নিম্নলিখিত বিভাগগুলিতে বিভিন্ন ধরণের টাইম উইন্ডোর কোড নমুনা দেখানো হয়েছে।

বৈশ্বিক সময় উইন্ডো

নিম্নলিখিত কোড নমুনাটি গ্লোবাল টাইম উইন্ডোগুলোর গঠন দেখায়:

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

পিকআপ এবং ডেলিভারির সময়সীমা

নিম্নলিখিত কোড নমুনাটি একটি চালানের পিকআপ এবং ডেলিভারির সময়সীমার গঠন দেখায়:

{
  "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": [ ... ]
  }
}

গাড়ির সময়সীমা

নিম্নলিখিত কোড নমুনাটি একটি গাড়ির টাইম উইন্ডোগুলোর গঠন দেখায়:

{
  "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"
          }
        ]
      }
    ]
  }
}

উদাহরণ দৃশ্যকল্প

এই বিভাগে একটি ডগি ডে-কেয়ার ব্যবসার পরিস্থিতি ব্যবহার করা হয়েছে। উদাহরণটি দুটি ভিন্ন বাড়ি থেকে কুকুর আনা-নেওয়ার জন্য রুট অপ্টিমাইজ করে, এবং মালিকদের কুকুর আনা-নেওয়ার জন্য একই সময়সীমা থাকে। অপ্টিমাইজারটিকে অবশ্যই ডে-কেয়ারের কার্যঘণ্টা, গ্রাহকদের জন্য নির্দিষ্ট আনা-নেওয়ার সময়সীমা এবং ড্রাইভারের কাজের সময়কে সম্মান করতে হবে।

এই উদাহরণের ক্ষেত্রে, অনুরোধের প্রপার্টি মানগুলো হলো নিম্নরূপ:

অভিভাবক সম্পত্তি মূল্য দৃশ্যকল্প
ShipmentModel globalStartTime 2023-01-13T07:00:00Z এটি আপনার ডগি ডে-কেয়ার খোলার সময়। এই সময়ের আগে কোনো পিকআপ বা ডেলিভারি করা যাবে না।
ShipmentModel globalEndTime 2023-01-13T19:00:00Z এটি আপনার ডগি ডে-কেয়ার বন্ধ হওয়ার সময়। এই সময়ের মধ্যে সমস্ত পিকআপ এবং ডেলিভারি সম্পন্ন করতে হবে।
Shipment.pickups timeWindows startTime :
2023-01-13T07:30:00Z
গ্রাহকের বাড়ি থেকে কুকুর নিয়ে আসার জন্য গ্রহণযোগ্য সময়সীমা নির্ধারণ করে। এই উদাহরণে, আপনি উভয় গ্রাহককে সকাল ৭:৩০ থেকে ৯:০০ টার মধ্যে কুকুরটি নিয়ে আসার জন্য উপস্থিত থাকতে বলেছেন।
endTime :
2023-01-13T09:00:00Z
Shipment.deliveries timeWindows startTime :
2023-01-13T17:00:00Z
গ্রাহকের বাড়িতে কুকুর পৌঁছে দেওয়ার জন্য গ্রহণযোগ্য সময়সীমা নির্ধারণ করে। এই উদাহরণে, আপনি উভয় গ্রাহককে বলেছেন যে তাদের কুকুরগুলো বিকাল ৫:০০টা থেকে সন্ধ্যা ৬:৩০টার মধ্যে পৌঁছে দিতে হবে।
endTime :
2023-01-13T18:30:00Z
Vehicle 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

নিম্নলিখিত চিত্রটি এই পথটিকে প্রভাবিত করে এমন সময়সীমাগুলো তুলে ধরে।

Several timelines represent the global time window, pickup and delivery time windows, vehicle start and end time windows, and vehicle working hours.

এই পরিস্থিতিতে, ডায়াগ্রামে যেমন দেখানো হয়েছে, টাইম উইন্ডোগুলি নিম্নরূপভাবে কাজ করে:

  • বৈশ্বিক সময়সীমাটি ডগি ডে-কেয়ারের কার্যঘণ্টা নির্দেশ করে এবং অন্য সকল সময়সীমা অবশ্যই এই সময়সীমার মধ্যে থাকতে হবে।
  • পিকআপ এবং ডেলিভারির জন্য যথাক্রমে দিনের শুরুতে এবং শেষে নিজস্ব timeWindows রয়েছে।
  • যানবাহনটির startTimeWindows চালককে একটি সময়সীমা দেয় যার মধ্যে তাকে অবশ্যই কাজ শুরু করতে হবে, এবং endTimeWindows আরেকটি সময়সীমা প্রদান করে যার মধ্যে তাকে তার দিনের কাজ শেষ করতে হবে।
  • প্রথম startTimeWindow এর শুরুর সময় এবং শেষ endTimeWindow এর শেষের সময় যানবাহনটির পরিচালনার সময় নির্ধারণ করে, যা এই ক্ষেত্রে গ্লোবাল টাইম উইন্ডোর সমান।

অনুরোধের উদাহরণ

নিম্নলিখিত উদাহরণটি উদাহরণস্বরূপ সিনারিওর টাইম উইন্ডো মানগুলিকে অন্তর্ভুক্ত করে একটি optimizeTours অনুরোধের কাঠামো দেখায়।

{
  "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"
          }
        ]
      }
    ]
  }
}

সফট টাইম উইন্ডোজ

একটি TimeWindow মেসেজ টাইপে softStartTime এবং softEndTime নির্ধারণ করার মাধ্যমে টাইম উইন্ডোগুলোকে সফট কনস্ট্রেইন্ট হিসেবে ব্যবহার করা যেতে পারে। এটি অপটিমাইজারকে একটি নির্দিষ্ট খরচে নির্ধারিত টাইম উইন্ডো থেকে বিচ্যুত হওয়ার সুযোগ দেয়, যার ফলে সুবিধাজনক ক্ষেত্রে সময়সীমা কঠোরভাবে মেনে চলার চেয়ে সামগ্রিক অপটিমাইজেশনকে অগ্রাধিকার দেওয়া হয়।

সফট টাইম উইন্ডো ব্যবহারের ক্ষেত্রে নিম্নলিখিত সীমাবদ্ধতাগুলো রয়েছে:

  • এগুলো globalStartTime এবং globalEndTime এ প্রয়োগ করা যায় না, কারণ এগুলো TimeWindow মেসেজ টাইপ ব্যবহার করে না।
  • এগুলি শুধুমাত্র তখনই প্রযোজ্য যখন একটি তালিকায় একটিমাত্র TimeWindow থাকে।

বৈশিষ্ট্য

নিম্নলিখিত সারণিতে টাইম উইন্ডোগুলির জন্য সফট কনস্ট্রেইন্ট বৈশিষ্ট্যগুলি বর্ণনা করা হয়েছে।

সম্পত্তির নাম ফর্ম্যাট সম্পত্তির বিবরণ
softStartTime টাইমস্ট্যাম্প সফট টাইম উইন্ডোর শুরু নির্দিষ্ট করে। এই সময়ের আগে কোনো ঘটনা ঘটলে, একটি খরচ ধার্য হয়।
softEndTime টাইমস্ট্যাম্প সফট টাইম উইন্ডোর শেষ সময় নির্দিষ্ট করে। এই সময়ের পরে কোনো ঘটনা ঘটলে, একটি খরচ আরোপিত হয়।
costPerHourBeforeSoftStartTime সংখ্যা softStartTime এর আগে কোনো ইভেন্ট শুরু হলে প্রতি ঘণ্টার খরচ। softStartTime ব্যবহার করার সময় এই প্রপার্টিটি আবশ্যক। খরচ কীভাবে প্রয়োগ করতে হয় সে সম্পর্কে আরও জানতে কস্ট মডেল মূল ধারণাটি দেখুন।
costPerHourAfterSoftEndTime সংখ্যা softEndTime এর পরে কোনো ইভেন্ট শেষ হলে প্রতি ঘন্টায় যে খরচ হয়। softEndTime ব্যবহার করার সময় এই প্রপার্টিটি আবশ্যক। খরচ কীভাবে প্রয়োগ করতে হয় সে সম্পর্কে আরও জানতে কস্ট মডেল মূল ধারণাটি দেখুন।

কোডের নমুনা

নিম্নলিখিত উদাহরণটি একটি TimeWindow মেসেজ টাইপের সফট কনস্ট্রেইন্ট প্রোপার্টিগুলোর গঠন দেখায়:

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