খরচ মডেল পরামিতি

OptimizeToursRequest মেসেজ ( REST , gRPC ) এ খরচ সম্পর্কিত বেশ কিছু বৈশিষ্ট্য রয়েছে। একসাথে, এই খরচ পরামিতি অনুরোধের খরচ মডেল প্রতিনিধিত্ব করে। খরচের মডেলটি অনুরোধের উচ্চ-স্তরের অপ্টিমাইজেশন উদ্দেশ্যগুলির অনেকগুলি ক্যাপচার করে, যেমন:

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

খরচ সহ একটি উদাহরণ অনুরোধ দেখুন

{
  "model": {
    "globalStartTime": "2023-01-13T16:00:00-08:00",
    "globalEndTime": "2023-01-14T16:00:00-08:00",
    "shipments": [
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789456,
              "longitude": -122.390192
            },
            "duration": "250s"
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 100.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789116,
              "longitude": -122.395080
            },
            "duration": "250s"
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 5.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.795242,
              "longitude": -122.399347
            },
            "duration": "250s"
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 50.0
      }
    ],
    "vehicles": [
      {
        "endLocation": {
          "latitude": 37.794465,
          "longitude": -122.394839
        },
        "startLocation": {
          "latitude": 37.794465,
          "longitude": -122.394839
        },
        "costPerHour": 40.0,
        "costPerKilometer": 10.0
      }
    ]
  }
}
    

Vehicle খরচ বৈশিষ্ট্য

Vehicle বার্তা ( REST , gRPC ) এর বেশ কিছু মূল্য বৈশিষ্ট্য রয়েছে:

  • Vehicle.cost_per_hour : ট্রানজিট, অপেক্ষা, পরিদর্শন এবং বিরতির সময় সহ প্রতি ঘন্টায় একটি যানবাহন পরিচালনার খরচ উপস্থাপন করে।
  • Vehicle.cost_per_kilometer : যানবাহন দ্বারা ভ্রমণ করা প্রতি কিলোমিটার খরচের প্রতিনিধিত্ব করে।
  • Vehicle.cost_per_traveled_hour : অপেক্ষা, পরিদর্শন এবং বিরতির সময় বাদ দিয়ে শুধুমাত্র ট্রানজিটে থাকাকালীন একটি যানবাহন পরিচালনার খরচ উপস্থাপন করে।

এই খরচ পরামিতিগুলি অপ্টিমাইজারকে সময়-বনাম-ভ্রমণ-দূরত্ব ট্রেডঅফ করতে দেয়। অপ্টিমাইজ করা রুটের খরচ metrics.costs হিসাবে প্রতিক্রিয়া বার্তায় প্রদর্শিত হয়:

costPerHour বাড়ার সাথে সাথে, অপ্টিমাইজার দ্রুততম রুটগুলি খুঁজে বের করার চেষ্টা করে যা ছোটতম রুট নাও হতে পারে৷ এই উদাহরণে দ্রুততম রুটটি সবচেয়ে সংক্ষিপ্ত হতে পারে, তাই খরচের পরামিতিগুলির পরিবর্তনগুলি সামান্য প্রভাব ফেলে৷

Shipment খরচ বৈশিষ্ট্য

Shipment বার্তা ( REST , gRPC ) এরও বেশ কিছু খরচ পরামিতি রয়েছে:

  • Shipment.penalty_cost শিপমেন্ট এড়িয়ে যাওয়ার খরচের প্রতিনিধিত্ব করে।
  • Shipment.VisitRequest.cost একটি নির্দিষ্ট পিকআপ বা ডেলিভারির খরচ প্রতিনিধিত্ব করে, প্রাথমিকভাবে একটি একক চালানের জন্য একাধিক পিকআপ বা ডেলিভারি বিকল্পগুলির মধ্যে খরচ ট্রেডঅফ সক্ষম করতে ব্যবহৃত হয়।

Shipment খরচ পরামিতি Vehicle খরচ পরামিতি হিসাবে একই মাত্রাবিহীন ইউনিট ব্যবহার করে। খরচ সম্পূর্ণ একটি Shipment তার জরিমানা খরচ অতিক্রম করে, Shipment কোনো Vehicle রুটে অন্তর্ভুক্ত করা হয় না এবং পরিবর্তে প্রতিক্রিয়া বার্তায় skipped_shipments তালিকায় প্রদর্শিত হয়.

ShipmentModel খরচ বৈশিষ্ট্য

