বেস স্ট্রাকচার (ShipmentModel, Shipment এবং Vehicle)

ShipmentModel-এ `Shipment` মেসেজের ধরন সহ একটি `shipments` অবজেক্ট এবং `Vehicle` মেসেজের ধরন সহ একটি `vehicles` অবজেক্ট থাকে।

Route Optimization API-এর উদ্দেশ্য হল একাধিক লোকেশনে যাওয়ার জন্য গাড়ির বহরের রুট প্ল্যান করা। OptimizeToursRequest অবজেক্ট এইসব গাড়ি ও লোকেশনের বৈশিষ্ট্য বর্ণনা করে এবং এটি প্রতিটি এন্ডপয়েন্টের অনুরোধের বডির প্রাথমিক স্ট্রাকচার।

OptimizeToursRequest অবজেক্টের বেস স্ট্রাকচার নিচে দেওয়া হল:

  • model ফিল্ডে ShipmentModel মেসেজ থাকে, যাতে দুটি মূল ফিল্ড থাকে:
    • একটি shipments ফিল্ড, যাতে এক বা একাধিক Shipment মেসেজ থাকে।
    • একটি vehicles ফিল্ড, যাতে এক বা একাধিক Vehicle মেসেজ থাকে।

এই ডকুমেন্টে নিম্নলিখিত মেসেজের ধরন বর্ণনা করা হয়েছে:

  • ShipmentModel: শিপমেন্ট, উপলভ্য গাড়ি ও অন্যান্য অবজেক্টের তালিকা সংরক্ষণ করে যা তাদের সম্পর্ক বর্ণনা করে।
  • Shipment: কোনও গাড়ির মাধ্যমে ভিজিট করা হবে এমন লোকেশন বর্ণনা করে। এগুলি পিক-আপ ও ডেলিভারি করার জন্য আসল প্যাকেজ বা গাড়ির ড্রাইভার যেখানে পরিষেবা প্রদান করেন সেইসব জায়গাকে বোঝাতে পারে।
  • Vehicle: শিপমেন্ট লোকেশনের মধ্যে পরিবহনের মাধ্যম বর্ণনা করে। প্রতিটি গাড়ি আসলে একটি গাড়ি বা হেঁটে ঘুরে বেড়ানো কোনও ব্যক্তিকে বোঝায়।

ShipmentModel

ShipmentModel-এ রুট অপ্টিমাইজেশন সমস্যার এলিমেন্ট থাকে। এতে শিপমেন্টের একটি সেট থাকে যা যানবাহনের একটি সেট দ্বারা সম্পন্ন করা যেতে পারে, যেখানে সীমাবদ্ধতা বিবেচনা করা হয় এবং সামগ্রিক খরচ কমানো হয়।

নিচের সারণীতে ShipmentModel-এর কিছু প্রাসঙ্গিক বৈশিষ্ট্য বর্ণনা করা হয়েছে:

প্রপার্টি বিবরণ
shipments ও vehicles প্রয়োজনীয় অবজেক্ট যাতে এক বা একাধিক শিপমেন্ট ও গাড়ির বিবরণ থাকে।
globalStartTime ও globalEndTime সময়সীমার শুরু ও শেষ নির্দেশ করে যার মধ্যে সব গাড়িকে সব শিপমেন্ট সম্পূর্ণ করতে হবে। এইসব প্রপার্টি প্রয়োজন না হলেও, এগুলি অন্তর্ভুক্ত করার জন্য সাজেস্ট করা হয় কারণ সময়ের সীমাবদ্ধতা মেনে চললে অপ্টিমাইজার সবচেয়ে ভাল কাজ করে।

ShipmentModel-এ প্রপার্টির সম্পূর্ণ তালিকা দেখতে রেফারেন্স ডকুমেন্টেশন দেখুন।

ShipmentModel-এর উদাহরণ

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

এই উদাহরণের জন্য, আপনার অনুরোধে ShipmentModel প্রপার্টির ভ্যালু হল নিম্নলিখিত:

প্রপার্টি ভ্যালু বিবরণ
globalStartTime 2024-02-13T00:00:00.000Z ব্যবসার কর্মসময় শুরুর তারিখ ও সময়।
globalEndTime 2024-02-14T06:00:00.000Z ব্যবসার কর্মসময় শেষ হওয়ার তারিখ ও সময়।

নিচে ShipmentModel মেসেজের কোড স্যাম্পেল দেওয়া হল যেখানে উদাহরণ হিসেবে পরিস্থিতির ভ্যালু যোগ করা হয়েছে।

