উদাহরণ: বেসিক পিকআপ এবং ডেলিভারি অপ্টিমাইজেশন

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

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

এই উদাহরণ অনুরোধটিতে নিম্নলিখিত মূল প্যারামিটারগুলো রয়েছে:

  • populatePolylines এবং populateTransitionPolylines : গাড়ির রুটের জন্য এনকোডেড পলিলাইন পাথ পেতে এগুলোকে true তে সেট করুন।
  • globalStartTime এবং globalEndTime : ২৪-ঘণ্টার সেই সময়সীমা নির্ধারণ করুন, যার মধ্যে সমস্ত কার্যকলাপ অবশ্যই সম্পন্ন করতে হবে। 'টাইম উইন্ডোজ' নামক মূল ধারণাটিতে টাইম উইন্ডোজ সম্পর্কে আরও জানুন।
  • shipments : তিনটি চালান নির্ধারণ করুন, যার প্রতিটির জন্য একটি সাধারণ ডিপো থেকে পণ্য সংগ্রহ এবং একটি স্বতন্ত্র গন্তব্যে ডেলিভারি করতে হবে। যেহেতু আপনি কোনো penaltyCost নির্ধারণ করেননি, তাই সমস্ত চালান বাধ্যতামূলক।
  • vehicles : একটি সাধারণ শুরু এবং শেষ অবস্থান সহ একটি যানবাহন নির্ধারণ করুন। সবচেয়ে সস্তা পথ খুঁজে পেতে অপটিমাইজারকে নির্দেশনা দেওয়ার জন্য costPerKilometer এবং costPerHour প্রদান করুন। খরচ মডেল মূল ধারণা থেকে খরচ সম্পর্কে আরও জানুন।

একটি নমুনা অনুরোধ দেখুন

      {
        "populatePolylines": true,
        "populateTransitionPolylines": true,
        "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"
                }
              ]
            },
            {
              "deliveries": [
                {
                  "arrivalLocation": {
                    "latitude": 37.789116,
                    "longitude": -122.395080
                  },
                  "duration": "250s"
                }
              ],
              "pickups": [
                {
                  "arrivalLocation": {
                    "latitude": 37.794465,
                    "longitude": -122.394839
                  },
                  "duration": "150s"
                }
              ]
            },
            {
              "deliveries": [
                {
                  "arrivalLocation": {
                    "latitude": 37.795242,
                    "longitude": -122.399347
                  },
                  "duration": "250s"
                }
              ],
              "pickups": [
                {
                  "arrivalLocation": {
                    "latitude": 37.794465,
                    "longitude": -122.394839
                  },
                  "duration": "150s"
                }
              ]
            }
          ],
          "vehicles": [
            {
              "endLocation": {
                "latitude": 37.794465,
                "longitude": -122.394839
              },
              "startLocation": {
                "latitude": 37.794465,
                "longitude": -122.394839
              },
              "costPerKilometer": 10.0,
              "costPerHour": 40.0
            }
          ]
        }
      }
    

উদাহরণ প্রতিক্রিয়া