ShipmentModel মেসেজ ( REST , gRPC ) একটি একক খরচের সম্পত্তি, globalDurationCostPerHour অন্তর্ভুক্ত করে। সমস্ত যানবাহনের জন্য তাদের ShipmentRoute সম্পূর্ণ করার জন্য প্রয়োজনীয় মোট সময়ের উপর ভিত্তি করে এই খরচ করা হয়৷ globalDurationCostPerHour ক্রমবর্ধমান সময়ের মূল্য প্রতিঘণ্টা সব শিপমেন্টের আগে শেষ হওয়াকে অগ্রাধিকার দেয়।

রুট অপ্টিমাইজেশান প্রতিক্রিয়া খরচ বৈশিষ্ট্য

OptimizeToursResponse মেসেজ ( REST , gRPC ) এর মূল্য বৈশিষ্ট্য রয়েছে যা ShipmentRoute s সম্পূর্ণ করার প্রক্রিয়ায় যে খরচ হয়েছে তার প্রতিনিধিত্ব করে। metrics.costs এবং metrics.totalCost বৈশিষ্ট্যগুলি প্রতিক্রিয়ায় সমস্ত রুট জুড়ে খরচ ইউনিটের সংখ্যা উপস্থাপন করে। প্রতিটি routes এন্ট্রিতে routeCosts এবং routeTotalCosts বৈশিষ্ট্য রয়েছে যা সেই নির্দিষ্ট রুটের জন্য খরচ উপস্থাপন করে।

খরচ সহ উদাহরণ অনুরোধের একটি প্রতিক্রিয়া দেখুন

{
  "routes": [
    {
      "vehicleStartTime": "2023-01-14T00:00:00Z",
      "vehicleEndTime": "2023-01-14T00:28:22Z",
      "visits": [
        {
          "isPickup": true,
          "startTime": "2023-01-14T00:00:00Z",
          "detour": "0s"
        },
        {
          "shipmentIndex": 2,
          "isPickup": true,
          "startTime": "2023-01-14T00:02:30Z",
          "detour": "150s"
        },
        {
          "startTime": "2023-01-14T00:08:55Z",
          "detour": "150s"
        },
        {
          "shipmentIndex": 2,
          "startTime": "2023-01-14T00:21:21Z",
          "detour": "572s"
        }
      ],
      "transitions": [
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-14T00:00:00Z"
        },
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-14T00:02:30Z"
        },
        {
          "travelDuration": "235s",
          "travelDistanceMeters": 795,
          "waitDuration": "0s",
          "totalDuration": "235s",
          "startTime": "2023-01-14T00:05:00Z"
        },
        {
          "travelDuration": "496s",
          "travelDistanceMeters": 1893,
          "waitDuration": "0s",
          "totalDuration": "496s",
          "startTime": "2023-01-14T00:13:05Z"
        },
        {
          "travelDuration": "171s",
          "travelDistanceMeters": 665,
          "waitDuration": "0s",
          "totalDuration": "171s",
          "startTime": "2023-01-14T00:25:31Z"
        }
      ],
      "metrics": {
        "performedShipmentCount": 2,
        "travelDuration": "902s",
        "waitDuration": "0s",
        "delayDuration": "0s",
        "breakDuration": "0s",
        "visitDuration": "800s",
        "totalDuration": "1702s",
        "travelDistanceMeters": 3353
      },
      "routeCosts": {
        "model.vehicles.cost_per_kilometer": 33.53,
        "model.vehicles.cost_per_hour": 18.911111111111111
      },
      "routeTotalCost": 52.441111111111113
    }
  ],
  "skippedShipments": [
    {
      "index": 1
    }
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 2,
      "travelDuration": "902s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "800s",
      "totalDuration": "1702s",
      "travelDistanceMeters": 3353
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2023-01-14T00:00:00Z",
    "latestVehicleEndTime": "2023-01-14T00:28:22Z",
    "totalCost": 57.441111111111113,
    "costs": {
      "model.vehicles.cost_per_kilometer": 33.53,
      "model.vehicles.cost_per_hour": 18.911111111111111,
      "model.shipments.penalty_cost": 5
    }
  }
}
    

উদাহরণের প্রতিক্রিয়ায়, শীর্ষ-স্তরের metrics.costs হল:

{
  "metrics": {
    ...
    "costs": {
      "model.vehicles.cost_per_hour": 18.911111111111111,
      "model.vehicles.cost_per_kilometer": 33.53,
      "model.shipments.penalty_cost": 5
    }
  }
}

