বেস স্ট্রাকচার (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 মেসেজে বাস্তব জীবনের কোনও শিপমেন্ট বা পরিষেবা সম্পর্কিত সব তথ্য থাকে।
  • সব Shipment মেসেজ shipments ফিল্ডে উল্লেখ করা আছে।
  • shipments ফিল্ডে এক বা একাধিক Shipment মেসেজ থাকে।

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

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

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

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

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

Shipment-এর উদাহরণ

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

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

নিচে 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 মেসেজে বাস্তব জীবনের গাড়ির সব তথ্য থাকে।
  • Vehicle মেসেজগুলি vehicles ফিল্ডে উল্লেখ করা আছে।
  • 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"
  }
}