লোড সংক্রান্ত চাহিদা ও সীমা

loadDemands প্রপার্টি ShipmentModel.shipments.Shipment-এর অধীনে এবং loadLimits প্রপার্টি ShipmentModel.vehicles.Vehicle-এর অধীনে সংজ্ঞায়িত করা হয়।

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

লোড সংক্রান্ত চাহিদা ও সীমা নিম্নলিখিত উদ্দেশ্য পূরণে সাহায্য করতে পারে:

  • গাড়িতে অতিরিক্ত মালপত্র লোড করা আটকানো।
  • শিপমেন্ট পিক-আপ ও ডেলিভারি করার সময় গাড়ির লোড কীভাবে পরিবর্তিত হয় তা মনিটর করুন।
  • ভারী লোড শিপমেন্টের সাথে ভারী ডিউটি গাড়ির পেয়ারিংকে অগ্রাধিকার দিন।

এইসব প্রপার্টিতে লোডের চাহিদা ও সীমা উল্লেখ করা আছে:

  • loadDemands কোনও নির্দিষ্ট শিপমেন্টের জন্য প্রয়োজনীয় ক্যাপাসিটির পরিমাণ নির্দিষ্ট করে।
  • loadLimits কোনও নির্দিষ্ট গাড়ির সর্বাধিক ক্যাপাসিটি নির্দিষ্ট করে।

স্ট্রাকচার

ডায়াগ্রামে যেমন দেখানো হয়েছে, লোডের চাহিদা ও সীমা এইভাবে সাজানো থাকে:

  • loadDemands হল Shipment-এর প্রপার্টি। একটি Shipment -এর একাধিক লোডের চাহিদা থাকতে পারে।
  • loadLimits হল Vehicle-এর প্রপার্টি। একটি Vehicle-এ একাধিক লোড সীমা থাকতে পারে।

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

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

প্রপার্টি

এই বিভাগে লোড ডিমান্ড ও সীমার প্রপার্টি বর্ণনা করা হয়েছে, যা নিচে উল্লেখ করা হল:

  • লোড টাইপ: লোডের চাহিদা ও সীমার মধ্যে শেয়ার করা প্রপার্টি।
  • Load এবং LoadLimit: লোড ডিমান্ড এবং লোড লিমিটে যথাক্রমে অনন্য প্রপার্টি উপস্থিত থাকে।

লোডের ধরন

লোড টাইপ হল একটি স্ট্রিং কী যা আপনি সমানভাবে শিপমেন্ট ও গাড়িতে প্রয়োগ করেন। একটি লোডের ধরন, কোনও শিপমেন্টের লোড চাহিদা এবং কোনও গাড়ির লোড সীমা, দু'টির ক্ষেত্রেই প্রযোজ্য।

লোড টাইপ প্রোটোকল বাফার ম্যাপ টাইপ সিনট্যাক্স ব্যবহার করে। লোড টাইপের নামকরণ করার সময়, লোডের ধরন ও ইউনিট বর্ণনা করে এমন শনাক্তকারী ব্যবহার করুন। যেমন: weightKg, volume_gallons, palletcount অথবা frequencyDaily।

Load ও LoadLimit

Load এবং LoadLimit অবজেক্টে নির্দিষ্ট প্রপার্টি থাকে যা শিপমেন্ট এবং গাড়ির জন্য ক্ষমতার প্রয়োজনীয়তা নির্ধারণ করে, নিম্নলিখিত সারণী এই প্রপার্টিগুলি বর্ণনা করে:

অবজেক্ট মা বাবা প্রপার্টি প্রপার্টির ধরন প্রপার্টির বিবরণ
Load loadDemands amount স্ট্রিং (int64 ফর্ম্যাট) নির্দিষ্ট ধরনের শিপমেন্টের ধারণক্ষমতা সংক্রান্ত প্রয়োজনীয়তা নির্ধারণ করে।
LoadLimit loadLimits maxLoad স্ট্রিং (int64 ফর্ম্যাট) নির্দিষ্ট করা ধরনে গাড়ির সর্বাধিক লোড ক্যাপাসিটি নির্ধারণ করে।

