টাইম উইন্ডো

টাইম উইন্ডো `ShipmentModel`-এ, পিক-আপ ও ডেলিভারি অবজেক্টের `Shipment`-এ এবং `Vehicle`-এ থাকে।

টাইম উইন্ডো কোনও রুটে ইভেন্টের সময় নির্দিষ্ট করে। এইসব ইভেন্টের মধ্যে ড্রাইভারের রুটের শুরু ও শেষ, পিক-আপ ও ডেলিভারির শিডিউল করা সময় অথবা পুরো রুটের সময়সীমা অন্তর্ভুক্ত থাকতে পারে।

টাইম উইন্ডো এই ধরনের উদ্দেশ্য পূরণ করতে সাহায্য করতে পারে:

  • নির্দিষ্ট সময়সীমার মধ্যে পিক-আপ ও ডেলিভারি সম্পূর্ণ করার কাজকে অগ্রাধিকার দিন।
  • মোট কর্মসময়ের মধ্যে অপারেট করার জন্য রুট প্ল্যান করুন।
  • গাড়ি যাতে নির্দিষ্ট সময়সীমার মধ্যে রুট শুরু ও শেষ করে তা নিশ্চিত করুন।

স্ট্রাকচার

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

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

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

প্রপার্টি

নিম্নলিখিত সারণীতে গ্লোবাল টাইম উইন্ডো প্রপার্টি বর্ণনা করা আছে।

প্রপার্টি ফর্ম্যাট বিবরণ
globalStartTime Timestamp যেকোনও ইভেন্টের জন্য সবচেয়ে আগেকার সময়।
globalEndTime Timestamp যেকোনও ইভেন্টের জন্য লেটেস্ট সময়।

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

মা বাবা প্রপার্টি ফর্ম্যাট বিবরণ
Shipment।pickups timeWindows TimeWindow মেসেজের ধরনের অ্যারে। শিপমেন্ট পিক-আপের জন্য সময়সীমা নির্দিষ্ট করে।
Shipment।deliveries timeWindows শিপমেন্ট ডেলিভারির জন্য সময়ের ব্যবধান নির্দিষ্ট করে।
Vehicle startTimeWindows গাড়ির অপারেটিং শিডিউলের শুরুর সময় নির্দিষ্ট করে।
endTimeWindows গাড়ির অপারেটিং শিডিউলের শেষ সময় নির্দিষ্ট করে।

নিম্নলিখিত সারণীতে TimeWindow মেসেজের ধরনের প্রপার্টি বর্ণনা করা হয়েছে।

প্রপার্টি ফর্ম্যাট বিবরণ
startTime স্ট্রিং (RFC3339 UTC "Zulu" ফর্ম্যাট) টাইম উইন্ডোর শুরু।
endTime স্ট্রিং (RFC3339 UTC "Zulu" ফর্ম্যাট) টাইম উইন্ডোর শেষ।

উদাহরণ

এই বিভাগে তিন ধরনের উদাহরণ কভার করা হয়েছে:

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

কোডের নমুনা

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

গ্লোবাল টাইম উইন্ডো

নিম্নলিখিত কোড স্যাম্পেল থেকে গ্লোবাল টাইম উইন্ডোর গঠন সম্পর্কে জানা যায়:

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

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

গ্লোবাল টাইম উইন্ডো, পিক-আপ ও ডেলিভারি টাইম উইন্ডো, গাড়ি চালু ও বন্ধ করার টাইম উইন্ডো এবং গাড়ি চালানোর সময়, একাধিক টাইমলাইনের মাধ্যমে দেখানো হয়।

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

  • গ্লোবাল টাইম উইন্ডো কুকুরের ডে-কেয়ারের কর্মসময়কে দেখায় এবং অন্য সব টাইম উইন্ডোকে এই টাইম উইন্ডোর মধ্যে থাকতে হবে।
  • পিক-আপ ও ডেলিভারির জন্য দিনের শুরু ও শেষে আলাদা আলাদা 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
    }