{
  "model": {
    "shipments": [
      ...
    ],
    "vehicles": [
      ...
    ],
   "globalStartTime": "2024-02-13T00:00:00.000Z",
   "globalEndTime": "2024-02-14T06:00:00.000Z"
  }
}

Shipment

Shipment মেসেজের ধরন কোনও শিপমেন্টের প্রপার্টি স্ট্রাকচারকে সংজ্ঞায়িত করে যা ডেলিভার করা যেতে পারে অথবা কোনও রুটে পরিষেবা প্রদান করা যেতে পারে।

বাস্তব জীবনের একটি শিপমেন্ট একটি `Shipment` মেসেজের সমান, যা একটি `shipments` অবজেক্টের মধ্যে থাকে

ডায়াগ্রামে যেমন দেখানো হয়েছে:

  • Shipment মেসেজে বাস্তব জীবনের শিপমেন্ট বা পরিষেবার সব তথ্য থাকে।
  • shipments ফিল্ডে সব Shipment মেসেজ উল্লেখ করা আছে।
  • shipments ফিল্ডে এক বা একাধিক Shipment মেসেজ আছে।

Shipment মেসেজে অন্তত একটি pickups বা deliveries অবজেক্ট থাকতে হবে। এইসব অবজেক্টের সংজ্ঞা নিচে দেওয়া হল:

  • pickups শিপমেন্টের পিক-আপ লোকেশন নির্ধারণ করে।
  • deliveries শিপমেন্টের ডেলিভারি লোকেশন নির্ধারণ করে।
  • pickups এবং deliveries, দুটিতেই VisitRequest মেসেজের ধরন থাকে যা লোকেশন এবং অন্যান্য বিবরণ নির্ধারণ করে।

Shipment মেসেজে pickups ও deliveries-এর কনফিগারেশনের উপর ভিত্তি করে বিভিন্ন পরিস্থিতি নিচের সারণীতে বর্ণনা করা হয়েছে।

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

Shipment-এ প্রপার্টির সম্পূর্ণ তালিকা দেখতে রেফারেন্স ডকুমেন্টেশন দেখুন।

Shipment-এর উদাহরণ

এই উদাহরণে, আপনার একটি ডগি ডে-কেয়ার পরিষেবা আছে যেখানে আপনি কুকুরদের তাদের বাড়ি থেকে তুলে নেন এবং তাদের আপনার ডে-কেয়ারে পৌঁছে দেন। আপনি দুটি কুকুরের পিক-আপ লোকেশন সেট করতে চান এবং আপনার ব্যবসায় তাদের ডেলিভারি লোকেশন সেট করতে চান:

  • প্রথম কুকুরের বাড়ি হল সান ফ্রান্সিসকোর কোইট টাওয়ারে। এই লোকেশনের স্থানাঙ্ক হল অক্ষাংশ ৩৭.৮০২৪ এবং দ্রাঘিমাংশ -১২২.৪০৫৮।
  • দ্বিতীয় কুকুরের বাড়ি হল সান ফ্রান্সিসকোর সাউথ সানসেট প্লেগ্রাউন্ড পার্ক। এই লোকেশনের কোঅর্ডিনেট হল অক্ষাংশ ৩৭.৭৩৫৯ এবং দ্রাঘিমাংশ -১২২.৫০১১।
  • আপনার কুকুরের ডে-কেয়ার সম্বলপুরের ভিআইপি রোডে আছে। এই লোকেশনটির স্থানাঙ্ক হল অক্ষাংশ ৩৭.৭৫৯৭৭৩ এবং দ্রাঘিমাংশ -১২২.৪২৭০৬৩।

নিচে Shipment মেসেজের একটি কোড স্যাম্পেল দেওয়া হল, যেখানে shipments অবজেক্টে উদাহরণ কোঅর্ডিনেট সহ দুটি Shipmentমেসেজের ধরন রয়েছে।

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
      },
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.7359,
              "longitude": -122.5011
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
      }
    ],
    "vehicles": [
    ...
    ]
  }
}

Vehicle

Vehicle মেসেজের ধরন কোনও রুটে শিপমেন্ট করতে পারে এমন গাড়ির প্রপার্টি স্ট্রাকচার সংজ্ঞায়িত করে।

বাস্তব জীবনের একটি গাড়ি একটি `Vehicle` মেসেজের সমান, যা একটি `vehicles` অবজেক্টের মধ্যে থাকে

ডায়াগ্রামে যেমন দেখানো হয়েছে:

  • Vehicle মেসেজে বাস্তব জীবনের গাড়ির সব তথ্য থাকে।
  • vehicles ফিল্ডে সব Vehicle মেসেজ উল্লেখ করা আছে।
  • vehicles ফিল্ডে একাধিক Vehicle মেসেজ আছে।

