উদাহরণ: সময় জানালা

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

সম্পূর্ণ ধারণাগত সারসংক্ষেপের জন্য এবং timeWindows ব্যবহারের আরও উপায় জানতে, Time windows কী ধারণা নথিটি দেখুন।

দৃশ্যপট ১: নির্ধারিত সময়ের মধ্যে ডেলিভারি করা

নিম্নলিখিত উদাহরণটি এমন একটি দৃশ্যকল্প প্রদর্শন করে যেখানে একটি একক যানবাহনকে তাদের নির্দিষ্ট timeWindows মধ্যে তিনটি চালান সরবরাহ করতে হবে। Windows।

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

এই অনুরোধে তিনটি চালান অন্তর্ভুক্ত রয়েছে, প্রতিটির ডেলিভারি আলাদা TimeWindow :

  • shipments[0] ডেলিভারি সময়: ১৮:০০ - ১৯:০০
  • shipments[1] ডেলিভারি সময়: ১৮:০০ - ১৮:৩০
  • shipments[2] ডেলিভারি সময়: ১৭:৩০ - ১৮:০০

টাইম উইন্ডো সহ একটি উদাহরণ অনুরোধ দেখুন

{
  "populatePolylines": false,
  "populateTransitionPolylines": false,
  "model": {
    "globalStartTime": "2023-01-13T16:00:00Z",
    "globalEndTime": "2023-01-14T16:00:00Z",
    "shipments": [
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789456,
              "longitude": -122.390192
            },
            "duration": "250s",
            "timeWindows": [
              {
                "startTime": "2023-01-13T18:00:00Z",
                "endTime": "2023-01-13T19:00:00Z"
              }
            ]
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 100.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789116,
              "longitude": -122.395080
            },
            "duration": "250s",
            "timeWindows": [
              {
                "startTime": "2023-01-13T18:00:00Z",
                "endTime": "2023-01-13T18:30:00Z"
              }
            ]
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 20.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.795242,
              "longitude": -122.399347
            },
            "duration": "250s",
            "timeWindows": [
              {
                "startTime": "2023-01-13T17:30:00Z",
                "endTime": "2023-01-13T18:00:00Z"
              }
            ]
          }
        ],
        "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
      }
    ]
  }
}
    

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

প্রতিক্রিয়া থেকে দেখা যায় যে অপ্টিমাইজার প্রতিটি visits সময়সূচী নির্ধারণ করে সময়সূচী মেনে, আগের উইন্ডো দিয়ে শিপমেন্ট আগে ডেলিভারি করে।

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

{
  "routes": [
    {
      "vehicleStartTime": "2023-01-13T17:35:50Z",
      "vehicleEndTime": "2023-01-13T18:17:24Z",
      "visits": [
        {
          "isPickup": true,
          "startTime": "2023-01-13T17:35:50Z",
          "detour": "0s"
        },
        {
          "shipmentIndex": 1,
          "isPickup": true,
          "startTime": "2023-01-13T17:38:20Z",
          "detour": "150s"
        },
        {
          "shipmentIndex": 2,
          "isPickup": true,
          "startTime": "2023-01-13T17:40:50Z",
          "detour": "300s"
        },
        {
          "shipmentIndex": 2,
          "startTime": "2023-01-13T17:50:09Z",
          "detour": "0s"
        },
        {
          "shipmentIndex": 1,
          "startTime": "2023-01-13T18:00:00Z",
          "detour": "796s"
        },
        {
          "startTime": "2023-01-13T18:07:35Z",
          "detour": "1520s"
        }
      ],
      "transitions": [
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-13T17:35:50Z"
        },
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-13T17:38:20Z"
        },
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-13T17:40:50Z"
        },
        {
          "travelDuration": "409s",
          "travelDistanceMeters": 1371,
          "waitDuration": "0s",
          "totalDuration": "409s",
          "startTime": "2023-01-13T17:43:20Z"
        },
        {
          "travelDuration": "341s",
          "travelDistanceMeters": 1312,
          "waitDuration": "0s",
          "totalDuration": "341s",
          "startTime": "2023-01-13T17:54:19Z"
        },
        {
          "travelDuration": "205s",
          "travelDistanceMeters": 636,
          "waitDuration": "0s",
          "totalDuration": "205s",
          "startTime": "2023-01-13T18:04:10Z"
        },
        {
          "travelDuration": "339s",
          "travelDistanceMeters": 1276,
          "waitDuration": "0s",
          "totalDuration": "339s",
          "startTime": "2023-01-13T18:11:45Z"
        }
      ],
      "metrics": {
        "performedShipmentCount": 3,
        "travelDuration": "1294s",
        "waitDuration": "0s",
        "delayDuration": "0s",
        "breakDuration": "0s",
        "visitDuration": "1200s",
        "totalDuration": "2494s",
        "travelDistanceMeters": 4595
      },
      "routeCosts": {
        "model.vehicles.cost_per_hour": 27.711111111111112,
        "model.vehicles.cost_per_kilometer": 45.95
      },
      "routeTotalCost": 73.661111111111111
    }
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 3,
      "travelDuration": "1294s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "1200s",
      "totalDuration": "2494s",
      "travelDistanceMeters": 4595
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2023-01-13T17:35:50Z",
    "latestVehicleEndTime": "2023-01-13T18:17:24Z",
    "totalCost": 73.661111111111111,
    "costs": {
      "model.vehicles.cost_per_hour": 27.711111111111112,
      "model.vehicles.cost_per_kilometer": 45.95
    }
  }
}
    

