লোড খরচ

Load costs are defined in the `loadLimits` property of a `Vehicle` under `ShipmentModel`.

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

নিম্নলিখিত উদ্দেশ্যগুলো পূরণের জন্য লোড খরচ কনফিগার করুন:

  • কার্গোর ওজন বাড়ার সাথে সাথে জ্বালানি খরচও বিবেচনায় রাখুন।
  • ভারী মালবাহী যানবাহন দীর্ঘ দূরত্বে চালনা করা পরিহার করুন।
  • ভারী মালপত্রের কারণে গাড়ির ক্ষয়ক্ষতি বিবেচনায় রাখুন।

বৈশিষ্ট্য

একটি Vehicle এর loadLimits প্রপার্টির মধ্যে লোড খরচ নির্দিষ্ট করুন। অন্যান্য সমস্ত খরচ প্যারামিটারের মতো, লোড খরচও মাত্রাহীন, আপেক্ষিক খরচের একক ব্যবহার করে।

আপনি নিম্নলিখিত বৈশিষ্ট্যগুলি ব্যবহার করে লোড খরচ নির্ধারণ করতে পারেন:

সম্পত্তি প্রকার বর্ণনা
costPerKilometer বস্তু অতিক্রান্ত কিলোমিটারের উপর ভিত্তি করে ভ্রমণ খরচ গণনা করার জন্য এতে একটি LoadCost অবজেক্ট টাইপ রয়েছে।
costPerTraveledHour বস্তু এতে একটি LoadCost অবজেক্ট টাইপ রয়েছে যা অপেক্ষা, পরিদর্শন এবং বিরতির সময় বাদ দিয়ে ভ্রমণ করা ঘণ্টার উপর ভিত্তি করে ভ্রমণ খরচ গণনা করে।

লোডকস্ট

LoadCost মেসেজ টাইপ একটি নির্দিষ্ট লোড বহনের ভ্রমণ খরচ নির্ধারণ করে। এটি আপনাকে একটি লোড থ্রেশহোল্ড সেট করতে এবং তারপর সেই থ্রেশহোল্ডের নিচে ও উপরে প্রতি ইউনিট লোডের জন্য ভিন্ন ভিন্ন খরচের হার নির্দিষ্ট করতে দেয়।

LoadCost অবজেক্টটিতে নিম্নলিখিত কনফিগারেশন প্যারামিটারগুলো রয়েছে:

প্যারামিটার প্রকার বর্ণনা
loadThreshold স্ট্রিং (int64 ফরম্যাট) যে লোড লেভেলে খরচ গণনার হার পরিবর্তিত হয়। ডিফল্ট মান হলো 0 ।
costPerUnitAboveThreshold সংখ্যা loadThreshold উপরে প্রতি ইউনিট লোডের জন্য এই খরচ প্রযোজ্য। ডিফল্ট মান হলো 0 ।
costPerUnitBelowThreshold সংখ্যা লোড loadThreshold সমান বা তার কম প্রতিটি লোড ইউনিটের জন্য এই খরচ প্রযোজ্য। ডিফল্ট মান হলো 0 ।

চালানের সাথে লোড খরচের সামঞ্জস্য বিধান

যখন কোনো যানবাহনের বহন করা লোড তার রুটের চালানগুলোর loadDemands টাইপের সাথে মিলে যায়, তখন লোড খরচ প্রযোজ্য হয়। লোড টাইপগুলো হলো যেকোনো স্ট্রিং, যেমন ওজন বা আয়তন। লোড টাইপ কনফিগার করার বিষয়ে আরও বিস্তারিত জানতে, লোড টাইপস দেখুন।

উদাহরণ

এই অংশে তিন ধরনের উদাহরণ আলোচনা করা হয়েছে:

কোডের নমুনা

