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
সীমাবদ্ধতাগুলি পিকআপ এবং ডেলিভারি টাইম উইন্ডো সীমাবদ্ধতায় বিস্তারিতভাবে সম্বোধন করা হয়েছে।