প্রতিটি চালানের ডেলিভারি startTime তার অনুরোধকৃত উইন্ডোর মধ্যে পড়ে:

  • shipments[2] ১৭:৫০ এ ডেলিভারি করা হয় (১৭:৩০ - ১৮:০০ এর মধ্যে)।
  • shipments[1] ১৮:০০ টায় (১৮:০০ - ১৮:৩০ টার মধ্যে) বিতরণ করা হয়।
  • shipments[0] ১৮:০৭ এ ডেলিভারি করা হয় (১৮:০০ - ১৯:০০ এর মধ্যে)।

দৃশ্যপট ২: সময়সীমার কারণে শিপমেন্ট এড়িয়ে যাওয়া

নিম্নলিখিত উদাহরণটি এমন একটি দৃশ্যকল্প প্রদর্শন করে যেখানে একটি চালানের সময়সীমা অন্যদের থেকে অনেক দূরে থাকে, যার ফলে অপ্টিমাইজারের জন্য চালানটি এড়িয়ে যাওয়া এবং penaltyCost প্রদান করা আরও সাশ্রয়ী হয়।

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

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

  • shipments[1] ডেলিভারি সময় এখন: 21:00 - 21:30

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

{
  "populatePolylines": false,
  "populateTransitionPolylines": false,
  "model": {
    "globalStartTime": "2023-01-13T16:00:00Z",
    "globalEndTime": "2023-01-14T16:00:00Z",
    "shipments": [
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789456,
              "longitude": -122.390192
            },
            "duration": "250s",
            "timeWindows": [
              {
                "startTime": "2023-01-13T18:00:00Z",
                "endTime": "2023-01-13T19:00:00Z"
              }
            ]
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 100.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789116,
              "longitude": -122.395080
            },
            "duration": "250s",
            "timeWindows": [
              {
                "startTime": "2023-01-13T21:00:00Z",
                "endTime": "2023-01-13T21:30:00Z"
              }
            ]
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 20.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.795242,
              "longitude": -122.399347
            },
            "duration": "250s",
            "timeWindows": [
              {
                "startTime": "2023-01-13T17:30:00Z",
                "endTime": "2023-01-13T18:00:00Z"
              }
            ]
          }
        ],
        "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
      }
    ]
  }
}
    

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

প্রতিক্রিয়া দেখায় যে অপ্টিমাইজার shipment[1] । এটি ঘটে কারণ, চালানটি সরবরাহ করার জন্য, গাড়িটিকে বেশ কয়েক ঘন্টা অতিরিক্ত চালাতে হবে এবং সেই সময়ের জন্য গণনা করা খরচ চালানের penaltyCost 20.0 এর চেয়ে বেশি।

কোনও শিপমেন্ট এড়িয়ে যাওয়ার সময়সূচী সহ উদাহরণ অনুরোধের প্রতিক্রিয়া দেখুন।

