রুট অপ্টিমাইজেশান API সংশ্লিষ্ট অনুরোধে যানবাহনের জন্য রুট ফেরত দেয়। শিপমেন্টগুলি যানবাহনের জন্য বরাদ্দ করা হয়, বা অনুরোধের বৈশিষ্ট্যের উপর নির্ভর করে এড়িয়ে যেতে পারে।
 একটি OptimizeToursResponse মেসেজ ( REST , gRPC ) এর দুটি প্রধান শীর্ষ-স্তরের বৈশিষ্ট্য রয়েছে:
-  routes[]হল প্রতিটি গাড়ির জন্য নির্ধারিত শিপমেন্টের রুট। প্রতিটিRouteসেই স্বতন্ত্র রুটের বৈশিষ্ট্যগুলি প্রতিফলিত করে এমন মেট্রিক রয়েছে৷
-  metricsহল সমস্ত যানবাহন এবং রুট প্ল্যান জুড়ে সমগ্র প্রতিক্রিয়ার জন্য একত্রিত মেট্রিক। শীর্ষ-স্তরের মেট্রিক্সে সমস্ত রুট জুড়ে একত্রিত মান সহ, প্রতি-রুট মেট্রিক্সের মতো একই বৈশিষ্ট্য রয়েছে।
কিছু বৈশিষ্ট্য সর্বদা অপ্টিমাইজেশান ফলাফলের উপর নির্ভর করে জনবহুল নাও হতে পারে:
-  skippedShipments[]কোনো যানবাহন দ্বারা সঞ্চালিত হয় না যে চালান তালিকা. একটি চালান বাদ দেওয়া যেতে পারে যদি এটি নির্দিষ্ট সীমাবদ্ধতার মধ্যে সঞ্চালিত না হয় বা চালানটি সম্পাদনের খরচ তার জরিমানা খরচ অতিক্রম করে। উদাহরণস্বরূপ, যদি একটি শিপমেন্টের পিকআপ বা ডেলিভারিরtimeWindowখুব সংকীর্ণ হয় তবে এটি সম্ভব নাও হতে পারে বা প্রয়োজনীয় সময় উইন্ডোতে একটি যানবাহনের জন্য পরিদর্শন করা সাশ্রয়ী হতে পারে।
-  validationErrors[]এমন ত্রুটিগুলি নির্দিষ্ট করে যা অনুরোধটিকে অবৈধ বা সমাধান করা অসম্ভব করে তোলে যখন অনুরোধেরsolvingModeVALIDATE_ONLYএ সেট করা হয়। সাধারণDEFAULT_SOLVEমোডে, বৈধতা ত্রুটিগুলি প্রতিক্রিয়া বডির পরিবর্তে একটি ত্রুটি বার্তায় প্রদর্শিত হবে৷ মনে রাখবেন যেVALIDATE_ONLYসমাধান মোড একবারে একাধিক ত্রুটি রিপোর্ট করতে পারে, যা অনুরোধগুলি দ্রুত ডিবাগ করার জন্য দরকারী৷
রুট বৈশিষ্ট্য
 প্রতিটি routes[] এন্ট্রি একটি ShipmentRoute বার্তা ( REST , gRPC )। প্রতিটি ShipmentRoute অনুরোধ থেকে একটি নির্দিষ্ট গাড়ির জন্য রুট অ্যাসাইনমেন্ট প্রতিনিধিত্ব করে। এর সংশ্লিষ্ট Vehicle সাথে সম্পর্কিত গুরুত্বপূর্ণ ShipmentRoute বৈশিষ্ট্যগুলির মধ্যে রয়েছে:
-  vehicleIndexহল সংশ্লিষ্ট অনুরোধ বার্তায়Vehicleশূন্য-ভিত্তিক সূচক। মান শূন্য হলে REST প্রতিক্রিয়াগুলি এই বৈশিষ্ট্যটি বাদ দেয়।
-  vehicleStartTimeহল সেই সময় যখন গাড়িটিকে তার রুট শুরু করতে হবে।
-  vehicleEndTimeহল সেই সময় যখন গাড়িটি তার রুট শেষ করবে বলে আশা করা হয়।
 একটি প্রতিক্রিয়াতে, routes এর মতো দেখাবে:
{
  "routes": [
    {
      "vehicleStartTime": "2024-02-13T00:00:00Z",
      "vehicleEndTime": "2024-02-13T00:38:42Z",
      "visits": [
        ...
      ],
      "transitions": [
        ...
      ],
      "metrics": {
        ...
      },
      ...
    }
  ],
  ...
}
 প্রতিটি ShipmentRoute visits একটি অর্ডার করা তালিকা রয়েছে যা গাড়িটি সম্পূর্ণ করবে। প্রতিটি Visit ( REST , gRPC ) সংশ্লিষ্ট অনুরোধ থেকে একটি VisitRequest ( REST , gRPC ) প্রতিনিধিত্ব করে। গুরুত্বপূর্ণ Visit বৈশিষ্ট্য অন্তর্ভুক্ত:
-  shipmentIndexহল শিপমেন্টের শূন্য-ভিত্তিক সূচক যা এই ভিজিটটি সংশ্লিষ্ট অনুরোধের অন্তর্গত।
-  isPickupসত্য হয় যখন একটি ভিজিট একটি পিকআপ হয় এবং মিথ্যা হয় যখন একটি ভিজিট একটি ডেলিভারি হয়। REST প্রতিক্রিয়া এই সম্পত্তি বাদ দেয় যখন মান মিথ্যা হয়।
-  visitRequestIndexহলShipment.pickupsবাShipment.deliveriesথেকেVisitRequestএর শূন্য-ভিত্তিক সূচক যাVisitপ্রতিনিধিত্ব করে। মান শূন্য হলে REST প্রতিক্রিয়াগুলি এই বৈশিষ্ট্যটি বাদ দেয়।
-  startTimeহল সেই সময় যা ভিজিট শুরু হবে বলে আশা করা হচ্ছে।
-  loadDemandsম্যাপ লোড টাইপ লোড পরিমাণVisitসম্পূর্ণ করার জন্য দাবি করা হয়েছে। ডেলিভারি ভিজিটের জন্য লোডের পরিমাণ নেতিবাচক, যা গাড়ি থেকে লোড সরিয়ে ফেলার প্রতিনিধিত্ব করে।
 একটি উদাহরণ Visit এর মত দেখাচ্ছে:
{
  "routes": [
    {
      ...
      "visits": [
        {
          "isPickup": true,
          "startTime": "2024-02-13T00:00:00Z",
          "detour": "0s"
        },
        ...
      ],
    },
    ...
  ],
  ...
}
 প্রতিটি ShipmentRoute transitions একটি অর্ডার করা তালিকা অন্তর্ভুক্ত থাকে যা একটি প্রদত্ত গাড়ির visits মধ্যে ভ্রমণের প্রতিনিধিত্ব করে। গুরুত্বপূর্ণ Transition বার্তা ( REST , gRPC ) বৈশিষ্ট্যগুলির মধ্যে রয়েছে:
-  startTimeহল সেই সময় যেখানে গাড়িটি ট্রানজিশন করতে শুরু করবে।
-  travelDurationহল সেই সময়কাল যার জন্য গাড়িটিকে ট্রানজিশন সম্পূর্ণ করতে যেতে হবে।
-  travelDistanceMetersহল মিটারে সেই দূরত্ব যা যানবাহনকে স্থানান্তর সম্পূর্ণ করতে যেতে হবে।
-  trafficInfoUnavailableনির্দেশ করে যে ট্রাফিক ডেটা স্থানান্তরের জন্য উপলব্ধ কিনা।
-  waitDurationঅলস সময়কে প্রতিনিধিত্ব করে যা গাড়িটি তার পরবর্তীVisitশুরু করার আগে অপেক্ষা করে। নিম্নলিখিতVisitstart_timeকারণে এটি খরচ হতে পারে।
-  totalDurationহল স্থানান্তরের মোট সময়কাল, যার মধ্যে ভ্রমণ, অপেক্ষা, বিরতি এবং বিলম্বের সময় রয়েছে।
-  vehicleLoadsলোড ম্যাপ লোড টাইপ থেকে লোড পরিমাণ এই ট্রানজিশনের সময় গাড়ির দ্বারা বহন করা হয়।
 একটি উদাহরণ Transition এর মত দেখাচ্ছে:
{
  "routes": [
    {
      ...
      "transitions": [
        ...
        {
          "travelDuration": "1171s",
          "travelDistanceMeters": 9004,
          "waitDuration": "0s",
          "totalDuration": "1171s",
          "startTime": "2024-02-13T00:00:00Z"
        },
        ...
      ],
      ...
    }
  ],
  ...
}
 vists এবং transitions মধ্যে সম্পর্ক সম্পর্কে আরও তথ্যের জন্য, পিকআপ এবং ডেলিভারি স্টপ অর্ডার অপ্টিমাইজেশান এবং ShipmentRoute রেফারেন্স ডকুমেন্টেশন ( REST , gRPC ) দেখুন। একটি Transition বার্তার routePolyline এবং routeToken বৈশিষ্ট্য সম্পর্কে আরও তথ্যের জন্য, ট্রানজিশন পলিলাইন এবং রুট টোকেনগুলি দেখুন।
মেট্রিক্স বৈশিষ্ট্য
 Metrics বার্তা ( REST , gRPC ) সমগ্র সমাধানের সংক্ষিপ্ত বিবরণ দেয়। কিছু গুরুত্বপূর্ণ Metrics বৈশিষ্ট্য অন্তর্ভুক্ত:
-  totalCostহল রুটগুলি সম্পূর্ণ করার জন্য মোট খরচ। খরচ মডেল প্যারামিটারে খরচ সম্পর্কে আরও পড়ুন।
-  usedVehicleCountহল সমাধানে ব্যবহৃত মোট যানবাহনের সংখ্যা। যানবাহনগুলির খালি রুট থাকতে পারে যখন অপ্টিমাইজার নির্ধারণ করে যে তাদের ব্যবহার অপ্রয়োজনীয়৷
-  skippedMandatoryShipmentCountহল এড়িয়ে যাওয়া শিপমেন্টের সংখ্যা যা "বাধ্যতামূলক"। একটি বাধ্যতামূলক চালান একটিpenaltyCostনির্দিষ্ট করে না যে চালানটি এড়িয়ে গেলে খরচ হয়৷ যদি নির্দিষ্ট সীমাবদ্ধতার অধীনে তাদের কর্মক্ষমতা সম্ভব না হয় তবে বাধ্যতামূলক চালানগুলি এখনও এড়ানো যেতে পারে। খরচ মডেল প্যারামিটারে খরচ সম্পর্কে আরও পড়ুন।
 অতিরিক্ত মেট্রিক্স AggregatedMetrics বার্তা ( REST , gRPC ) হিসাবে রিপোর্ট করা হয়। AggregatedMetrics বার্তার ধরনটি Metrics.aggregatedRouteMetrics প্রপার্টির জন্য এবং ShipmentRoute.metrics প্রপার্টির জন্য ব্যবহৃত হয় Metrics.aggregatedRouteMetrics OptimizeToursResponse এ সমস্ত ShipmentRoute গুলি জুড়ে একত্রিত মেট্রিক রয়েছে। প্রতিটি ShipmentRoute.metrics প্রপার্টিতে সেই নির্দিষ্ট ShipmentRoute মেট্রিক্স থাকে।
 গুরুত্বপূর্ণ AggregatedMetrics বৈশিষ্ট্য অন্তর্ভুক্ত:
-  performedShipmentCountহল তাদের সমগ্র রুটে যানবাহন দ্বারা সম্পাদিত চালানের সংখ্যা।
-  travelDurationহল যানবাহনগুলি তাদের রুটগুলি সম্পূর্ণ করার সময় ট্রানজিটে ব্যয় করা মোট সময়।
-  waitDurationহল মোট সময় যা যানবাহন তাদের রুট সম্পূর্ণ করার সময় অপেক্ষা করে।
-  delayDurationহল যানবাহনের মোট বিলম্বের সময়। এটি সাধারণত শূন্য হয় যদি না অনুরোধেTransitionAttributesব্যবহার করা হয়।
-  breakDurationহল মোট সময় যা যানবাহন তাদের রুট সম্পূর্ণ করার সময় বিরতিতে ব্যয় করে।
-  visitDurationহল মোট সময় যা যানবাহনগুলি তাদের রুটগুলি সম্পূর্ণ করার সময় পরিদর্শন করতে ব্যয় করে৷ এটি কার্যকরভাবে সমস্তVisitRequest.durationমানগুলির যোগফল যাVisitRequestজন্য প্রযোজ্য গাড়ির জন্য নির্ধারিতVisitসাথে সম্পর্কিত।
-  totalDurationহল যানবাহনের রুট সম্পূর্ণ করতে মোট সময়কাল।
-  travelDistanceMetersহল মোট দূরত্ব যা যানবাহন তাদের রুট সম্পূর্ণ করার সময় ভ্রমণ করে।
-  maxLoadsম্যাপ লোডের ধরনগুলিকে তাদের রুটে যেকোন সময়ে যানবাহনের দ্বারা বাহিত সর্বাধিক লোড পরিমাণে।
 একটি উদাহরণ Metrics বার্তা এর মত দেখাচ্ছে:
{
  "routes": [
    ...
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 1,
      "travelDuration": "2322s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "0s",
      "totalDuration": "2322s",
      "travelDistanceMeters": 18603
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2024-02-13T00:00:00Z",
    "latestVehicleEndTime": "2024-02-13T00:38:42Z",
    "totalCost": 18.603,
    "costs": {
      "model.vehicles.cost_per_kilometer": 18.603
    }
  }
}
সম্পূর্ণ উদাহরণ
কনস্ট্রাক্ট এ রিকোয়েস্ট থেকে অনুরোধের জন্য একটি সম্পূর্ণ উদাহরণের প্রতিক্রিয়া দেখতে এরকম দেখাচ্ছে:
{
  "routes": [
    {
      "vehicleStartTime": "2024-02-13T00:00:00Z",
      "vehicleEndTime": "2024-02-13T00:38:42Z",
      "visits": [
        {
          "isPickup": true,
          "startTime": "2024-02-13T00:00:00Z",
          "detour": "0s"
        },
        {
          "startTime": "2024-02-13T00:19:31Z",
          "detour": "0s"
        }
      ],
      "transitions": [
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2024-02-13T00:00:00Z"
        },
        {
          "travelDuration": "1171s",
          "travelDistanceMeters": 9004,
          "waitDuration": "0s",
          "totalDuration": "1171s",
          "startTime": "2024-02-13T00:00:00Z"
        },
        {
          "travelDuration": "1151s",
          "travelDistanceMeters": 9599,
          "waitDuration": "0s",
          "totalDuration": "1151s",
          "startTime": "2024-02-13T00:19:31Z"
        }
      ],
      "metrics": {
        "performedShipmentCount": 1,
        "travelDuration": "2322s",
        "waitDuration": "0s",
        "delayDuration": "0s",
        "breakDuration": "0s",
        "visitDuration": "0s",
        "totalDuration": "2322s",
        "travelDistanceMeters": 18603
      },
      "routeCosts": {
        "model.vehicles.cost_per_kilometer": 18.603
      },
      "routeTotalCost": 18.603
    }
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 1,
      "travelDuration": "2322s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "0s",
      "totalDuration": "2322s",
      "travelDistanceMeters": 18603
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2024-02-13T00:00:00Z",
    "latestVehicleEndTime": "2024-02-13T00:38:42Z",
    "totalCost": 18.603,
    "costs": {
      "model.vehicles.cost_per_kilometer": 18.603
    }
  }
}