রেসপন্সটিতে একটি টপ-লেভেল ' routes ফিল্ড থাকে যা প্রস্তাবিত রুটগুলো উপস্থাপন করে, যেখানে প্রতিটি গাড়ির জন্য একটি করে রুট থাকে। যেহেতু এই গাইডের উদাহরণ রিকোয়েস্টটিতে শুধুমাত্র একটি গাড়ি নির্দিষ্ট করা হয়েছে, তাই routes কেবল একটি ShipmentRoute মেসেজ অন্তর্ভুক্ত থাকে।

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

    {
      "routes": [
        {
          "vehicleStartTime": "2023-01-14T00:00:00Z",
          "vehicleEndTime": "2023-01-14T00:36:41Z",
          "visits": [
            {
              "shipmentIndex": 2,
              "isPickup": true,
              "startTime": "2023-01-14T00:00:00Z",
              "detour": "0s"
            },
            {
              "shipmentIndex": 1,
              "isPickup": true,
              "startTime": "2023-01-14T00:02:30Z",
              "detour": "150s"
            },
            {
              "isPickup": true,
              "startTime": "2023-01-14T00:05:00Z",
              "detour": "300s"
            },
            {
              "startTime": "2023-01-14T00:11:25Z",
              "detour": "0s"
            },
            {
              "shipmentIndex": 1,
              "startTime": "2023-01-14T00:19:29Z",
              "detour": "503s"
            },
            {
              "shipmentIndex": 2,
              "startTime": "2023-01-14T00:29:02Z",
              "detour": "1324s"
            }
          ],
          "transitions": [
            {
              "travelDuration": "0s",
              "waitDuration": "0s",
              "totalDuration": "0s",
              "startTime": "2023-01-14T00:00:00Z",
              "routePolyline": {}
            },
            {
              "travelDuration": "0s",
              "waitDuration": "0s",
              "totalDuration": "0s",
              "startTime": "2023-01-14T00:02:30Z",
              "routePolyline": {}
            },
            {
              "travelDuration": "0s",
              "waitDuration": "0s",
              "totalDuration": "0s",
              "startTime": "2023-01-14T00:05:00Z",
              "routePolyline": {}
            },
            {
              "travelDuration": "235s",
              "travelDistanceMeters": 795,
              "waitDuration": "0s",
              "totalDuration": "235s",
              "startTime": "2023-01-14T00:07:30Z",
              "routePolyline": {
                "points": "kvteFtfjVAA?C?C@C?A?C@AFMj@s@JKb@k@Zc@LSjA}ARWDGdAxAdAvAXa@@k@AsA\\c@FKp@_A\\c@Ze@fA{ALSFGd@o@rAgBB{BZc@"
              }
            },
            {
              "travelDuration": "234s",
              "travelDistanceMeters": 793,
              "waitDuration": "0s",
              "totalDuration": "234s",
              "startTime": "2023-01-14T00:15:35Z",
              "routePolyline": {
                "points": "cwseFti_jVRWj@w@x@eAHLNRHJbApAHLX\\V^?@hA~AT\\PVFFDHDFJNp@~@NRLNNTFFUZIJY^Y^g@p@[`@KP{@fAEFSXe@l@c@h@WZY\\?BELk@v@MNa@l@"
              }
            },
            {
              "travelDuration": "323s",
              "travelDistanceMeters": 1204,
              "waitDuration": "0s",
              "totalDuration": "323s",
              "startTime": "2023-01-14T00:23:39Z",
              "routePolyline": {
                "points": "cuseFhjVSTY`@Yb@GHEDIJEF]f@IJi@r@oAbBeCfDKLaApAKNQVIPKPCDQJIBIBM@iAJeALqBVC@C?A?QBYDI@C?_@Dc@FO@a@FDp@HfAHvABVDl@Dj@PpCQDiALsALAQASKwAOgBEe@COCYEa@Es@Eg@"
              }
            },
            {
              "travelDuration": "209s",
              "travelDistanceMeters": 665,
              "waitDuration": "0s",
              "totalDuration": "209s",
              "startTime": "2023-01-14T00:33:12Z",
              "routePolyline": {
                "points": "{zteFxbajV?CAYEc@AMC_@AOAK?E?CCWAOAKCe@CY?WScDEm@d@EFA\\ENCB?XEVC^E`@EhBUVCNEB?@?\\Er@IMUe@k@k@w@AAMQa@i@SWQWMQi@u@AC?A"
              }
            }
          ],
          "routePolyline": {
            "points": "kvteFtfjVAA?C?C@C?A?C@AFMj@s@JKb@k@Zc@LSjA}ARWDGdAxAdAvAXa@@k@AsA\\c@FKp@_A\\c@Ze@fA{ALSFGd@o@rAgBB{BZc@RWj@w@x@eAHLNRHJbApAHLX\\V^?@hA~AT\\PVFFDHDFJNp@~@NRLNNTFFUZIJY^Y^g@p@[@KP{@fAEFSXe@l@c@h@WZY\\?BELk@v@MNa@l@STY@Yb@GHEDIJEF]f@IJi@r@oAbBeCfDKLaApAKNQVIPKPCDQJIBIBM@iAJeALqBVC@C?A?QBYDI@C?_@Dc@FO@a@FDp@HfAHvABVDl@Dj@PpCQDiALsALAQASKwAOgBEe@COCYEa@Es@Eg@?CAYEc@AMC_@AOAK?E?CCWAOAKCe@CY?WScDEm@d@EFA\\ENCB?XEVC^E`@EhBUVCNEB?@?\\Er@IMUe@k@k@w@AAMQa@i@SWQWMQi@u@AC?A"
          },
          "metrics": {
            "performedShipmentCount": 3,
            "travelDuration": "1001s",
            "waitDuration": "0s",
            "delayDuration": "0s",
            "breakDuration": "0s",
            "visitDuration": "1200s",
            "totalDuration": "2201s",
            "travelDistanceMeters": 3457
          },
          "travelSteps": [
            {
              "duration": "0s",
              "routePolyline": {}
            },
            {
              "duration": "0s",
              "routePolyline": {}
            },
            {
              "duration": "0s",
              "routePolyline": {}
            },
            {
              "duration": "227s",
              "distanceMeters": 794,
              "routePolyline": {
                "points": "kvteFtfjVAA?C?C@C?A?C@AFMj@s@JKb@k@Zc@LSjA}ARWDGdAxAdAvAXa@@k@AsA\\c@FKp@_A\\c@Ze@fA{ALSFGd@o@rAgBB{BZc@"
              }
            },
            {
              "duration": "233s",
              "distanceMeters": 791,
              "routePolyline": {
                "points": "cwseFti_jVRWj@w@x@eAHLNRHJbApAHLX\\V^?@hA~AT\\PVFFDHDFJNp@~@NRLNNTFFUZIJY^Y^g@p@[`@KP{@fAEFSXe@l@c@h@WZY\\?BELk@v@MNa@l@"
              }
            },
            {
              "duration": "322s",
              "distanceMeters": 1205,
              "routePolyline": {
                "points": "cuseFhjVSTY`@Yb@GHEDIJEF]f@IJi@r@oAbBeCfDKLaApAKNQVIPKPCDQJIBIBM@iAJeALqBVC@C?A?QBYDI@C?_@Dc@FO@a@FDp@HfAHvABVDl@Dj@PpCQDiALsALAQASKwAOgBEe@COCYEa@Es@Eg@"
              }
            },
            {
              "duration": "208s",
              "distanceMeters": 666,
              "routePolyline": {
                "points": "{zteFxbajV?CAYEc@AMC_@AOAK?E?CCWAOAKCe@CY?WScDEm@d@EFA\\ENCB?XEVC^E`@EhBUVCNEB?@?\\Er@IMUe@k@k@w@AAMQa@i@SWQWMQi@u@AC?A"
              }
            }
          ],
          "vehicleDetour": "2201s",
          "routeCosts": {
            "model.vehicles.cost_per_hour": 24.455555555555556,
            "model.vehicles.cost_per_kilometer": 34.57
          },
          "routeTotalCost": 59.025555555555556
        }
      ],
      "totalCost": 59.025555555555556,
      "metrics": {
        "aggregatedRouteMetrics": {
          "performedShipmentCount": 3,
          "travelDuration": "1001s",
          "waitDuration": "0s",
          "delayDuration": "0s",
          "breakDuration": "0s",
          "visitDuration": "1200s",
          "totalDuration": "2201s",
          "travelDistanceMeters": 3457
        },
        "usedVehicleCount": 1,
        "earliestVehicleStartTime": "2023-01-14T00:00:00Z",
        "latestVehicleEndTime": "2023-01-14T00:36:41Z",
        "totalCost": 59.025555555555556,
        "costs": {
          "model.vehicles.cost_per_kilometer": 34.57,
          "model.vehicles.cost_per_hour": 24.455555555555556
        }
      }
    }
    