model.shipments.penalty_cost মানটি এড়িয়ে যাওয়া শিপমেন্টের কারণে যে খরচ হয়েছে তা উপস্থাপন করে। skippedShipments সম্পত্তি তালিকা করে কোন চালানগুলি এড়িয়ে গেছে।

এই উদাহরণে, উদাহরণের অনুরোধে শুধুমাত্র model.shipments[1] বাদ দেওয়া হয়েছে। model.shipments[1] -এর পেনাল্টি খরচ 5 ইউনিট, যা উদাহরণের প্রতিক্রিয়ায় মোট model.shipments.penalty_cost কী-এর সাথে মেলে। Vehicle 40.0 costPerHour এবং 10.0 costPerKilometer তুলনায় চালানের কম penaltyCost এটি সম্পূর্ণ করার চেয়ে চালানটি এড়িয়ে যাওয়াকে আরও সাশ্রয়ী করে তোলে৷

উন্নত বিষয়: খরচ এবং নরম সীমাবদ্ধতা

বেশ কিছু OptimizeToursRequest বার্তা ( REST , gRPC ) বৈশিষ্ট্যগুলি নরম সীমাবদ্ধতার প্রতিনিধিত্ব করে, যেগুলি এমন সীমাবদ্ধতা যেগুলি যখন সন্তুষ্ট হতে পারে না তখন একটি খরচ হয়৷

উদাহরণ স্বরূপ, গাড়ির LoadLimit ( REST , gRPC ) সীমাবদ্ধতায় softMaxLoad এবং costPerUnitAboveSoftMax বৈশিষ্ট্য রয়েছে। একত্রে, এগুলি softMaxLoad অতিক্রমকারী লোড ইউনিটগুলির সমানুপাতিক খরচ বহন করে, সীমা অতিক্রম করার অনুমতি দেয় শুধুমাত্র যদি এটি করা খরচের দৃষ্টিকোণ থেকে বোঝা যায়।

একইভাবে, TimeWindow সীমাবদ্ধতা ( REST , gRPC ) এর soft_start_time এবং soft_end_time বৈশিষ্ট্য রয়েছে, সংশ্লিষ্ট cost_per_hour_before_soft_start_time এবং cost_per_hour_after_soft_end_time উপর নির্ভর করে যে সীমাবদ্ধ ঘটনার TimeWindow কত তাড়াতাড়ি বা দেরিতে ঘটে তার উপর ভিত্তি করে।

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

LoadLimit সীমাবদ্ধতাগুলি লোড চাহিদা এবং সীমাগুলিতে বিশদভাবে সম্বোধন করা হয়েছে৷ TimeWindow সীমাবদ্ধতাগুলি পিকআপ এবং ডেলিভারি টাইম উইন্ডো সীমাবদ্ধতায় বিস্তারিতভাবে সম্বোধন করা হয়েছে।

,

OptimizeToursRequest মেসেজ ( REST , gRPC ) এ খরচ সম্পর্কিত বেশ কিছু বৈশিষ্ট্য রয়েছে। একসাথে, এই খরচ পরামিতি অনুরোধের খরচ মডেল প্রতিনিধিত্ব করে। খরচের মডেলটি অনুরোধের উচ্চ-স্তরের অপ্টিমাইজেশন উদ্দেশ্যগুলির অনেকগুলি ক্যাপচার করে, যেমন:

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

খরচ সহ একটি উদাহরণ অনুরোধ দেখুন

{
  "model": {
    "globalStartTime": "2023-01-13T16:00:00-08:00",
    "globalEndTime": "2023-01-14T16:00:00-08:00",
    "shipments": [
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789456,
              "longitude": -122.390192
            },
            "duration": "250s"
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 100.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789116,
              "longitude": -122.395080
            },
            "duration": "250s"
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 5.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.795242,
              "longitude": -122.399347
            },
            "duration": "250s"
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 50.0
      }
    ],
    "vehicles": [
      {
        "endLocation": {
          "latitude": 37.794465,
          "longitude": -122.394839
        },
        "startLocation": {
          "latitude": 37.794465,
          "longitude": -122.394839
        },
        "costPerHour": 40.0,
        "costPerKilometer": 10.0
      }
    ]
  }
}
    

Vehicle খরচ বৈশিষ্ট্য

