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

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 ফর্ম্যাট) নির্দিষ্ট করা ধরনে গাড়ির সর্বাধিক লোড ক্যাপাসিটি নির্ধারণ করে।

উদাহরণ

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

কোডের নমুনা

নিচে দেওয়া উদাহরণে লোড ডিমান্ডের স্ট্রাকচার দেখানো হয়েছে যেখানে আপনি 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
        }
      }
}