যানবাহনের সম্পূর্ণ পথটি নিম্নলিখিত ক্ষেত্রগুলির দ্বারা বর্ণিত হয়:

  • visits : এই অ্যারেটি অপ্টিমাইজ করা ক্রম অনুসারে সমস্ত পিকআপ এবং ডেলিভারি তালিকাভুক্ত করে। এই উদাহরণে, অপ্টিমাইজার নির্ধারণ করেছে যে সবচেয়ে কার্যকর ক্রমটি হলো প্রথমে ডিপো থেকে তিনটি চালানই পিকআপ করা এবং তারপরে সেগুলি ডেলিভারি করা।
  • transitions : এই অ্যারেটি প্রতিটি ভিজিটের মধ্যবর্তী ভ্রমণ পর্বগুলো তালিকাভুক্ত করে। যেহেতু তিনটি পিকআপই একই স্থান থেকে হয়, তাই প্রথম তিনটি ট্রানজিশনের travelDuration ) "0s" হয়।
  • routePolyline : শীর্ষ-স্তরের পলিলাইনটি গাড়ির শুরু থেকে শেষ পর্যন্ত সম্পূর্ণ পথকে প্রতিনিধিত্ব করে। এছাড়াও আপনি প্রতিটি transition অবজেক্টের মধ্যে ছোট ছোট পলিলাইন খুঁজে পাবেন, যেগুলো ভ্রমণের স্বতন্ত্র অংশগুলোকে নির্দেশ করে। দ্রষ্টব্য: আপনি ইন্টারেক্টিভ পলিলাইন এনকোডার ইউটিলিটি ব্যবহার করে এইগুলো এবং অন্য যেকোনো পলিলাইন দেখতে পারেন।