Vehicle বার্তা ( REST , gRPC ) এর বেশ কিছু মূল্য বৈশিষ্ট্য রয়েছে:

  • Vehicle.cost_per_hour : ট্রানজিট, অপেক্ষা, পরিদর্শন এবং বিরতির সময় সহ প্রতি ঘন্টায় একটি যানবাহন পরিচালনার খরচ উপস্থাপন করে।
  • Vehicle.cost_per_kilometer : যানবাহন দ্বারা ভ্রমণ করা প্রতি কিলোমিটার খরচের প্রতিনিধিত্ব করে।
  • Vehicle.cost_per_traveled_hour : অপেক্ষা, পরিদর্শন এবং বিরতির সময় বাদ দিয়ে শুধুমাত্র ট্রানজিটে থাকাকালীন একটি যানবাহন পরিচালনার খরচ উপস্থাপন করে।

এই খরচ পরামিতিগুলি অপ্টিমাইজারকে সময়-বনাম-ভ্রমণ-দূরত্ব ট্রেডঅফ করতে দেয়। অপ্টিমাইজ করা রুটের খরচ metrics.costs হিসাবে প্রতিক্রিয়া বার্তায় প্রদর্শিত হয়:

costPerHour বাড়ার সাথে সাথে, অপ্টিমাইজার দ্রুততম রুটগুলি খুঁজে বের করার চেষ্টা করে যা ছোটতম রুট নাও হতে পারে৷ এই উদাহরণে দ্রুততম রুটটি সবচেয়ে সংক্ষিপ্ত হতে পারে, তাই খরচের পরামিতিগুলির পরিবর্তনগুলি সামান্য প্রভাব ফেলে৷

Shipment খরচ বৈশিষ্ট্য

Shipment বার্তা ( REST , gRPC ) এরও বেশ কিছু খরচ পরামিতি রয়েছে:

  • Shipment.penalty_cost শিপমেন্ট এড়িয়ে যাওয়ার খরচের প্রতিনিধিত্ব করে।
  • Shipment.VisitRequest.cost একটি নির্দিষ্ট পিকআপ বা ডেলিভারির খরচ প্রতিনিধিত্ব করে, প্রাথমিকভাবে একটি একক চালানের জন্য একাধিক পিকআপ বা ডেলিভারি বিকল্পগুলির মধ্যে খরচ ট্রেডঅফ সক্ষম করতে ব্যবহৃত হয়।

Shipment খরচ পরামিতি Vehicle খরচ পরামিতি হিসাবে একই মাত্রাবিহীন ইউনিট ব্যবহার করে। খরচ সম্পূর্ণ একটি Shipment তার জরিমানা খরচ অতিক্রম করে, Shipment কোনো Vehicle রুটে অন্তর্ভুক্ত করা হয় না এবং পরিবর্তে প্রতিক্রিয়া বার্তায় skipped_shipments তালিকায় প্রদর্শিত হয়.

ShipmentModel খরচ বৈশিষ্ট্য

ShipmentModel মেসেজ ( REST , gRPC ) একটি একক খরচের সম্পত্তি, globalDurationCostPerHour অন্তর্ভুক্ত করে। সমস্ত যানবাহনের জন্য তাদের ShipmentRoute সম্পূর্ণ করার জন্য প্রয়োজনীয় মোট সময়ের উপর ভিত্তি করে এই খরচ করা হয়৷ globalDurationCostPerHour ক্রমবর্ধমান সময়ের মূল্য প্রতিঘণ্টা সব শিপমেন্টের আগে শেষ হওয়াকে অগ্রাধিকার দেয়।

রুট অপ্টিমাইজেশান প্রতিক্রিয়া খরচ বৈশিষ্ট্য

OptimizeToursResponse মেসেজ ( REST , gRPC ) এর মূল্য বৈশিষ্ট্য রয়েছে যা ShipmentRoute s সম্পূর্ণ করার প্রক্রিয়ায় যে খরচ হয়েছে তার প্রতিনিধিত্ব করে। metrics.costs এবং metrics.totalCost বৈশিষ্ট্যগুলি প্রতিক্রিয়ায় সমস্ত রুট জুড়ে খরচ ইউনিটের সংখ্যা উপস্থাপন করে। প্রতিটি routes এন্ট্রিতে routeCosts এবং routeTotalCosts বৈশিষ্ট্য রয়েছে যা সেই নির্দিষ্ট রুটের জন্য খরচ উপস্থাপন করে।

