লোড চাহিদা এবং সীমা

The loadDemands property is defined under ShipmentModel.shipments.Shipment and the loadLimits property under 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 একটি কুকুরের খাঁচাকে বোঝায়।

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

The vehicle begins the route with 6 empty spaces representing the load limits of the vehicle. The first shipment demands space for one dog, the second shipment demands space for three dogs. The end state of the vehicle is having 4 of the 6 spaces now occupied, with two empty spaces remaining.

এই উদাহরণে, প্রতিটি চালানের ভারের চাহিদা এবং যানবাহনের ভারবহন ক্ষমতার নিম্নলিখিত প্রভাব রয়েছে:

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

  • গাড়িতে প্রতি ইউনিটে ৬টি 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
      }
    ]
  }
}

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

সফট লোড সীমা

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

আপনি হার্ড এবং সফট উভয় লোড লিমিট নির্ধারণ করতে maxLoad এবং softMaxLoad একসাথে ব্যবহার করতে পারেন। এক্ষেত্রে, softMaxLoad সেই লোড নির্ধারণ করে যা অতিক্রম করা যেতে পারে, এবং maxLoad একটি হার্ড লিমিট নির্ধারণ করে যা অতিক্রম করা যায় না। যখন উভয়ই ব্যবহৃত হয়, তখন maxLoad অবশ্যই softMaxLoad চেয়ে বড় হতে হবে।

বৈশিষ্ট্য

নিম্নলিখিত সারণিতে লোড চাহিদা এবং সীমার জন্য সফট কনস্ট্রেইন্ট বৈশিষ্ট্যগুলো বর্ণনা করা হয়েছে।

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

কোডের নমুনা

নিম্নলিখিত উদাহরণটি loadLimits এর সফট কনস্ট্রেইন্ট প্রোপার্টিগুলোর গঠন দেখায়:

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