নিম্নলিখিত সারণীতে Vehicle-এর কিছু প্রাসঙ্গিক বৈশিষ্ট্য বর্ণনা করা হয়েছে।

প্রপার্টি বিবরণ
startLocation ও endLocation গাড়ির শুরু ও শেষ লোকেশন, যা চূড়ান্ত অপ্টিমাইজ করা রুটের অংশ। নির্দিষ্ট করা না থাকলে, ডিফল্ট হিসেবে প্রথম শিপমেন্ট পিক-আপ ও শেষ শিপমেন্ট ডেলিভারির লোকেশন সেট করা হয়।
costPerHour, costPerKilometer, costPerTraveledHour গাড়ির নির্দিষ্ট খরচের প্যারামিটার। API যাতে অপ্টিমাইজ করা রুট দেখাতে পারে, তার জন্য আপনার অনুরোধে অন্তত একটি খরচের প্যারামিটার থাকলে ভালো হয়। খরচ সম্পর্কে আরও জানতে খরচের মডেল সংক্রান্ত মূল ধারণা দেখুন।
startTimeWindows ও endTimeWindows কোনও রুটে গাড়ি চালানোর সময়সীমা নির্ধারণ করুন। এগুলি অবশ্যই ShipmentModel-এ সেট করা globalStartTime এবং globalEndTime টাইম উইন্ডোর মধ্যে হতে হবে। এই প্রপার্টি যোগ করা বাধ্যতামূলক না হলেও, এটি যোগ করার জন্য সাজেস্ট করা হয় কারণ সময়ের সীমাবদ্ধতা মেনে চললে অপ্টিমাইজার সবচেয়ে ভাল কাজ করে।

Vehicle-এর উদাহরণ

এই উদাহরণে, আপনার একটি ডগি ডে-কেয়ার পরিষেবা আছে এবং আপনি দিনের শুরুতে ও শেষে আপনার গাড়ির লোকেশন এবং এটি কতটা গ্যাস খরচ করে তা নির্ধারণ করতে চান। আপনাকে গাড়ির কাজের সময় উল্লেখ করতে হবে না কারণ এটি ShipmentModel অবজেক্টের মধ্যে globalStartTime এবং globalEndTime প্রপার্টিতে আপনার উল্লেখ করা সময়ের সাথে মিলে যায়।

এই উদাহরণের জন্য, আপনার অনুরোধে Vehicle প্রপার্টির ভ্যালু হল নিম্নলিখিত:

প্রপার্টি ভ্যালু বিবরণ
startLocation latitude: 37.759773, longitude: -122.427063 আপনার গাড়ির জন্য রুটের শুরুর কোঅর্ডিনেট। এগুলি আপনার ডগি ডে-কেয়ারের লোকেশনের সাথে ম্যাচ করে যা মিশন ডলোরেস পার্ক, সান ফ্রান্সিসকোতে অবস্থিত।
endLocation latitude: 37.759773, longitude: -122.427063 আপনার গাড়ির জন্য রুটের শেষ স্থানাঙ্ক। এগুলি আপনার ডগি ডে-কেয়ারের লোকেশনের সাথে ম্যাচ করে যা মিশন ডলোরেস পার্ক, সান ফ্রান্সিসকোতে অবস্থিত।
costPerHour ২৭ আপনার ডগি ডে-কেয়ারের গাড়ি চালানোর জন্য আপনি ড্রাইভারকে কত টাকা দেন। আপনি ড্রাইভারকে প্রতি ঘণ্টায় ২৭ ডলার পেমেন্ট করেন।

নিচে Vehicle মেসেজের কোড স্যাম্পেল দেওয়া হল যেখানে উদাহরণ হিসেবে পরিস্থিতির ভ্যালু যোগ করা হয়েছে।

{
  "model": {
    "shipments": [
    ...
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "costPerHour": 27
      }
    ]
  }
}

Vehicle-এ প্রপার্টির সম্পূর্ণ তালিকা দেখতে রেফারেন্স ডকুমেন্টেশন দেখুন।

অনুরোধের সম্পূর্ণ উদাহরণ

নিম্নলিখিত কোড স্যাম্পেল একটি সম্পূর্ণ অনুরোধের উদাহরণ প্রদান করে, যা এই ডকুমেন্টে দেখানো ShipmentModel, Shipment এবং Vehicle উদাহরণগুলিকে একত্রিত করে।

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
      },
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.7359,
              "longitude": -122.5011
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "costPerHour": 27
      }
    ],
    "globalStartTime": "2024-02-13T00:00:00.000Z",
    "globalEndTime": "2024-02-14T06:00:00.000Z"
  }
}