খরচ সহ উদাহরণ অনুরোধের একটি প্রতিক্রিয়া দেখুন

{
  "routes": [
    {
      "vehicleStartTime": "2023-01-14T00:00:00Z",
      "vehicleEndTime": "2023-01-14T00:28:22Z",
      "visits": [
        {
          "isPickup": true,
          "startTime": "2023-01-14T00:00:00Z",
          "detour": "0s"
        },
        {
          "shipmentIndex": 2,
          "isPickup": true,
          "startTime": "2023-01-14T00:02:30Z",
          "detour": "150s"
        },
        {
          "startTime": "2023-01-14T00:08:55Z",
          "detour": "150s"
        },
        {
          "shipmentIndex": 2,
          "startTime": "2023-01-14T00:21:21Z",
          "detour": "572s"
        }
      ],
      "transitions": [
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-14T00:00:00Z"
        },
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-14T00:02:30Z"
        },
        {
          "travelDuration": "235s",
          "travelDistanceMeters": 795,
          "waitDuration": "0s",
          "totalDuration": "235s",
          "startTime": "2023-01-14T00:05:00Z"
        },
        {
          "travelDuration": "496s",
          "travelDistanceMeters": 1893,
          "waitDuration": "0s",
          "totalDuration": "496s",
          "startTime": "2023-01-14T00:13:05Z"
        },
        {
          "travelDuration": "171s",
          "travelDistanceMeters": 665,
          "waitDuration": "0s",
          "totalDuration": "171s",
          "startTime": "2023-01-14T00:25:31Z"
        }
      ],
      "metrics": {
        "performedShipmentCount": 2,
        "travelDuration": "902s",
        "waitDuration": "0s",
        "delayDuration": "0s",
        "breakDuration": "0s",
        "visitDuration": "800s",
        "totalDuration": "1702s",
        "travelDistanceMeters": 3353
      },
      "routeCosts": {
        "model.vehicles.cost_per_kilometer": 33.53,
        "model.vehicles.cost_per_hour": 18.911111111111111
      },
      "routeTotalCost": 52.441111111111113
    }
  ],
  "skippedShipments": [
    {
      "index": 1
    }
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 2,
      "travelDuration": "902s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "800s",
      "totalDuration": "1702s",
      "travelDistanceMeters": 3353
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2023-01-14T00:00:00Z",
    "latestVehicleEndTime": "2023-01-14T00:28:22Z",
    "totalCost": 57.441111111111113,
    "costs": {
      "model.vehicles.cost_per_kilometer": 33.53,
      "model.vehicles.cost_per_hour": 18.911111111111111,
      "model.shipments.penalty_cost": 5
    }
  }
}
    

উদাহরণের প্রতিক্রিয়ায়, শীর্ষ-স্তরের metrics.costs হল:

{
  "metrics": {
    ...
    "costs": {
      "model.vehicles.cost_per_hour": 18.911111111111111,
      "model.vehicles.cost_per_kilometer": 33.53,
      "model.shipments.penalty_cost": 5
    }
  }
}

model.shipments.penalty_cost মানটি এড়িয়ে যাওয়া শিপমেন্টের কারণে যে খরচ হয়েছে তা উপস্থাপন করে। skippedShipments সম্পত্তি তালিকা করে কোন চালানগুলি এড়িয়ে গেছে।

এই উদাহরণে, উদাহরণের অনুরোধে শুধুমাত্র model.shipments[1] বাদ দেওয়া হয়েছে। model.shipments[1] -এর পেনাল্টি খরচ 5 ইউনিট, যা উদাহরণের প্রতিক্রিয়ায় মোট model.shipments.penalty_cost কী-এর সাথে মেলে। Vehicle 40.0 costPerHour এবং 10.0 costPerKilometer তুলনায় চালানের কম penaltyCost এটি সম্পূর্ণ করার চেয়ে চালানটি এড়িয়ে যাওয়াকে আরও সাশ্রয়ী করে তোলে৷

উন্নত বিষয়: খরচ এবং নরম সীমাবদ্ধতা

বেশ কিছু OptimizeToursRequest বার্তা ( REST , gRPC ) বৈশিষ্ট্যগুলি নরম সীমাবদ্ধতার প্রতিনিধিত্ব করে, যেগুলি এমন সীমাবদ্ধতা যেগুলি যখন সন্তুষ্ট হতে পারে না তখন একটি খরচ হয়৷