নিম্নলিখিত উদাহরণটি সমস্ত উপলব্ধ কনফিগারেশন প্যারামিটার ব্যবহার করে কীভাবে একটি লোড খরচের কাঠামো তৈরি করতে হয় তা দেখায়। এই নমুনাটিতে costPerKilometer ব্যবহার করা হয়েছে, কিন্তু দূরত্বের পরিবর্তে ভ্রমণের সময়কালের উপর ভিত্তি করে খরচ গণনা করতে আপনি এটিকে costPerTraveledHour দিয়ে প্রতিস্থাপন করতে পারেন।

{
  "model": {
    "vehicles": [{
      "loadLimits": {
        "LOAD_TYPE": {
          "maxLoad": "MAX_LOAD",
          "costPerKilometer": {
            "loadThreshold": "LOAD_THRESHOLD",
            "costPerUnitAboveThreshold": COST_ABOVE,
            "costPerUnitBelowThreshold": COST_BELOW
          }
        }
      }
    }]
  }
}

উদাহরণ দৃশ্যকল্প

এই অংশে এমন একটি পরিস্থিতি বর্ণনা করা হয়েছে যেখানে আপনি জ্বালানি খরচ অপ্টিমাইজ করতে চান এবং ব্যবহৃত জ্বালানির পরিমাণ দূরত্ব ও মালামালের ওজনের সমানুপাতিক। যেহেতু ভারী মালামাল বহন করার সময় যানবাহন বেশি জ্বালানি খরচ করে, তাই আপনি এমনভাবে রুট পরিকল্পনা করতে চাইবেন যাতে প্রথমে ভারী প্যাকেজগুলো পৌঁছে দেওয়া যায়।

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

অভিভাবক সম্পত্তি প্রকার মূল্য দৃশ্যকল্প
loadLimits লোড টাইপ স্ট্রিং weightKg ট্র্যাক করার জন্য ধারণক্ষমতার ধরন নির্ধারণ করে। এই উদাহরণে, কার্গোর ওজন কিলোগ্রামে বোঝাতে weightKg ব্যবহার করা হয়েছে।
loadLimits maxLoad স্ট্রিং 100 যানবাহনটির সর্বোচ্চ বহনক্ষমতা।
costPerKilometer loadThreshold স্ট্রিং 15 ন্যূনতম ভারসীমা নির্ধারণ করে। ১৫ কেজির বেশি যেকোনো কার্গো ওজনের জন্য ভার-ভিত্তিক জ্বালানি খরচের জরিমানা প্রযোজ্য হবে।
costPerKilometer costPerUnitAboveThreshold সংখ্যা 1 এটি আপনার জ্বালানি খরচ সহগ হিসেবে কাজ করে। প্রতি কিলোমিটার ভ্রমণের জন্য, ১৫ কেজি সীমার অতিরিক্ত প্রতি কেজি মালামালের জন্য ১ ইউনিট খরচ হয়।
loadDemands amount স্ট্রিং চালান ১: 50
চালান ২: 10
চালান ৩: 80
আপনার তিনটি চালানের প্রতিটির জন্য পণ্যের ওজন নির্দিষ্ট করে।

এই পরিস্থিতিতে, আপনার কনফিগার করা মানগুলির নিম্নলিখিত প্রভাব রয়েছে:

  • অপ্টিমাইজার আপনার রুটগুলো এমনভাবে সাজায় যাতে সবচেয়ে ভারী প্যাকেজগুলো প্রথমে ডেলিভারি করা হয়। সলভারটি ভারী বোঝাই থাকা অবস্থায় ভ্রমণ করা দূরত্ব কমানোর জন্য রুটের শুরুতে ৮০ কেজি এবং ৫০ কেজির ডেলিভারিগুলোর সময়সূচী নির্ধারণ করে।
  • অপ্টিমাইজার ভারী কার্গো নিয়ে ভ্রমণ করা দূরত্ব কমানোর জন্য আপনার রুটগুলো সাজিয়ে দেয়। এই সেটিংসগুলো আপনার রুটকে কীভাবে প্রভাবিত করে তা দেখতে, আপনি costPerUnitAboveThreshold 1 থেকে 5 পর্যন্ত বাড়াতে পারেন। ওজনের জরিমানা বাড়ানোর মাধ্যমে, আপনি অপ্টিমাইজারকে আরও ভারী কার্গো নিয়ে ভ্রমণ করা দূরত্ব কমানোর জন্য আরও কঠোরভাবে কাজ করতে উৎসাহিত করেন, যা পণ্য নামানোর ক্রমকে পুনর্বিন্যাস করতে পারে অথবা একাধিক যানবাহনে চালানগুলো ভাগ করে দিতে পারে।

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

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