{
  "routes": [
    {
      "vehicleStartTime": "2023-01-13T17:37:49Z",
      "vehicleEndTime": "2023-01-13T18:09:49Z",
      "visits": [
        {
          "isPickup": true,
          "startTime": "2023-01-13T17:37:49Z",
          "detour": "0s"
        },
        {
          "shipmentIndex": 2,
          "isPickup": true,
          "startTime": "2023-01-13T17:40:19Z",
          "detour": "150s"
        },
        {
          "shipmentIndex": 2,
          "startTime": "2023-01-13T17:49:38Z",
          "detour": "0s"
        },
        {
          "startTime": "2023-01-13T18:00:00Z",
          "detour": "946s"
        }
      ],
      "transitions": [
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-13T17:37:49Z"
        },
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-13T17:40:19Z"
        },
        {
          "travelDuration": "409s",
          "travelDistanceMeters": 1371,
          "waitDuration": "0s",
          "totalDuration": "409s",
          "startTime": "2023-01-13T17:42:49Z"
        },
        {
          "travelDuration": "372s",
          "travelDistanceMeters": 1348,
          "waitDuration": "0s",
          "totalDuration": "372s",
          "startTime": "2023-01-13T17:53:48Z"
        },
        {
          "travelDuration": "339s",
          "travelDistanceMeters": 1276,
          "waitDuration": "0s",
          "totalDuration": "339s",
          "startTime": "2023-01-13T18:04:10Z"
        }
      ],
      "metrics": {
        "performedShipmentCount": 2,
        "travelDuration": "1120s",
        "waitDuration": "0s",
        "delayDuration": "0s",
        "breakDuration": "0s",
        "visitDuration": "800s",
        "totalDuration": "1920s",
        "travelDistanceMeters": 3995
      },
      "routeCosts": {
        "model.vehicles.cost_per_kilometer": 39.95,
        "model.vehicles.cost_per_hour": 21.333333333333332
      },
      "routeTotalCost": 61.283333333333331
    }
  ],
  "skippedShipments": [
    {
      "index": 1
    }
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 2,
      "travelDuration": "1120s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "800s",
      "totalDuration": "1920s",
      "travelDistanceMeters": 3995
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2023-01-13T17:37:49Z",
    "latestVehicleEndTime": "2023-01-13T18:09:49Z",
    "totalCost": 81.283333333333331,
    "costs": {
      "model.shipments.penalty_cost": 20,
      "model.vehicles.cost_per_hour": 21.333333333333332,
      "model.vehicles.cost_per_kilometer": 39.95
    }
  }
}
    

প্রতিক্রিয়ায় skippedShipments অ্যারে দেখায় যে index: 1 সহ চালানটি সম্পন্ন হয়নি। যা নিম্নলিখিত খরচ পরামিতিগুলিকে প্রভাবিত করে:

  • সেই চালান থেকে প্রাপ্ত ২০.০ penaltyCost metrics.costs -এ অন্তর্ভুক্ত।
  • totalCost (81.28) হল routeTotalCost (61.28) এবং penalty_cost (20.0) এর যোগফল।

দৃশ্যপট ৩: সফট টাইম উইন্ডো ব্যবহার করা

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

এই বৈশিষ্ট্যটির ধারণাগত সারসংক্ষেপের জন্য, টাইম উইন্ডোজ কী ধারণা নথিতে সফট টাইম উইন্ডোজ বিভাগটি দেখুন।

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

এই অনুরোধটি shipment[1] কে সফট উইন্ডোতে পরিবর্তন করে পূর্ববর্তী পরিস্থিতি পরিবর্তন করে। এটি softStartTime ব্যবহার করে এবং একটি costPerHourBeforeSoftStartTime প্রদান করে করা হয়।

shipment[1] এর এখন softStartTime 21:00 এবং costPerHourBeforeSoftStartTime 2.0। এর অর্থ হল 21:00 এর আগে ডেলিভারি করা হলে প্রতি ঘন্টার জন্য জরিমানা প্রযোজ্য হবে।

হার্ড এবং সফট টাইম উইন্ডো সহ একটি উদাহরণ অনুরোধ দেখুন।

{
  "populatePolylines": false,
  "populateTransitionPolylines": false,
  "model": {
    "globalStartTime": "2023-01-13T16:00:00Z",
    "globalEndTime": "2023-01-14T16:00:00Z",
    "shipments": [
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789456,
              "longitude": -122.390192
            },
            "duration": "250s",
            "timeWindows": [
              {
                "startTime": "2023-01-13T18:00:00Z",
                "softEndTime": "2023-01-13T19:00:00Z",
                "costPerHourAfterSoftEndTime": 2.0
              }
            ]
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 100.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789116,
              "longitude": -122.395080
            },
            "duration": "250s",
            "timeWindows": [
              {
                "softStartTime": "2023-01-13T21:00:00Z",
                "endTime": "2023-01-13T21:30:00Z",
                "costPerHourBeforeSoftStartTime": 2.0
              }
            ]
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 20.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.795242,
              "longitude": -122.399347
            },
            "duration": "250s",
            "timeWindows": [
              {
                "startTime": "2023-01-13T17:30:00Z",
                "softEndTime": "2023-01-13T18:00:00Z",
                "costPerHourAfterSoftEndTime": 2.0
              }
            ]
          }
        ],
        "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
      }
    ]
  }
}
    

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

প্রতিক্রিয়া থেকে দেখা যাচ্ছে যে অপ্টিমাইজার এখন তিনটি শিপমেন্টের সময়সূচী নির্ধারণ করে। এটি shipment[1] এর 21:00 softStartTime এর চেয়ে অনেক আগে নির্ধারণ করে। এটি সবচেয়ে সাশ্রয়ী সমাধান কারণ সফট টাইম উইন্ডো লঙ্ঘনের খরচ শিপমেন্ট এড়িয়ে যাওয়ার penaltyCost চেয়ে কম, এবং এটি সময় উইন্ডোতে ডেলিভারির জন্য গাড়ির অপেক্ষা করার খরচের চেয়েও কম।