উদাহরণ স্বরূপ, গাড়ির LoadLimit ( REST , gRPC ) সীমাবদ্ধতায় softMaxLoad এবং costPerUnitAboveSoftMax বৈশিষ্ট্য রয়েছে। একত্রে, এগুলি softMaxLoad অতিক্রমকারী লোড ইউনিটগুলির সমানুপাতিক খরচ বহন করে, সীমা অতিক্রম করার অনুমতি দেয় শুধুমাত্র যদি এটি করা খরচের দৃষ্টিকোণ থেকে বোঝা যায়।

একইভাবে, TimeWindow সীমাবদ্ধতা ( REST , gRPC ) এর soft_start_time এবং soft_end_time বৈশিষ্ট্য রয়েছে, সংশ্লিষ্ট cost_per_hour_before_soft_start_time এবং cost_per_hour_after_soft_end_time উপর নির্ভর করে যে সীমাবদ্ধ ঘটনার TimeWindow কত তাড়াতাড়ি বা দেরিতে ঘটে তার উপর ভিত্তি করে।

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

LoadLimit সীমাবদ্ধতাগুলি লোড চাহিদা এবং সীমাগুলিতে বিশদভাবে সম্বোধন করা হয়েছে৷ TimeWindow সীমাবদ্ধতাগুলি পিকআপ এবং ডেলিভারি টাইম উইন্ডো সীমাবদ্ধতায় বিস্তারিতভাবে সম্বোধন করা হয়েছে।

,

OptimizeToursRequest মেসেজ ( REST , gRPC ) এ খরচ সম্পর্কিত বেশ কিছু বৈশিষ্ট্য রয়েছে। একসাথে, এই খরচ পরামিতি অনুরোধের খরচ মডেল প্রতিনিধিত্ব করে। খরচের মডেলটি অনুরোধের উচ্চ-স্তরের অপ্টিমাইজেশন উদ্দেশ্যগুলির অনেকগুলি ক্যাপচার করে, যেমন:

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

খরচ সহ একটি উদাহরণ অনুরোধ দেখুন

{
  "model": {
    "globalStartTime": "2023-01-13T16:00:00-08:00",
    "globalEndTime": "2023-01-14T16:00:00-08:00",
    "shipments": [
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789456,
              "longitude": -122.390192
            },
            "duration": "250s"
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 100.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789116,
              "longitude": -122.395080
            },
            "duration": "250s"
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 5.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.795242,
              "longitude": -122.399347
            },
            "duration": "250s"
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 50.0
      }
    ],
    "vehicles": [
      {
        "endLocation": {
          "latitude": 37.794465,
          "longitude": -122.394839
        },
        "startLocation": {
          "latitude": 37.794465,
          "longitude": -122.394839
        },
        "costPerHour": 40.0,
        "costPerKilometer": 10.0
      }
    ]
  }
}
    

Vehicle খরচ বৈশিষ্ট্য

Vehicle বার্তা ( REST , gRPC ) এর বেশ কিছু মূল্য বৈশিষ্ট্য রয়েছে:

  • Vehicle.cost_per_hour : ট্রানজিট, অপেক্ষা, পরিদর্শন এবং বিরতির সময় সহ প্রতি ঘন্টায় একটি যানবাহন পরিচালনার খরচ উপস্থাপন করে।
  • Vehicle.cost_per_kilometer : যানবাহন দ্বারা ভ্রমণ করা প্রতি কিলোমিটার খরচের প্রতিনিধিত্ব করে।
  • Vehicle.cost_per_traveled_hour : অপেক্ষা, পরিদর্শন এবং বিরতির সময় বাদ দিয়ে শুধুমাত্র ট্রানজিটে থাকাকালীন একটি যানবাহন পরিচালনার খরচ উপস্থাপন করে।

এই খরচ পরামিতিগুলি অপ্টিমাইজারকে সময়-বনাম-ভ্রমণ-দূরত্ব ট্রেডঅফ করতে দেয়। অপ্টিমাইজ করা রুটের খরচ metrics.costs হিসাবে প্রতিক্রিয়া বার্তায় প্রদর্শিত হয়:

costPerHour বাড়ার সাথে সাথে, অপ্টিমাইজার দ্রুততম রুটগুলি খুঁজে বের করার চেষ্টা করে যা ছোটতম রুট নাও হতে পারে৷ এই উদাহরণে দ্রুততম রুটটি সবচেয়ে সংক্ষিপ্ত হতে পারে, তাই খরচের পরামিতিগুলির পরিবর্তনগুলি সামান্য প্রভাব ফেলে৷