উদাহরণ

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

  • কোড স্যাম্পেল যা লোড ডিমান্ড ও লিমিট প্রপার্টির স্ট্রাকচার ব্যাখ্যা করে।
  • একটি উদাহরণ যা API অনুরোধে লোড ডিমান্ড এবং সীমা ব্যবহার করার একটি উপায় দেখায়।
  • অনুরোধের একটি উদাহরণ যাতে উদাহরণস্বরূপ পরিস্থিতিতে সেট করা ভ্যালু অন্তর্ভুক্ত থাকে।

কোডের নমুনা

নিচে দেওয়া উদাহরণে লোড ডিমান্ডের স্ট্রাকচার দেখানো হয়েছে যেখানে আপনি loadDemands টাইপকে স্ট্রিং হিসেবে এবং amount প্রপার্টিকে স্ট্রিং হিসেবে int64 ফর্ম্যাটে সেট করতে পারবেন:

{
  "model": {
    "shipments": [ ...
      {
        "loadDemands": {
          "MATCHING_LOAD_TYPE": {
            "amount": "YOUR_LOAD_AMOUNT"
          }
        }
      }
    ],
    "vehicles": [ ...
    ]
  }
}

নিচের উদাহরণে লোড সীমার সবচেয়ে সাধারণ স্ট্রাকচার দেখানো হয়েছে, যেখানে আপনি loadLimits-এর ধরন স্ট্রিং হিসেবে এবং maxLoad প্রপার্টি int64 ফর্ম্যাটে স্ট্রিং হিসেবে সেট করতে পারবেন:

{
  "model": {
    "shipments": [ ...
    ],
    "vehicles": [ ...
      {
        "loadLimits": {
          "MATCHING_LOAD_TYPE": {
            "maxLoad": "YOUR_MAX_LOAD"
          }
        }
      }
    ]
  }
}

পরিস্থিতির উদাহরণ

এই বিভাগে এমন একটি পরিস্থিতি বর্ণনা করা হয়েছে যেখানে আপনার একটি ডগি ডে-কেয়ার ব্যবসা আছে এবং আপনি সীমিত সংখ্যক ক্রেট সহ একটি গাড়িতে কয়েকটি কুকুর পরিবহনের জন্য একটি রুট অপ্টিমাইজ করছেন।

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

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

মা বাবা প্রপার্টি ধরন ভ্যালু পরিস্থিতি
loadDemands লোডের ধরন স্ট্রিং dogUnit শিপমেন্টের জন্য লোডের ধরন নির্ধারণ করে। এই উদাহরণে dogUnit ব্যবহার করা হয়েছে, যেখানে প্রতিটি dogUnit একটি করে কুকুরকে বোঝায়।
loadDemands amount নম্বর ১ম শিপমেন্ট: 1
২য় শিপমেন্ট: 3
নির্ধারিত লোডের ধরনের পরিমাণ নির্দিষ্ট করে। এই উদাহরণে, আপনি দুটি শিপমেন্টকে সংজ্ঞায়িত করছেন, প্রথমটিতে আপনি একটি কুকুরকে পিক-আপ করছেন, দ্বিতীয়টিতে আপনি ৩টি কুকুরকে পিক-আপ করছেন।
loadLimits লোডের ধরন স্ট্রিং dogUnit গাড়ির উপর প্রযোজ্য লোড সীমার ধরন নির্ধারণ করে। সীমা প্রাসঙ্গিক করার জন্য এটি শিপমেন্টের লোডের ধরনের সাথে ম্যাচ করতেই হবে।
loadLimits maxLoad নম্বর 6 গাড়িটি কত সর্বাধিক পরিমাণ লোড বহন করতে পারে তা নির্দিষ্ট করে। এই উদাহরণে, আপনার কাছে শুধুমাত্র একটি গাড়ি আছে যার সর্বাধিক ধারণক্ষমতা ৬ dogUnit, যেখানে প্রতিটি dogUnit একটি কুকুরের ক্রেটকে বোঝায়।