হার্ড এবং সফট টাইম উইন্ডো সহ উদাহরণ অনুরোধের প্রতিক্রিয়া দেখুন।

{
  "routes": [
    {
      "vehicleStartTime": "2023-01-13T17:48:35Z",
      "vehicleEndTime": "2023-01-13T18:24:28Z",
      "visits": [
        {
          "isPickup": true,
          "startTime": "2023-01-13T17:48:35Z",
          "detour": "0s"
        },
        {
          "shipmentIndex": 1,
          "isPickup": true,
          "startTime": "2023-01-13T17:51:05Z",
          "detour": "150s"
        },
        {
          "shipmentIndex": 2,
          "isPickup": true,
          "startTime": "2023-01-13T17:53:35Z",
          "detour": "300s"
        },
        {
          "startTime": "2023-01-13T18:00:00Z",
          "detour": "300s"
        },
        {
          "shipmentIndex": 1,
          "startTime": "2023-01-13T18:07:42Z",
          "detour": "493s"
        },
        {
          "shipmentIndex": 2,
          "startTime": "2023-01-13T18:17:27Z",
          "detour": "873s"
        }
      ],
      "transitions": [
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-13T17:48:35Z"
        },
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-13T17:51:05Z"
        },
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-13T17:53:35Z"
        },
        {
          "travelDuration": "235s",
          "travelDistanceMeters": 795,
          "waitDuration": "0s",
          "totalDuration": "235s",
          "startTime": "2023-01-13T17:56:05Z"
        },
        {
          "travelDuration": "212s",
          "travelDistanceMeters": 791,
          "waitDuration": "0s",
          "totalDuration": "212s",
          "startTime": "2023-01-13T18:04:10Z"
        },
        {
          "travelDuration": "335s",
          "travelDistanceMeters": 1204,
          "waitDuration": "0s",
          "totalDuration": "335s",
          "startTime": "2023-01-13T18:11:52Z"
        },
        {
          "travelDuration": "171s",
          "travelDistanceMeters": 665,
          "waitDuration": "0s",
          "totalDuration": "171s",
          "startTime": "2023-01-13T18:21:37Z"
        }
      ],
      "metrics": {
        "performedShipmentCount": 3,
        "travelDuration": "953s",
        "waitDuration": "0s",
        "delayDuration": "0s",
        "breakDuration": "0s",
        "visitDuration": "1200s",
        "totalDuration": "2153s",
        "travelDistanceMeters": 3455
      },
      "routeCosts": {
        "model.shipments.deliveries.time_windows.cost_per_hour_after_soft_end_time": 0.58166666666666667,
        "model.shipments.deliveries.time_windows.cost_per_hour_before_soft_start_time": 5.7433333333333332,
        "model.vehicles.cost_per_hour": 23.922222222222221,
        "model.vehicles.cost_per_kilometer": 34.55
      },
      "routeTotalCost": 64.797222222222217
    }
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 3,
      "travelDuration": "953s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "1200s",
      "totalDuration": "2153s",
      "travelDistanceMeters": 3455
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2023-01-13T17:48:35Z",
    "latestVehicleEndTime": "2023-01-13T18:24:28Z",
    "totalCost": 64.797222222222217,
    "costs": {
      "model.vehicles.cost_per_kilometer": 34.55,
      "model.shipments.deliveries.time_windows.cost_per_hour_before_soft_start_time": 5.7433333333333332,
      "model.shipments.deliveries.time_windows.cost_per_hour_after_soft_end_time": 0.58166666666666667,
      "model.vehicles.cost_per_hour": 23.922222222222221
    }
  }
}
    

সফট টাইম উইন্ডোর ফলে আরও ভালো সমাধান পাওয়া যায়, যা নিম্নলিখিত উন্নতিগুলিতে প্রতিফলিত হয়:

  • তিনটি চালানেরই একটিও এড়িয়ে না গিয়ে নির্ধারিত হয়েছে।
  • totalCost এখন ৬৪.৭৯, যা পূর্ববর্তী সমাধানের খরচ ৮১.২৮ এর চেয়ে কম।
  • routeCosts অবজেক্টে softStartTime এর প্রায় ৩ ঘন্টা আগে shipment[1] ডেলিভারির জন্য ৫.৭৪ খরচ অন্তর্ভুক্ত। এই খরচ ২০.০ এর penaltyCost চেয়ে কম, যা এটিকে সবচেয়ে সাশ্রয়ী বিকল্প করে তোলে।