Shipment খরচ বৈশিষ্ট্য

Shipment বার্তা ( REST , gRPC ) এরও বেশ কিছু খরচ পরামিতি রয়েছে:

  • Shipment.penalty_cost শিপমেন্ট এড়িয়ে যাওয়ার খরচের প্রতিনিধিত্ব করে।
  • Shipment.VisitRequest.cost একটি নির্দিষ্ট পিকআপ বা ডেলিভারির খরচ প্রতিনিধিত্ব করে, প্রাথমিকভাবে একটি একক চালানের জন্য একাধিক পিকআপ বা ডেলিভারি বিকল্পগুলির মধ্যে খরচ ট্রেডঅফ সক্ষম করতে ব্যবহৃত হয়।

Shipment খরচ পরামিতি Vehicle খরচ পরামিতি হিসাবে একই মাত্রাবিহীন ইউনিট ব্যবহার করে। খরচ সম্পূর্ণ একটি Shipment তার জরিমানা খরচ অতিক্রম করে, Shipment কোনো Vehicle রুটে অন্তর্ভুক্ত করা হয় না এবং পরিবর্তে প্রতিক্রিয়া বার্তায় skipped_shipments তালিকায় প্রদর্শিত হয়.

ShipmentModel খরচ বৈশিষ্ট্য

ShipmentModel মেসেজ ( REST , gRPC ) একটি একক খরচের সম্পত্তি, globalDurationCostPerHour অন্তর্ভুক্ত করে। সমস্ত যানবাহনের জন্য তাদের ShipmentRoute সম্পূর্ণ করার জন্য প্রয়োজনীয় মোট সময়ের উপর ভিত্তি করে এই খরচ করা হয়৷ globalDurationCostPerHour ক্রমবর্ধমান সময়ের মূল্য প্রতিঘণ্টা সব শিপমেন্টের আগে শেষ হওয়াকে অগ্রাধিকার দেয়।

রুট অপ্টিমাইজেশান প্রতিক্রিয়া খরচ বৈশিষ্ট্য

OptimizeToursResponse মেসেজ ( REST , gRPC ) এর মূল্য বৈশিষ্ট্য রয়েছে যা ShipmentRoute s সম্পূর্ণ করার প্রক্রিয়ায় যে খরচ হয়েছে তার প্রতিনিধিত্ব করে। metrics.costs এবং metrics.totalCost বৈশিষ্ট্যগুলি প্রতিক্রিয়ায় সমস্ত রুট জুড়ে খরচ ইউনিটের সংখ্যা উপস্থাপন করে। প্রতিটি routes এন্ট্রিতে routeCosts এবং routeTotalCosts বৈশিষ্ট্য রয়েছে যা সেই নির্দিষ্ট রুটের জন্য খরচ উপস্থাপন করে।

খরচ সহ উদাহরণ অনুরোধের একটি প্রতিক্রিয়া দেখুন

{
  "routes": [
    {
      "vehicleStartTime": "2023-01-14T00:00:00Z",
      "vehicleEndTime": "2023-01-14T00:28:22Z",
      "visits": [
        {
          "isPickup": true,
          "startTime": "2023-01-14T00:00:00Z",
          "detour": "0s"
        },
        {
          "shipmentIndex": 2,
          "isPickup": true,
          "startTime": "2023-01-14T00:02:30Z",
          "detour": "150s"
        },
        {
          "startTime": "2023-01-14T00:08:55Z",
          "detour": "150s"
        },
        {
          "shipmentIndex": 2,
          "startTime": "2023-01-14T00:21:21Z",
          "detour": "572s"
        }
      ],
      "transitions": [
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-14T00:00:00Z"
        },
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-14T00:02:30Z"
        },
        {
          "travelDuration": "235s",
          "travelDistanceMeters": 795,
          "waitDuration": "0s",
          "totalDuration": "235s",
          "startTime": "2023-01-14T00:05:00Z"
        },
        {
          "travelDuration": "496s",
          "travelDistanceMeters": 1893,
          "waitDuration": "0s",
          "totalDuration": "496s",
          "startTime": "2023-01-14T00:13:05Z"
        },
        {
          "travelDuration": "171s",
          "travelDistanceMeters": 665,
          "waitDuration": "0s",
          "totalDuration": "171s",
          "startTime": "2023-01-14T00:25:31Z"
        }
      ],
      "metrics": {
        "performedShipmentCount": 2,
        "travelDuration": "902s",
        "waitDuration": "0s",
        "delayDuration": "0s",
        "breakDuration": "0s",
        "visitDuration": "800s",
        "totalDuration": "1702s",
        "travelDistanceMeters": 3353
      },
      "routeCosts": {
        "model.vehicles.cost_per_kilometer": 33.53,
        "model.vehicles.cost_per_hour": 18.911111111111111
      },
      "routeTotalCost": 52.441111111111113
    }
  ],
  "skippedShipments": [
    {
      "index": 1
    }
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 2,
      "travelDuration": "902s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "800s",
      "totalDuration": "1702s",
      "travelDistanceMeters": 3353
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2023-01-14T00:00:00Z",
    "latestVehicleEndTime": "2023-01-14T00:28:22Z",
    "totalCost": 57.441111111111113,
    "costs": {
      "model.vehicles.cost_per_kilometer": 33.53,
      "model.vehicles.cost_per_hour": 18.911111111111111,
      "model.shipments.penalty_cost": 5
    }
  }
}
    