নিচের ডায়াগ্রাম থেকে গাড়ির লোড সীমা, প্রতিটি শিপমেন্টের লোড চাহিদা এবং প্রতিটি শিপমেন্ট কীভাবে গাড়ির লোড সীমা ব্যবহার করে তা দেখানো হয়েছে:

গাড়িটি ৬টি ফাঁকা স্পেস সহ রুট শুরু করে, যা গাড়ির লোড সীমা নির্দেশ করে। প্রথম শিপমেন্টে একটি কুকুরের জন্য জায়গা প্রয়োজন, দ্বিতীয় শিপমেন্টে তিনটি কুকুরের জন্য জায়গা প্রয়োজন। গাড়ির শেষ অবস্থায় ৬টি স্পেসের মধ্যে ৪টি ভর্তি হয়ে গেছে এবং ২টি স্পেস খালি আছে।

এই উদাহরণে, প্রতিটি শিপমেন্টের লোড ডিমান্ড এবং গাড়ির লোড সীমা নিম্নলিখিত প্রভাব ফেলে:

  • কুকুরগুলিকে পরিবহনের জন্য অপ্টিমাইজারকে রুট তৈরি করতে কোনও সমস্যা হবে না, কারণ গাড়িটি ৬টি পর্যন্ত কুকুর বহন করতে পারে এবং আপনি মাত্র ৪টি কুকুর তুলছেন।

  • গাড়িতে ৬ dogUnit লোড সীমা থাকার অর্থ হল আপনি এই নির্দিষ্ট গাড়িতে শুধুমাত্র আরও দুটি কুকুর বহন করতে পারবেন।

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

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

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

নিচের উদাহরণে একটি সাধারণ optimizeTours অনুরোধের গঠন দেখানো হয়েছে, যার মধ্যে উদাহরণস্বরূপ পরিস্থিতির ভ্যালু অন্তর্ভুক্ত করা হয়েছে:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ],
        "label": "One bernese mountain dog",
        "loadDemands": {
          "dogUnit": {
            "amount": "1"
          }
        }
      },
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.7359,
              "longitude": -122.5011
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ],
        "label": "Three chihuahuas",
        "loadDemands": {
          "dogUnit": {
            "amount": "3"
          }
        }
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "loadLimits": {
          "dogUnit": {
            "maxLoad": "6"
          }
        },
        "costPerKilometer": 1.0
      }
    ]
  }
}

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

সফ্ট লোড সীমা

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

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

প্রপার্টি

নিচের সারণীতে লোড ডিমান্ড ও সীমার জন্য সফট কনস্ট্রেন্ট প্রপার্টি বর্ণনা করা হয়েছে।

মা বাবা প্রপার্টির নাম প্রপার্টির ধরন প্রপার্টির বিবরণ
loadLimits softMaxLoad স্ট্রিং (int64 ফর্ম্যাট) গাড়ির জন্য সর্বাধিক লোডের পছন্দসই সীমা। গাড়ির ওজন এই ভ্যালুর থেকে বেশি হলে, খরচ হয়।
loadLimits costPerUnitAboveSoftMax নম্বর softMaxLoad-এর বেশি লোডের ইউনিট পিছু খরচ। softMaxLoad ব্যবহার করার সময় এই ফিল্ডটি পূরণ করতে হবে। খরচ সম্পর্কে আরও জানতে খরচের মডেল সংক্রান্ত মূল ধারণা দেখুন।

কোডের স্যাম্পেল

নিচের উদাহরণে loadLimits-এর সফট কনস্ট্রেন্ট প্রপার্টির স্ট্রাকচার দেখানো হয়েছে:

{
   "loadLimits": {
        "LOAD_TYPE": {
          "softMaxLoad": "LOAD_AMOUNT",
          "costPerUnitAboveSoftMax": COST_PER_UNIT
        }
      }
}