{
  "model": {
    "shipments": [
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789456,
              "longitude": -122.390192
            },
            "duration": "250s"
          }
        ],
        "penaltyCost": 100.0,
        "loadDemands": {
          "weightKg": {
            "amount": "50"
          }
        }
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789116,
              "longitude": -122.395080
            },
            "duration": "250s"
          }
        ],
        "penaltyCost": 30.0,
        "loadDemands": {
          "weightKg": {
            "amount": "10"
          }
        }
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.795242,
              "longitude": -122.399347
            },
            "duration": "250s"
          }
        ],
        "penaltyCost": 50.0,
        "loadDemands": {
          "weightKg": {
            "amount": "80"
          }
        }
      }
    ],
    "vehicles": [
      {
        "endLocation": {
          "latitude": 37.794465,
          "longitude": -122.394839
        },
        "startLocation": {
          "latitude": 37.794465,
          "longitude": -122.394839
        },
        "costPerHour": 40.0,
        "costPerKilometer": 10.0,
        "loadLimits": {
          "weightKg": {
            "maxLoad": "100",
            "costPerKilometer": {
              "loadThreshold": "15",
              "costPerUnitAboveThreshold": 1
            }
          }
        }
      }
    ]
  }
}

গণনার সূত্র

অপ্টিমাইজারটি নিম্নলিখিত সূত্রগুলো ব্যবহার করে লোড খরচ গণনা করে।

সম্পূর্ণ থ্রেশহোল্ড গণনা

যখন আপনি costPerUnitAboveThreshold এবং costPerUnitBelowThreshold উভয়ই নির্দিষ্ট করেন, তখন loadThreshold উপরে এবং নীচে উভয় লোডের পরিমাণের জন্য আপনার আলাদা ভ্রমণ খরচ হয়। সূত্রটি হলো:

cost = max(carried_load - load_threshold, 0) * distance_or_time * cost_per_unit_above_threshold
       + min(carried_load, load_threshold) * distance_or_time * cost_per_unit_below_threshold

উদাহরণস্বরূপ, Request উদাহরণের মানগুলি ব্যবহার করে, যেখানে costPerUnitBelowThreshold এর মান 2 , যদি যানবাহনটি 50 লোড বহন করে 10 কিলোমিটার ভ্রমণ করে, তাহলে গণনাটি হবে:

max(50 - 15, 0) * 10 * 1 + min(50, 15) * 10 * 2 = 650 cost units

থ্রেশহোল্ডের উপরের গণনা

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

cost = max(carried_load - load_threshold, 0) * distance_or_time * cost_per_unit_above_threshold

উদাহরণস্বরূপ, রিকোয়েস্ট উদাহরণের মানগুলো ব্যবহার করে, যেখানে loadThreshold হলো 15 এবং costPerUnitAboveThreshold হলো 1 , যদি যানবাহনটি 50 লোড বহন করে 10 কিলোমিটার ভ্রমণ করে, তাহলে গণনাটি হবে:

max(50 - 15, 0) * 10 * 1 = 350 cost units

থ্রেশহোল্ডের নীচের গণনা

একইভাবে, যদি আপনি শুধুমাত্র costPerUnitBelowThreshold উল্লেখ করেন, তাহলে গণনাটি সম্পূর্ণ থ্রেশহোল্ড সূত্রের আরেকটি বিশেষ ক্ষেত্র হবে, যেখানে থ্রেশহোল্ডের উপরের খরচ শূন্য। সূত্রটি হলো:

cost = min(carried_load, load_threshold) * distance_or_time * cost_per_unit_below_threshold