উদাহরণের প্রতিক্রিয়ায়, শীর্ষ-স্তরের metrics.costs হল:

{
  "metrics": {
    ...
    "costs": {
      "model.vehicles.cost_per_hour": 18.911111111111111,
      "model.vehicles.cost_per_kilometer": 33.53,
      "model.shipments.penalty_cost": 5
    }
  }
}

model.shipments.penalty_cost মানটি এড়িয়ে যাওয়া শিপমেন্টের কারণে যে খরচ হয়েছে তা উপস্থাপন করে। skippedShipments সম্পত্তি তালিকা করে কোন চালানগুলি এড়িয়ে গেছে।

এই উদাহরণে, উদাহরণের অনুরোধে শুধুমাত্র model.shipments[1] বাদ দেওয়া হয়েছে। model.shipments[1] -এর পেনাল্টি খরচ 5 ইউনিট, যা উদাহরণের প্রতিক্রিয়ায় মোট model.shipments.penalty_cost কী-এর সাথে মেলে। Vehicle 40.0 costPerHour এবং 10.0 costPerKilometer তুলনায় চালানের কম penaltyCost এটি সম্পূর্ণ করার চেয়ে চালানটি এড়িয়ে যাওয়াকে আরও সাশ্রয়ী করে তোলে৷

উন্নত বিষয়: খরচ এবং নরম সীমাবদ্ধতা

বেশ কিছু OptimizeToursRequest বার্তা ( REST , gRPC ) বৈশিষ্ট্যগুলি নরম সীমাবদ্ধতার প্রতিনিধিত্ব করে, যেগুলি এমন সীমাবদ্ধতা যেগুলি যখন সন্তুষ্ট হতে পারে না তখন একটি খরচ হয়৷

উদাহরণ স্বরূপ, গাড়ির LoadLimit ( REST , gRPC ) সীমাবদ্ধতায় softMaxLoad এবং costPerUnitAboveSoftMax বৈশিষ্ট্য রয়েছে। একত্রে, এগুলি softMaxLoad অতিক্রমকারী লোড ইউনিটগুলির সমানুপাতিক খরচ বহন করে, সীমা অতিক্রম করার অনুমতি দেয় শুধুমাত্র যদি এটি করা খরচের দৃষ্টিকোণ থেকে বোঝা যায়।

একইভাবে, TimeWindow সীমাবদ্ধতা ( REST , gRPC ) এর soft_start_time এবং soft_end_time বৈশিষ্ট্য রয়েছে, সংশ্লিষ্ট cost_per_hour_before_soft_start_time এবং cost_per_hour_after_soft_end_time উপর নির্ভর করে যে সীমাবদ্ধ ঘটনার TimeWindow কত তাড়াতাড়ি বা দেরিতে ঘটে তার উপর ভিত্তি করে।

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

LoadLimit সীমাবদ্ধতাগুলি লোড চাহিদা এবং সীমাগুলিতে বিশদভাবে সম্বোধন করা হয়েছে৷ TimeWindow সীমাবদ্ধতাগুলি পিকআপ এবং ডেলিভারি টাইম উইন্ডো সীমাবদ্ধতায় বিস্তারিতভাবে সম্বোধন করা হয়েছে।