- JSON উপস্থাপনা
- জাহাজে প্রেরিত কাজ
- ভিজিটরিকোয়েস্ট
- অক্ষাংশ
- ওয়েপয়েন্ট
- স্থান
- টাইমউইন্ডো
- যানবাহন
- ভ্রমণ মোড
- রুটমডিফায়ার
- আনলোডিং পলিসি
- লোডলিমিট
- ব্যবধান
- লোড খরচ
- সময়সীমা
- দূরত্বসীমা
- ব্রেকরুল
- ব্রেকরিকোয়েস্ট
- ফ্রিকোয়েন্সি সীমাবদ্ধতা
- উদ্দেশ্য
- আদর্শ
- সময়কাল দূরত্ব ম্যাট্রিক্স
- সারি
- ট্রানজিশন অ্যাট্রিবিউটস
- চালানের ধরণঅসঙ্গতি
- অসঙ্গতি মোড
- চালানের ধরণপ্রয়োজনীয়তা
- প্রয়োজনীয়তা মোড
- অগ্রাধিকারের নিয়ম
একটি শিপমেন্ট মডেলে কিছু শিপমেন্ট থাকে যা অবশ্যই কিছু যানবাহন দ্বারা সম্পন্ন করতে হবে, একই সাথে সামগ্রিক খরচ কমিয়ে আনতে হবে, যা হল এর যোগফল:
- যানবাহন রুট করার খরচ (মোট সময় প্রতি খরচের যোগফল, ভ্রমণের সময় প্রতি খরচ এবং সমস্ত যানবাহনের উপর স্থির খরচ)।
- অসম্পূর্ণ চালানের জরিমানা।
- বিশ্বব্যাপী চালানের সময়কালের খরচ
| JSON উপস্থাপনা |
|---|
{ "shipments": [ { object ( |
| ক্ষেত্র | |
|---|---|
shipments[] | মডেলটিতে সম্পাদিত চালানের সেট। |
vehicles[] | পরিদর্শনের জন্য ব্যবহার করা যেতে পারে এমন যানবাহনের সেট। |
objectives[] | এই মডেলের উদ্দেশ্যগুলির সেট, যা আমরা খরচে রূপান্তর করব। যদি খালি না হয়, তাহলে ইনপুট মডেলটি খরচমুক্ত হতে হবে। পরিবর্তিত অনুরোধটি পেতে, দয়া করে পরীক্ষামূলক: আরও বিস্তারিত জানার জন্য https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request দেখুন। |
globalStartTime | মডেলের বিশ্বব্যাপী শুরু এবং শেষ সময়: এই সীমার বাইরে কোনও সময় বৈধ বলে বিবেচিত হবে না। মডেলের সময়কাল এক বছরের কম হতে হবে, অর্থাৎ RFC 3339 ব্যবহার করে, যেখানে উৎপন্ন আউটপুট সর্বদা Z-স্বাভাবিক হবে এবং 0, 3, 6 অথবা 9 ভগ্নাংশ সংখ্যা ব্যবহার করবে। "Z" ব্যতীত অন্যান্য অফসেটগুলিও গ্রহণযোগ্য। উদাহরণ: |
globalEndTime | যদি সেট না করা থাকে, তাহলে 00:00:00 UTC, 1 জানুয়ারী, 1971 (অর্থাৎ সেকেন্ড: 31536000, ন্যানো: 0) ডিফল্ট হিসেবে ব্যবহৃত হবে। RFC 3339 ব্যবহার করে, যেখানে উৎপন্ন আউটপুট সর্বদা Z-স্বাভাবিক হবে এবং 0, 3, 6 অথবা 9 ভগ্নাংশ সংখ্যা ব্যবহার করবে। "Z" ব্যতীত অন্যান্য অফসেটগুলিও গ্রহণযোগ্য। উদাহরণ: |
globalDurationCostPerHour | সামগ্রিক পরিকল্পনার "বিশ্বব্যাপী সময়কাল" হল সমস্ত যানবাহনের প্রাথমিক কার্যকর শুরুর সময় এবং সর্বশেষ কার্যকর শেষ সময়ের মধ্যে পার্থক্য। ব্যবহারকারীরা সেই পরিমাণের জন্য প্রতি ঘন্টায় একটি খরচ নির্ধারণ করতে পারেন যাতে তারা দ্রুততম কাজ সমাপ্তির জন্য অপ্টিমাইজ করতে পারে, উদাহরণস্বরূপ। এই খরচটি |
durationDistanceMatrices[] | মডেলে ব্যবহৃত সময়কাল এবং দূরত্ব ম্যাট্রিক্স নির্দিষ্ট করে। যদি এই ক্ষেত্রটি খালি থাকে, তাহলে ব্যবহারের উদাহরণ:
|
durationDistanceMatrixSrcTags[] | সময়কাল এবং দূরত্ব ম্যাট্রিক্সের উৎস নির্ধারণকারী ট্যাগ; ট্যাগগুলি |
durationDistanceMatrixDstTags[] | সময়কাল এবং দূরত্ব ম্যাট্রিক্সের গন্তব্য নির্ধারণকারী ট্যাগ; ট্যাগগুলি |
transitionAttributes[] | মডেলটিতে ট্রানজিশন বৈশিষ্ট্য যোগ করা হয়েছে। |
shipmentTypeIncompatibilities[] | অসঙ্গত shipment_types এর সেট ( |
shipmentTypeRequirements[] | |
precedenceRules[] | মডেলটিতে প্রয়োগ করা আবশ্যক এমন অগ্রাধিকার নিয়মের সেট। গুরুত্বপূর্ণ : অগ্রাধিকার নিয়ম ব্যবহার করলে সমস্যার আকার সীমিত হয় যা অপ্টিমাইজ করা যেতে পারে। অগ্রাধিকার নিয়ম ব্যবহার করে অনুরোধ করা হলে, যার মধ্যে অনেক চালান অন্তর্ভুক্ত থাকে, তা প্রত্যাখ্যান করা হতে পারে। |
maxActiveVehicles | সক্রিয় যানবাহনের সর্বাধিক সংখ্যা সীমাবদ্ধ করে। একটি যানবাহন তখনই সক্রিয় থাকে যখন তার রুট কমপক্ষে একটি চালান পরিচালনা করে। যেখানে যানবাহনের তুলনায় চালকের সংখ্যা কম এবং যানবাহনের বহর ভিন্ন ভিন্ন হয়, সেখানে রুটের সংখ্যা সীমিত করতে এটি ব্যবহার করা যেতে পারে। অপ্টিমাইজেশনটি তখন ব্যবহারের জন্য যানবাহনের সেরা উপসেট নির্বাচন করবে। অবশ্যই সম্পূর্ণ ইতিবাচক হতে হবে। |
জাহাজে প্রেরিত কাজ
একটি পিকআপ থেকে অন্য একটি ডেলিভারিতে একটি একক পণ্যের চালান। চালানটি সম্পন্ন হিসাবে বিবেচিত হওয়ার জন্য, একটি অনন্য যানবাহনকে তার পিকআপ অবস্থানগুলির একটিতে যেতে হবে (এবং সেই অনুযায়ী তার অতিরিক্ত ক্ষমতা হ্রাস করতে হবে), তারপর পরে তার সরবরাহ অবস্থানগুলির একটিতে যেতে হবে (এবং সেই অনুযায়ী তার অতিরিক্ত ক্ষমতা পুনরায় বৃদ্ধি করতে হবে)।
| JSON উপস্থাপনা |
|---|
{ "displayName": string, "pickups": [ { object ( |
| ক্ষেত্র | |
|---|---|
displayName | চালানের ব্যবহারকারী-নির্ধারিত প্রদর্শন নাম। এটি সর্বাধিক ৬৩ অক্ষর দীর্ঘ হতে পারে এবং UTF-8 অক্ষর ব্যবহার করতে পারে। |
pickups[] | চালানের সাথে সম্পর্কিত পিকআপ বিকল্পগুলির সেট। যদি নির্দিষ্ট না করা থাকে, তাহলে গাড়িটিকে কেবল ডেলিভারির সাথে সম্পর্কিত একটি স্থানে যেতে হবে। |
deliveries[] | চালানের সাথে সম্পর্কিত ডেলিভারি বিকল্পগুলির সেট। যদি নির্দিষ্ট না করা থাকে, তাহলে গাড়িটিকে কেবল পিকআপগুলির সাথে সম্পর্কিত একটি স্থানে যেতে হবে। |
loadDemands | চালানের লোড চাহিদা (যেমন ওজন, আয়তন, প্যালেটের সংখ্যা ইত্যাদি)। মানচিত্রের কীগুলি সংশ্লিষ্ট লোডের ধরণ বর্ণনা করে এমন শনাক্তকারী হওয়া উচিত, আদর্শভাবে ইউনিটগুলিও অন্তর্ভুক্ত করা উচিত। উদাহরণস্বরূপ: "ওজন_কেজি", "ভলিউম_গ্যালন", "প্যালেট_গণনা", ইত্যাদি। যদি কোনও প্রদত্ত কী মানচিত্রে উপস্থিত না হয়, তবে সংশ্লিষ্ট লোডটি শূন্য হিসাবে বিবেচিত হবে। |
allowedVehicleIndices[] | এই চালানটি সম্পাদন করতে পারে এমন যানবাহনের সেট। খালি থাকলে, সমস্ত যানবাহন এটি সম্পাদন করতে পারে। |
costsPerVehicle[] | প্রতিটি গাড়ির মাধ্যমে এই চালানটি সরবরাহ করার সময় যে খরচ হবে তা নির্দিষ্ট করে। যদি নির্দিষ্ট করা থাকে, তাহলে এর মধ্যে যেকোনও একটি থাকতে হবে:
এই খরচগুলি অবশ্যই |
costsPerVehicleIndices[] | যেসব যানবাহনের জন্য |
pickupToDeliveryAbsoluteDetourLimit | পিকআপ থেকে ডেলিভারি পর্যন্ত সবচেয়ে ছোট পথের তুলনায় সর্বোচ্চ পরম ঘুরপথ নির্দিষ্ট করে। যদি নির্দিষ্ট করা থাকে, তাহলে এটি অবশ্যই অ-ঋণাত্মক হতে হবে এবং চালানে কমপক্ষে একটি পিকআপ এবং একটি ডেলিভারি থাকতে হবে। উদাহরণস্বরূপ, নির্বাচিত পিকআপ বিকল্প থেকে সরাসরি নির্বাচিত ডেলিভারি বিকল্পে যেতে এটি সবচেয়ে কম সময়। তারপর যদি একই চালানের ক্ষেত্রে আপেক্ষিক এবং পরম উভয় সীমা নির্দিষ্ট করা থাকে, তাহলে প্রতিটি সম্ভাব্য পিকআপ/ডেলিভারি জোড়ার জন্য আরও সীমাবদ্ধ সীমা ব্যবহার করা হবে। ২০১৭/১০ সালের হিসাবে, ভ্রমণের সময়কাল যানবাহনের উপর নির্ভর না করলেই কেবল বিচ্যুতি সমর্থিত। সেকেন্ডে একটি সময়কাল যার সর্বোচ্চ নয়টি ভগ্নাংশ সংখ্যা ' |
pickupToDeliveryTimeLimit | পিকআপ শুরু থেকে চালানের ডেলিভারি শুরু পর্যন্ত সর্বোচ্চ সময়কাল নির্দিষ্ট করে। যদি নির্দিষ্ট করা থাকে, তাহলে এটি অবশ্যই অ-ঋণাত্মক হতে হবে এবং চালানে কমপক্ষে একটি পিকআপ এবং একটি ডেলিভারি থাকতে হবে। এটি পিকআপ এবং ডেলিভারির জন্য কোন বিকল্পগুলি নির্বাচন করা হয়েছে তার উপর নির্ভর করে না, না গাড়ির গতির উপর। এটি সর্বাধিক ঘুরপথের সীমাবদ্ধতার পাশাপাশি নির্দিষ্ট করা যেতে পারে: সমাধান উভয় স্পেসিফিকেশনকে সম্মান করবে। সেকেন্ডে একটি সময়কাল যার সর্বোচ্চ নয়টি ভগ্নাংশ সংখ্যা ' |
shipmentType | এই চালানের জন্য একটি "টাইপ" নির্দিষ্ট করে এমন খালি স্ট্রিং নেই। এই বৈশিষ্ট্যটি একক ভিজিটের জন্য নির্দিষ্ট করা |
label | এই চালানের জন্য একটি লেবেল নির্দিষ্ট করে। এই লেবেলটি সংশ্লিষ্ট |
ignore | যদি সত্য হয়, তাহলে এই চালানটি এড়িয়ে যান, কিন্তু মডেলটিতে কোনও |
penaltyCost | যদি চালানটি সম্পন্ন না হয়, তাহলে এই জরিমানা রুটের সামগ্রিক খরচের সাথে যোগ করা হয়। একটি চালান সম্পূর্ণ বলে বিবেচিত হবে যদি এর পিকআপ এবং ডেলিভারি বিকল্পগুলির মধ্যে একটি পরিদর্শন করা হয়। মডেলের অন্যান্য সমস্ত খরচ-সম্পর্কিত ক্ষেত্রে ব্যবহৃত একই ইউনিটে খরচ প্রকাশ করা যেতে পারে এবং অবশ্যই ধনাত্মক হতে হবে। গুরুত্বপূর্ণ : যদি এই জরিমানা নির্দিষ্ট না করা থাকে, তাহলে এটি অসীম বলে বিবেচিত হবে, অর্থাৎ চালানটি সম্পন্ন করতে হবে। |
pickupToDeliveryRelativeDetourLimit | পিকআপ থেকে ডেলিভারি পর্যন্ত সবচেয়ে ছোট পথের তুলনায় সর্বাধিক আপেক্ষিক ঘুরপথের সময় নির্দিষ্ট করে। যদি নির্দিষ্ট করা থাকে, তাহলে এটি অবশ্যই অ-ঋণাত্মক হতে হবে এবং চালানে কমপক্ষে একটি পিকআপ এবং একটি ডেলিভারি থাকতে হবে। উদাহরণস্বরূপ, নির্বাচিত পিকআপ বিকল্প থেকে সরাসরি নির্বাচিত ডেলিভারি বিকল্পে যেতে এটি সবচেয়ে কম সময়। তারপর যদি একই চালানের ক্ষেত্রে আপেক্ষিক এবং পরম উভয় সীমা নির্দিষ্ট করা থাকে, তাহলে প্রতিটি সম্ভাব্য পিকআপ/ডেলিভারি জোড়ার জন্য আরও সীমাবদ্ধ সীমা ব্যবহার করা হবে। ২০১৭/১০ সালের হিসাবে, ভ্রমণের সময়কাল যানবাহনের উপর নির্ভর না করলেই কেবল বিচ্যুতি সমর্থিত। |
ভিজিটরিকোয়েস্ট
একটি যানবাহনের মাধ্যমে পরিদর্শনের অনুরোধ: এর একটি ভূ-অবস্থান (অথবা দুটি, নীচে দেখুন), খোলার এবং বন্ধ হওয়ার সময় টাইম উইন্ডো দ্বারা প্রতিনিধিত্ব করা হয় এবং পরিষেবার সময়কাল (গাড়িটি পৌঁছানোর পরে পণ্য তোলা বা নামানোর জন্য ব্যয় করা সময়) থাকে।
| JSON উপস্থাপনা |
|---|
{ "arrivalLocation": { object ( |
| ক্ষেত্র | |
|---|---|
arrivalLocation | এই |
arrivalWaypoint | এই |
departureLocation | এই |
departureWaypoint | এই |
tags[] | ভিজিট রিকোয়েস্টের সাথে সংযুক্ত ট্যাগগুলি নির্দিষ্ট করে। খালি বা ডুপ্লিকেট স্ট্রিং অনুমোদিত নয়। |
timeWindows[] | সময়সূচী যা কোনও পরিদর্শনের সময় আগমনের সময় সীমাবদ্ধ করে। মনে রাখবেন যে কোনও যানবাহন আগমনের সময়সূচীর বাইরে ছেড়ে যেতে পারে, অর্থাৎ আগমনের সময় + সময়কাল কোনও সময়সূচীর মধ্যে থাকা প্রয়োজন হয় না। গাড়িটি সময়ের জানালা অবশ্যই বিচ্ছিন্ন হতে হবে, অর্থাৎ কোনও সময় জানালা অন্যটির সাথে ওভারল্যাপ করা উচিত নয় বা সংলগ্ন হওয়া উচিত নয় এবং সেগুলি ক্রমবর্ধমান ক্রমে থাকা উচিত। |
duration | পরিদর্শনের সময়কাল, অর্থাৎ আগমন এবং প্রস্থানের মধ্যে গাড়ির ব্যয় করা সময় (সম্ভাব্য অপেক্ষার সময়ের সাথে যোগ করা হবে; সময় দেখুন সেকেন্ডে একটি সময়কাল যার সর্বোচ্চ নয়টি ভগ্নাংশ সংখ্যা ' |
cost | যানবাহন রুটে এই ভিজিট রিকোয়েস্টটি সার্ভিস করার খরচ। এটি প্রতিটি বিকল্প পিকআপ বা চালানের ডেলিভারির জন্য বিভিন্ন খরচ পরিশোধ করতে ব্যবহার করা যেতে পারে। এই খরচ |
loadDemands | এই ভিজিট রিকোয়েস্টের লোড ডিমান্ড। এটি ঠিক |
visitTypes[] | পরিদর্শনের ধরণ নির্দিষ্ট করে। এটি একটি যানবাহনের এই পরিদর্শন সম্পন্ন করার জন্য অতিরিক্ত সময় বরাদ্দ করতে ব্যবহার করা যেতে পারে ( একটি ধরণ কেবল একবারই দেখা দিতে পারে। |
label | এই |
avoidUTurns | এই স্থানে ড্রাইভিং রুটে ইউ-টার্ন এড়ানো উচিত কিনা তা নির্দিষ্ট করে। ইউ-টার্ন এড়ানো সর্বোত্তম প্রচেষ্টা এবং সম্পূর্ণ এড়ানোর নিশ্চয়তা নেই। এটি একটি পরীক্ষামূলক বৈশিষ্ট্য এবং আচরণ পরিবর্তন সাপেক্ষে। পরীক্ষামূলক: আরও বিস্তারিত জানার জন্য https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request দেখুন। |
অক্ষাংশ
একটি বস্তু যা একটি অক্ষাংশ/দ্রাঘিমাংশ জোড়া প্রতিনিধিত্ব করে। এটি ডিগ্রি অক্ষাংশ এবং ডিগ্রি দ্রাঘিমাংশ প্রতিনিধিত্ব করার জন্য দ্বিগুণের জোড়া হিসাবে প্রকাশ করা হয়। অন্যথায় নির্দিষ্ট না করা হলে, এই বস্তুটিকে WGS84 মান মেনে চলতে হবে। মানগুলি স্বাভাবিক সীমার মধ্যে থাকতে হবে।
| JSON উপস্থাপনা |
|---|
{ "latitude": number, "longitude": number } |
| ক্ষেত্র | |
|---|---|
latitude | ডিগ্রীতে অক্ষাংশ। এটি অবশ্যই [-৯০.০, +৯০.০] পরিসরে হতে হবে। |
longitude | ডিগ্রীতে দ্রাঘিমাংশ। এটি অবশ্যই [-১৮০.০, +১৮০.০] পরিসরে হতে হবে। |
ওয়েপয়েন্ট
একটি ওয়েপয়েন্টকে ধারণ করে। ওয়েপয়েন্টগুলি VisitRequests-এর আগমন এবং প্রস্থানের স্থান এবং যানবাহনের শুরু এবং শেষের স্থান চিহ্নিত করে।
| JSON উপস্থাপনা |
|---|
{ "sideOfRoad": boolean, "vehicleStopover": boolean, // Union field |
| ক্ষেত্র | |
|---|---|
sideOfRoad | ঐচ্ছিক। নির্দেশ করে যে এই ওয়েপয়েন্টের অবস্থানটি রাস্তার একটি নির্দিষ্ট পাশে গাড়ি থামার জন্য পছন্দের। যখন আপনি এই মানটি সেট করবেন, তখন রুটটি অবস্থানের মধ্য দিয়ে যাবে যাতে গাড়িটি রাস্তার সেই পাশে থামতে পারে যেখানে অবস্থানটি রাস্তার কেন্দ্র থেকে পক্ষপাতী। এই বিকল্পটি 'হাঁটা' ভ্রমণ মোডের জন্য কাজ করে না। |
vehicleStopover | নির্দেশ করে যে ওয়েপয়েন্টটি যানবাহন থামানোর জন্য তৈরি, যেখানে উদ্দেশ্য হল গাড়ি তোলা বা নামানো। এই বিকল্পটি শুধুমাত্র 'ড্রাইভিং' ভ্রমণ মোডের জন্য কাজ করে এবং যখন 'locationType' 'location' হয়। পরীক্ষামূলক: ভবিষ্যতে এই ক্ষেত্রের আচরণ বা অস্তিত্ব পরিবর্তিত হতে পারে। |
Union ক্ষেত্র location_type । একটি অবস্থান উপস্থাপনের বিভিন্ন উপায়। location_type নিম্নলিখিতগুলির মধ্যে কেবল একটি হতে পারে: | |
location | ভৌগোলিক স্থানাঙ্ক ব্যবহার করে নির্দিষ্ট করা একটি বিন্দু, যার মধ্যে একটি ঐচ্ছিক শিরোনামও অন্তর্ভুক্ত। |
placeId | ওয়েপয়েন্টের সাথে সম্পর্কিত POI স্থান আইডি। VisitRequest-এর আগমন বা প্রস্থানের স্থান নির্দিষ্ট করার জন্য স্থান আইডি ব্যবহার করার সময়, এমন একটি স্থান আইডি ব্যবহার করুন যা স্থানটিতে নেভিগেশনের জন্য একটি LatLng অবস্থান নির্ধারণ করার জন্য যথেষ্ট নির্দিষ্ট। উদাহরণস্বরূপ, একটি ভবনের প্রতিনিধিত্বকারী স্থান আইডি উপযুক্ত, তবে রাস্তার প্রতিনিধিত্বকারী স্থান আইডি নিরুৎসাহিত করা হয়। |
স্থান
একটি অবস্থান (একটি ভৌগোলিক বিন্দু এবং একটি ঐচ্ছিক শিরোনাম) ধারণ করে।
| JSON উপস্থাপনা |
|---|
{
"latLng": {
object ( |
| ক্ষেত্র | |
|---|---|
latLng | ওয়েপয়েন্টের ভৌগোলিক স্থানাঙ্ক। |
heading | কম্পাস হেডিং ট্র্যাফিক প্রবাহের দিকের সাথে সম্পর্কিত। এই মানটি পিকআপ এবং ড্রপ-অফের জন্য ব্যবহার করা রাস্তার পাশ নির্দিষ্ট করতে ব্যবহৃত হয়। হেডিং মান 0 থেকে 360 পর্যন্ত হতে পারে, যেখানে 0 উত্তরের হেডিং নির্দেশ করে, 90 পূর্বের হেডিং নির্দেশ করে, ইত্যাদি। |
টাইমউইন্ডো
সময়সূচী কোনও ইভেন্টের সময়কে সীমাবদ্ধ করে, যেমন কোনও পরিদর্শনে আগমনের সময়, অথবা কোনও গাড়ির শুরু এবং শেষের সময়।
হার্ড টাইম উইন্ডো বাউন্ড, startTime এবং endTime , ইভেন্টের প্রথম এবং সর্বশেষ সময়কে কার্যকর করে, যেমন startTime <= event_time <= endTime । সফট টাইম উইন্ডোর নিম্ন সীমা, softStartTime , softStartTime এ বা তার পরে ইভেন্টটি ঘটতে পছন্দ প্রকাশ করে, যা softStartTime-এর আগে ইভেন্টটি কতক্ষণ আগে ঘটে তার সমানুপাতিক খরচ বহন করে। সফট টাইম উইন্ডোর উপরের সীমা, softEndTime , softEndTime আগে বা তার আগে ইভেন্টটি ঘটতে পছন্দ প্রকাশ করে, যা softEndTime পরে ইভেন্টটি কতক্ষণ পরে ঘটে তার সমানুপাতিক খরচ বহন করে। startTime , endTime , softStartTime এবং softEndTime বিশ্বব্যাপী সময় সীমার মধ্যে থাকা উচিত ( ShipmentModel.global_start_time এবং ShipmentModel.global_end_time দেখুন) এবং নিম্নলিখিত বিষয়গুলি মেনে চলা উচিত:
0 <= `startTime` <= `endTime` and
0 <= `startTime` <= `softStartTime` and
0 <= `softEndTime` <= `endTime`.
| JSON উপস্থাপনা |
|---|
{ "startTime": string, "endTime": string, "softStartTime": string, "softEndTime": string, "costPerHourBeforeSoftStartTime": number, "costPerHourAfterSoftEndTime": number } |
| ক্ষেত্র | |
|---|---|
startTime | হার্ড টাইম উইন্ডো শুরুর সময়। যদি নির্দিষ্ট না করা থাকে তবে এটি RFC 3339 ব্যবহার করে, যেখানে উৎপন্ন আউটপুট সর্বদা Z-স্বাভাবিক হবে এবং 0, 3, 6 অথবা 9 ভগ্নাংশ সংখ্যা ব্যবহার করবে। "Z" ব্যতীত অন্যান্য অফসেটগুলিও গ্রহণযোগ্য। উদাহরণ: |
endTime | হার্ড টাইম উইন্ডোর শেষ সময়। যদি নির্দিষ্ট না করা থাকে তবে এটি RFC 3339 ব্যবহার করে, যেখানে উৎপন্ন আউটপুট সর্বদা Z-স্বাভাবিক হবে এবং 0, 3, 6 অথবা 9 ভগ্নাংশ সংখ্যা ব্যবহার করবে। "Z" ব্যতীত অন্যান্য অফসেটগুলিও গ্রহণযোগ্য। উদাহরণ: |
softStartTime | টাইম উইন্ডোর নরম শুরুর সময়। RFC 3339 ব্যবহার করে, যেখানে উৎপন্ন আউটপুট সর্বদা Z-স্বাভাবিক হবে এবং 0, 3, 6 অথবা 9 ভগ্নাংশ সংখ্যা ব্যবহার করবে। "Z" ব্যতীত অন্যান্য অফসেটগুলিও গ্রহণযোগ্য। উদাহরণ: |
softEndTime | টাইম উইন্ডোর নরম শেষ সময়। RFC 3339 ব্যবহার করে, যেখানে উৎপন্ন আউটপুট সর্বদা Z-স্বাভাবিক হবে এবং 0, 3, 6 অথবা 9 ভগ্নাংশ সংখ্যা ব্যবহার করবে। "Z" ব্যতীত অন্যান্য অফসেটগুলিও গ্রহণযোগ্য। উদাহরণ: |
costPerHourBeforeSoftStartTime | যদি ঘটনাটি softStartTime এর আগে ঘটে, তাহলে মডেলের অন্যান্য খরচের সাথে প্রতি ঘন্টার খরচ যোগ করা হবে, যা গণনা করা হবে: এই খরচটি অবশ্যই ধনাত্মক হতে হবে, এবং ক্ষেত্রটি কেবল তখনই সেট করা যাবে যদি softStartTime সেট করা থাকে। |
costPerHourAfterSoftEndTime | এই খরচটি অবশ্যই ধনাত্মক হতে হবে, এবং ক্ষেত্রটি কেবল তখনই সেট করা যাবে যদি |
যানবাহন
একটি শিপমেন্ট সমস্যার মধ্যে একটি গাড়ির মডেল তৈরি করে। একটি শিপমেন্ট সমস্যা সমাধান করলে এই গাড়ির জন্য startLocation থেকে শুরু করে endLocation এ শেষ হওয়া একটি রুট তৈরি হবে। একটি রুট হল পরিদর্শনের একটি ক্রম ( ShipmentRoute দেখুন)।
| JSON উপস্থাপনা |
|---|
{ "displayName": string, "travelMode": enum ( |
| ক্ষেত্র | |
|---|---|
displayName | গাড়ির ব্যবহারকারী-নির্ধারিত প্রদর্শন নাম। এটি সর্বোচ্চ ৬৩ অক্ষর দীর্ঘ হতে পারে এবং UTF-8 অক্ষর ব্যবহার করতে পারে। |
travelMode | যানবাহনের ব্যবহারযোগ্য রাস্তা এবং গতিকে প্রভাবিত করে এমন ভ্রমণ মোড। আরও দেখুন |
routeModifiers | প্রদত্ত যানবাহনের জন্য রুট গণনার পদ্ধতিকে প্রভাবিত করে এমন শর্তগুলির একটি সেট। |
startLocation | কোনও শিপমেন্ট তোলার আগে গাড়িটি যে ভৌগোলিক অবস্থানে স্টার্ট নেয়। যদি নির্দিষ্ট না করা থাকে, তাহলে গাড়িটি তার প্রথম পিকআপ থেকেই স্টার্ট নেয়। যদি শিপমেন্ট মডেলে সময়কাল এবং দূরত্বের ম্যাট্রিক্স থাকে, তাহলে |
startWaypoint | ওয়েপয়েন্ট এমন একটি ভৌগোলিক অবস্থানকে প্রতিনিধিত্ব করে যেখানে গাড়িটি কোনও শিপমেন্ট তোলার আগে স্টার্ট নেয়। যদি |
endLocation | শেষ |
endWaypoint | ওয়েপয়েন্ট এমন একটি ভৌগোলিক অবস্থানকে প্রতিনিধিত্ব করে যেখানে গাড়িটি তার শেষ |
startTags[] | গাড়ির রুটের শুরুতে সংযুক্ত ট্যাগগুলি নির্দিষ্ট করে। খালি বা ডুপ্লিকেট স্ট্রিং অনুমোদিত নয়। |
endTags[] | গাড়ির রুটের শেষে সংযুক্ত ট্যাগগুলি নির্দিষ্ট করে। খালি বা ডুপ্লিকেট স্ট্রিং অনুমোদিত নয়। |
startTimeWindows[] | যেসব সময়সীমার মধ্যে গাড়িটি তার যাত্রা শুরুর স্থান থেকে প্রস্থান করতে পারে। সেগুলো অবশ্যই বিশ্বব্যাপী সময়সীমার মধ্যে থাকতে হবে ( একই পুনরাবৃত্ত ক্ষেত্রের অন্তর্গত সময় উইন্ডোগুলি অবশ্যই বিচ্ছিন্ন হতে হবে, অর্থাৎ কোনও সময় উইন্ডো অন্যটির সাথে ওভারল্যাপ করতে বা সংলগ্ন হতে পারবে না এবং সেগুলি কালানুক্রমিক ক্রমে থাকতে হবে। |
endTimeWindows[] | গাড়িটি তার শেষ অবস্থানে পৌঁছাতে পারে এমন সময় উইন্ডো। সেগুলি অবশ্যই বিশ্বব্যাপী সময় সীমার মধ্যে থাকতে হবে ( একই পুনরাবৃত্ত ক্ষেত্রের অন্তর্গত সময় উইন্ডোগুলি অবশ্যই বিচ্ছিন্ন হতে হবে, অর্থাৎ কোনও সময় উইন্ডো অন্যটির সাথে ওভারল্যাপ করতে বা সংলগ্ন হতে পারবে না এবং সেগুলি কালানুক্রমিক ক্রমে থাকতে হবে। |
unloadingPolicy | গাড়িতে আনলোডিং নীতি প্রয়োগ করা হয়েছে। |
loadLimits | গাড়ির ধারণক্ষমতা (উদাহরণস্বরূপ ওজন, আয়তন, প্যালেটের সংখ্যা)। মানচিত্রের চাবিগুলি হল লোডের ধরণের শনাক্তকারী, যা |
costPerHour | যানবাহনের খরচ: সমস্ত খরচ যোগ করে এবং গাড়ির রুটের প্রতি ঘন্টা খরচ। এই খরচ রুটের মোট সময়ের উপর প্রযোজ্য, এবং এতে ভ্রমণের সময়, অপেক্ষার সময় এবং পরিদর্শনের সময় অন্তর্ভুক্ত। শুধুমাত্র |
costPerTraveledHour | গাড়ির রুটের প্রতি ঘন্টা ভ্রমণের খরচ। এই খরচ শুধুমাত্র রুটের ভ্রমণের সময়ের উপর প্রযোজ্য (অর্থাৎ, |
costPerKilometer | গাড়ির রুটের প্রতি কিলোমিটারের খরচ। এই খরচ |
fixedCost | এই গাড়িটি যদি কোনও চালান পরিচালনার জন্য ব্যবহৃত হয় তবে নির্দিষ্ট খরচ প্রযোজ্য। |
usedIfRouteIsEmpty | এই ক্ষেত্রটি কেবল তখনই প্রযোজ্য যখন তাদের রুট কোনও চালান সরবরাহ করে না। এটি নির্দেশ করে যে এই ক্ষেত্রে গাড়িটি ব্যবহৃত হিসাবে বিবেচনা করা উচিত কিনা। যদি সত্য হয়, তাহলে গাড়িটি তার শুরু থেকে শেষ অবস্থানে যায়, এমনকি যদি এটি কোনও চালান সরবরাহ না করে, এবং এর শুরু --> শেষ ভ্রমণের ফলে সময় এবং দূরত্বের খরচ বিবেচনা করা হয়। অন্যথায়, এটি তার শুরু থেকে শেষ অবস্থানে ভ্রমণ করে না এবং এই গাড়ির জন্য কোনও |
routeDurationLimit | গাড়ির রুটের মোট সময়কালের উপর সীমা প্রযোজ্য। একটি প্রদত্ত |
travelDurationLimit | গাড়ির রুটের ভ্রমণের সময়কালের উপর প্রযোজ্য সীমা। একটি প্রদত্ত |
routeDistanceLimit | গাড়ির রুটের মোট দূরত্বের উপর সীমা প্রযোজ্য। একটি প্রদত্ত |
extraVisitDurationForVisitType | visitTypes স্ট্রিং থেকে durations পর্যন্ত একটি মানচিত্র নির্দিষ্ট করে। নির্দিষ্ট যদি কোনও ভিজিট রিকোয়েস্ট একাধিক ধরণের হয়, তাহলে মানচিত্রে প্রতিটি ধরণের জন্য একটি সময়কাল যোগ করা হবে। |
breakRule | এই গাড়িতে প্রয়োগ করা বিরতির সময়সূচী বর্ণনা করে। খালি থাকলে, এই গাড়ির জন্য কোনও বিরতি নির্ধারণ করা হবে না। |
label | এই গাড়ির জন্য একটি লেবেল নির্দিষ্ট করে। প্রতিক্রিয়ায় এই লেবেলটি সংশ্লিষ্ট |
ignore | যদি সত্য হয়, তাহলে যদি যদি |
travelDurationMultiple | এই গাড়ির ভ্রমণের সময় বাড়াতে বা কমাতে ব্যবহার করা যেতে পারে এমন একটি গুণনীয়ক নির্দিষ্ট করে। উদাহরণস্বরূপ, এটি 2.0 তে সেট করার অর্থ হল এই গাড়িটি ধীর গতির এবং এতে ভ্রমণের সময় স্ট্যান্ডার্ড যানবাহনের দ্বিগুণ। এই গুণিতকটি ভ্রমণের সময়কালকে প্রভাবিত করে না। যদি সতর্কতা: এই গুণিতকটি প্রয়োগ করার পরে ভ্রমণের সময়গুলি নিকটতম সেকেন্ডে পূর্ণ করা হবে তবে কোনও সংখ্যাসূচক ক্রিয়াকলাপ সম্পাদন করার আগে, সুতরাং, একটি ছোট গুণিতকের ফলে নির্ভুলতা নষ্ট হতে পারে। নিচে |
ভ্রমণ মোড
যানবাহন ব্যবহার করতে পারে এমন ভ্রমণের ধরণ।
এগুলি গুগল ম্যাপস প্ল্যাটফর্ম রুটস এপিআই ভ্রমণ মোডের একটি উপসেট হওয়া উচিত, দেখুন: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteTravelMode
দ্রষ্টব্য: WALKING রুটগুলি বিটাতে রয়েছে এবং কখনও কখনও পরিষ্কার ফুটপাত বা পথচারী পথ অনুপস্থিত থাকতে পারে। আপনার অ্যাপে প্রদর্শিত সমস্ত হাঁটার রুটের জন্য আপনাকে ব্যবহারকারীকে এই সতর্কতাটি প্রদর্শন করতে হবে।
| এনামস | |
|---|---|
TRAVEL_MODE_UNSPECIFIED | অনির্দিষ্ট ভ্রমণ মোড, DRIVING এর সমতুল্য। |
DRIVING | ড্রাইভিং দিকনির্দেশনার সাথে সম্পর্কিত ভ্রমণ মোড (গাড়ি, ...)। |
WALKING | হাঁটার দিকনির্দেশের সাথে সঙ্গতিপূর্ণ ভ্রমণ মোড। |
রুটমডিফায়ার
যানবাহনের রুট গণনা করার সময় পূরণ করার জন্য ঐচ্ছিক শর্তগুলির একটি সেটকে অন্তর্ভুক্ত করে। এটি Google Maps প্ল্যাটফর্ম Routes Preferred API-তে RouteModifiers এর অনুরূপ; দেখুন: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers ।
| JSON উপস্থাপনা |
|---|
{ "avoidTolls": boolean, "avoidHighways": boolean, "avoidFerries": boolean, "avoidIndoor": boolean } |
| ক্ষেত্র | |
|---|---|
avoidTolls | যুক্তিসঙ্গত ক্ষেত্রে টোল রাস্তা এড়ানো উচিত কিনা তা নির্দিষ্ট করে। টোল রাস্তা নেই এমন রুটগুলিকে অগ্রাধিকার দেওয়া হবে। শুধুমাত্র মোটরচালিত ভ্রমণ মোডের ক্ষেত্রে প্রযোজ্য। |
avoidHighways | যুক্তিসঙ্গত ক্ষেত্রে হাইওয়ে এড়িয়ে চলা উচিত কিনা তা নির্দিষ্ট করে। হাইওয়ে ছাড়া রুটগুলিকে অগ্রাধিকার দেওয়া হবে। শুধুমাত্র মোটরচালিত ভ্রমণ মোডের ক্ষেত্রে প্রযোজ্য। |
avoidFerries | যুক্তিসঙ্গতভাবে ফেরি এড়ানো উচিত কিনা তা নির্দিষ্ট করে। ফেরি দ্বারা ভ্রমণের অনুমতি নেই এমন রুটগুলিকে অগ্রাধিকার দেওয়া হবে। শুধুমাত্র মোটরচালিত ভ্রমণ মোডের ক্ষেত্রে প্রযোজ্য। |
avoidIndoor | ঐচ্ছিক। যুক্তিসঙ্গত স্থানে অভ্যন্তরীণ নেভিগেট এড়ানো উচিত কিনা তা নির্দিষ্ট করে। অভ্যন্তরীণ নেভিগেট না থাকা রুটগুলিকে অগ্রাধিকার দেওয়া হবে। শুধুমাত্র |
আনলোডিং পলিসি
কিভাবে একটি যানবাহন আনলোড করা যাবে তার নীতি। শুধুমাত্র পিকআপ এবং ডেলিভারি উভয় ধরণের শিপমেন্টের ক্ষেত্রে প্রযোজ্য।
unloadingPolicy নির্বিশেষে রুটের যেকোনো জায়গায় অন্যান্য চালান ঘটতে পারে।
| এনামস | |
|---|---|
UNLOADING_POLICY_UNSPECIFIED | অনির্দিষ্ট আনলোডিং নীতি; ডেলিভারিগুলি অবশ্যই সংশ্লিষ্ট পিকআপের পরেই হতে হবে। |
LAST_IN_FIRST_OUT | ডেলিভারি অবশ্যই পিকআপের বিপরীত ক্রমে করতে হবে। |
FIRST_IN_FIRST_OUT | ডেলিভারিগুলি পিকআপের মতো একই ক্রমে হতে হবে |
লোডলিমিট
একটি যানবাহনের জন্য প্রযোজ্য লোড সীমা নির্ধারণ করে, যেমন "এই ট্রাকটি কেবল 3500 কেজি পর্যন্ত বহন করতে পারে"। loadLimits দেখুন।
| JSON উপস্থাপনা |
|---|
{ "softMaxLoad": string, "costPerUnitAboveSoftMax": number, "startLoadInterval": { object ( |
| ক্ষেত্র | |
|---|---|
softMaxLoad | লোডের একটি নরম সীমা। |
costPerUnitAboveSoftMax | যদি এই গাড়ির রুটে লোড কখনও |
startLoadInterval | রুটের শুরুতে গাড়ির গ্রহণযোগ্য লোড ব্যবধান। |
endLoadInterval | রুটের শেষে গাড়ির গ্রহণযোগ্য লোড ব্যবধান। |
maxLoad | সর্বোচ্চ গ্রহণযোগ্য পরিমাণ লোড। |
costPerKilometer | এই গাড়ির জন্য এক ইউনিট লোড এক কিলোমিটারের বেশি সরানোর খরচ। এটি জ্বালানি খরচের জন্য একটি প্রক্সি হিসাবে ব্যবহার করা যেতে পারে: যদি লোডটি একটি ওজন হয় (নিউটনে), তাহলে লোড*কিলোমিটারের একটি শক্তির মাত্রা থাকে। পরীক্ষামূলক: আরও বিস্তারিত জানার জন্য https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request দেখুন। |
costPerTraveledHour | এই গাড়ির জন্য এক ঘন্টার মধ্যে এক ইউনিট লোড সহ ভ্রমণের খরচ। পরীক্ষামূলক: আরও বিস্তারিত জানার জন্য https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request দেখুন। |
ব্যবধান
গ্রহণযোগ্য লোড পরিমাণের ব্যবধান।
| JSON উপস্থাপনা |
|---|
{ "min": string, "max": string } |
| ক্ষেত্র | |
|---|---|
min | সর্বনিম্ন গ্রহণযোগ্য লোড। ≥ 0 হতে হবে। যদি উভয়ই নির্দিষ্ট করা থাকে, তাহলে |
max | সর্বোচ্চ গ্রহণযোগ্য লোড। অবশ্যই ≥ 0 হতে হবে। যদি নির্দিষ্ট না করা থাকে, তাহলে এই বার্তা দ্বারা সর্বোচ্চ লোড অবাধ। যদি উভয়ই নির্দিষ্ট করা থাকে, তাহলে |
লোড খরচ
একটি Transition সময় এক ইউনিট লোড সরানোর খরচ। একটি প্রদত্ত লোডের জন্য, খরচ হল দুটি অংশের সমষ্টি:
- সর্বনিম্ন (লোড,
loadThreshold) *costPerUnitBelowThreshold - সর্বোচ্চ(০, লোড -
loadThreshold) *costPerUnitAboveThreshold
এই খরচের সাথে, সমাধানগুলি প্রথমে উচ্চ চাহিদা সরবরাহ করতে পছন্দ করে, অথবা সমতুল্যভাবে উচ্চ চাহিদাগুলি শেষ পর্যন্ত পিকআপ করতে পছন্দ করে। উদাহরণস্বরূপ, যদি কোনও যানবাহনে
load_limit {
key: "weight"
value {
costPerKilometer {
loadThreshold: 15
costPerUnitBelowThreshold: 2.0
costPerUnitAboveThreshold: 10.0
}
}
}
এবং এর রুট হল শুরু, পিকআপ, পিকআপ, ডেলিভারি, ডেলিভারি, ট্রানজিশন সহ শেষ:
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 20 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
তাহলে এই LoadCost খরচ হবে (cost_below * load_below * kilometers + cost_above * load_above * kms)
- রূপান্তর ০: ০.০
- রূপান্তর ১: ২.০ * ১০ * ১.০ + ১০.০ * ০ * ১.০ = ২০.০
- রূপান্তর ২: ২.০ * ১৫ * ১.০ + ১০.০ * (২০ - ১৫) * ১.০ = ৮০.০
- রূপান্তর ৩: ২.০ * ১০ * ১.০ + ১০.০ * ০ * ১.০ = ২০.০
- রূপান্তর ৪: ০.০
তাহলে রুটে LoadCost হল ১২০.০।
তবে, যদি রুটটি শুরু, পিকআপ, ডেলিভারি, পিকআপ, ডেলিভারি, ট্রানজিশন সহ শেষ হয়:
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
তাহলে এই LoadCost খরচ হল
- রূপান্তর ০: ০.০
- transition 1: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- transition 2: 0.0
- transition 3: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- transition 4: 0.0
Here the LoadCost over the route is 40.0.
LoadCost makes solutions with heavy-loaded transitions more expensive.
Experimental: See https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request for more details.
| JSON representation |
|---|
{ "loadThreshold": string, "costPerUnitBelowThreshold": number, "costPerUnitAboveThreshold": number } |
| ক্ষেত্র | |
|---|---|
loadThreshold | Amount of load above which the cost of moving a unit of load changes from costPerUnitBelowThreshold to costPerUnitAboveThreshold. Must be >= 0. |
costPerUnitBelowThreshold | Cost of moving a unit of load, for each unit between 0 and threshold. Must be a finite value, and >= 0. |
costPerUnitAboveThreshold | Cost of moving a unit of load, for each unit above threshold. In the special case threshold = 0, this is a fixed cost per unit. Must be a finite value, and >= 0. |
DurationLimit
A limit defining a maximum duration of the route of a vehicle. It can be either hard or soft.
When a soft limit field is defined, both the soft max threshold and its associated cost must be defined together.
| JSON representation |
|---|
{ "maxDuration": string, "softMaxDuration": string, "quadraticSoftMaxDuration": string, "costPerHourAfterSoftMax": number, "costPerSquareHourAfterQuadraticSoftMax": number } |
| ক্ষেত্র | |
|---|---|
maxDuration | A hard limit constraining the duration to be at most maxDuration. A duration in seconds with up to nine fractional digits, ending with ' |
softMaxDuration | A soft limit not enforcing a maximum duration limit, but when violated makes the route incur a cost. This cost adds up to other costs defined in the model, with the same unit. If defined, A duration in seconds with up to nine fractional digits, ending with ' |
quadraticSoftMaxDuration | A soft limit not enforcing a maximum duration limit, but when violated makes the route incur a cost, quadratic in the duration. This cost adds up to other costs defined in the model, with the same unit. If defined, A duration in seconds with up to nine fractional digits, ending with ' |
costPerHourAfterSoftMax | Cost per hour incurred if the The cost must be nonnegative. |
costPerSquareHourAfterQuadraticSoftMax | Cost per square hour incurred if the The additional cost is 0 if the duration is under the threshold, otherwise the cost depends on the duration as follows: The cost must be nonnegative. |
DistanceLimit
A limit defining a maximum distance which can be traveled. It can be either hard or soft.
If a soft limit is defined, both softMaxMeters and costPerKilometerAboveSoftMax must be defined and be nonnegative.
| JSON representation |
|---|
{ "maxMeters": string, "softMaxMeters": string, "costPerKilometerBelowSoftMax": number, "costPerKilometerAboveSoftMax": number } |
| ক্ষেত্র | |
|---|---|
maxMeters | A hard limit constraining the distance to be at most maxMeters. The limit must be nonnegative. |
softMaxMeters | A soft limit not enforcing a maximum distance limit, but when violated results in a cost which adds up to other costs defined in the model, with the same unit. If defined softMaxMeters must be less than maxMeters and must be nonnegative. |
costPerKilometerBelowSoftMax | Cost per kilometer incurred, increasing up to This cost is not supported in |
costPerKilometerAboveSoftMax | Cost per kilometer incurred if distance is above The cost must be nonnegative. |
BreakRule
Rules to generate time breaks for a vehicle (eg lunch breaks). A break is a contiguous period of time during which the vehicle remains idle at its current position and cannot perform any visit. A break may occur:
- during the travel between two visits (which includes the time right before or right after a visit, but not in the middle of a visit), in which case it extends the corresponding transit time between the visits,
- or before the vehicle start (the vehicle may not start in the middle of a break), in which case it does not affect the vehicle start time.
- or after the vehicle end (ditto, with the vehicle end time).
| JSON representation |
|---|
{ "breakRequests": [ { object ( |
| ক্ষেত্র | |
|---|---|
breakRequests[] | Sequence of breaks. See the |
frequencyConstraints[] | Several |
BreakRequest
The sequence of breaks (ie their number and order) that apply to each vehicle must be known beforehand. The repeated BreakRequest s define that sequence, in the order in which they must occur. Their time windows ( earliestStartTime / latestStartTime ) may overlap, but they must be compatible with the order (this is checked).
| JSON representation |
|---|
{ "earliestStartTime": string, "latestStartTime": string, "minDuration": string } |
| ক্ষেত্র | |
|---|---|
earliestStartTime | Required. Lower bound (inclusive) on the start of the break. Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: |
latestStartTime | Required. Upper bound (inclusive) on the start of the break. Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: |
minDuration | Required. Minimum duration of the break. Must be positive. A duration in seconds with up to nine fractional digits, ending with ' |
FrequencyConstraint
One may further constrain the frequency and duration of the breaks specified above, by enforcing a minimum break frequency, such as "There must be a break of at least 1 hour every 12 hours". Assuming that this can be interpreted as "Within any sliding time window of 12h, there must be at least one break of at least one hour", that example would translate to the following FrequencyConstraint :
{
minBreakDuration { seconds: 3600 } # 1 hour.
maxInterBreakDuration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
The timing and duration of the breaks in the solution will respect all such constraints, in addition to the time windows and minimum durations already specified in the BreakRequest .
A FrequencyConstraint may in practice apply to non-consecutive breaks. For example, the following schedule honors the "1h every 12h" example:
04:00 vehicle start
.. performing travel and visits ..
09:00 1 hour break
10:00 end of the break
.. performing travel and visits ..
12:00 20-min lunch break
12:20 end of the break
.. performing travel and visits ..
21:00 1 hour break
22:00 end of the break
.. performing travel and visits ..
23:59 vehicle end
| JSON representation |
|---|
{ "minBreakDuration": string, "maxInterBreakDuration": string } |
| ক্ষেত্র | |
|---|---|
minBreakDuration | Required. Minimum break duration for this constraint. Nonnegative. See description of A duration in seconds with up to nine fractional digits, ending with ' |
maxInterBreakDuration | Required. Maximum allowed span of any interval of time in the route that does not include at least partially a break of A duration in seconds with up to nine fractional digits, ending with ' |
উদ্দেশ্য
Objectives replace the cost model completely, and are therefore incompatible with pre-existing costs. Each objective maps to a number of pre-defined costs for, eg, vehicles, shipments or transition attributes.
Experimental: See https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request for more details.
| JSON representation |
|---|
{
"type": enum ( |
| ক্ষেত্র | |
|---|---|
type | The type of the objective. |
weight | How much this objective should count relatively to the others. This can be any non-negative number, weights do not have to sum to 1. Weights default to 1.0. |
আদর্শ
The objective type that will be mapped to a set of costs.
| Enums | |
|---|---|
DEFAULT | A default set of costs will be used, to ensure a reasonable solution. Note: this objective can be used on its own, but will also always be added with weight 1.0, as a baseline, to the objectives specified by the user, if it's not already present. |
MIN_DISTANCE | "MIN" objectives. Minimize the total distance traveled. |
MIN_WORKING_TIME | Minimize the total working time, summed over all vehicles. |
MIN_TRAVEL_TIME | Same as above but focusing on travel time only. |
MIN_NUM_VEHICLES | Minimize the number of vehicles used. |
DurationDistanceMatrix
Specifies a duration and distance matrix from visit and vehicle start locations to visit and vehicle end locations.
| JSON representation |
|---|
{
"rows": [
{
object ( |
| ক্ষেত্র | |
|---|---|
rows[] | Specifies the rows of the duration and distance matrix. It must have as many elements as |
vehicleStartTag | Tag defining to which vehicles this duration and distance matrix applies. If empty, this applies to all vehicles, and there can only be a single matrix. Each vehicle start must match exactly one matrix, ie exactly one of their All matrices must have a different |
সারি
Specifies a row of the duration and distance matrix.
| JSON representation |
|---|
{ "durations": [ string ], "meters": [ number ] } |
| ক্ষেত্র | |
|---|---|
durations[] | Duration values for a given row. It must have as many elements as A duration in seconds with up to nine fractional digits, ending with ' |
meters[] | Distance values for a given row. If no costs or constraints refer to distances in the model, this can be left empty; otherwise it must have as many elements as |
TransitionAttributes
Specifies attributes of transitions between two consecutive visits on a route. Several TransitionAttributes may apply to the same transition: in that case, all extra costs add up and the strictest constraint or limit applies (following natural "AND" semantics).
| JSON representation |
|---|
{
"srcTag": string,
"excludedSrcTag": string,
"dstTag": string,
"excludedDstTag": string,
"cost": number,
"costPerKilometer": number,
"distanceLimit": {
object ( |
| ক্ষেত্র | |
|---|---|
srcTag | Tags defining the set of (src->dst) transitions these attributes apply to. A source visit or vehicle start matches iff its |
excludedSrcTag | See |
dstTag | A destination visit or vehicle end matches iff its |
excludedDstTag | See |
cost | Specifies a cost for performing this transition. This is in the same unit as all other costs in the model and must not be negative. It is applied on top of all other existing costs. |
costPerKilometer | Specifies a cost per kilometer applied to the distance traveled while performing this transition. It adds up to any |
distanceLimit | Specifies a limit on the distance traveled while performing this transition. As of 2021/06, only soft limits are supported. |
delay | Specifies a delay incurred when performing this transition. This delay always occurs after finishing the source visit and before starting the destination visit. A duration in seconds with up to nine fractional digits, ending with ' |
ShipmentTypeIncompatibility
Specifies incompatibilties between shipments depending on their shipmentType. The appearance of incompatible shipments on the same route is restricted based on the incompatibility mode.
| JSON representation |
|---|
{
"types": [
string
],
"incompatibilityMode": enum ( |
| ক্ষেত্র | |
|---|---|
types[] | List of incompatible types. Two shipments having different |
incompatibilityMode | Mode applied to the incompatibility. |
IncompatibilityMode
Modes defining how the appearance of incompatible shipments are restricted on the same route.
| Enums | |
|---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED | Unspecified incompatibility mode. This value should never be used. |
NOT_PERFORMED_BY_SAME_VEHICLE | In this mode, two shipments with incompatible types can never share the same vehicle. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY | In this mode, two shipments with incompatible types can never be on the same vehicle at the same time:
|
ShipmentTypeRequirement
Specifies requirements between shipments based on their shipmentType. The specifics of the requirement are defined by the requirement mode.
| JSON representation |
|---|
{
"requiredShipmentTypeAlternatives": [
string
],
"dependentShipmentTypes": [
string
],
"requirementMode": enum ( |
| ক্ষেত্র | |
|---|---|
requiredShipmentTypeAlternatives[] | List of alternative shipment types required by the |
dependentShipmentTypes[] | All shipments with a type in the NOTE: Chains of requirements such that a |
requirementMode | Mode applied to the requirement. |
RequirementMode
Modes defining the appearance of dependent shipments on a route.
| Enums | |
|---|---|
REQUIREMENT_MODE_UNSPECIFIED | Unspecified requirement mode. This value should never be used. |
PERFORMED_BY_SAME_VEHICLE | In this mode, all "dependent" shipments must share the same vehicle as at least one of their "required" shipments. |
IN_SAME_VEHICLE_AT_PICKUP_TIME | With the A "dependent" shipment pickup must therefore have either:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME | Same as before, except the "dependent" shipments need to have a "required" shipment on their vehicle at the time of their delivery . |
PrecedenceRule
A precedence rule between two events (each event is the pickup or the delivery of a shipment): the "second" event has to start at least offsetDuration after "first" has started.
Several precedences can refer to the same (or related) events, eg, "pickup of B happens after delivery of A" and "pickup of C happens after pickup of B".
Furthermore, precedences only apply when both shipments are performed and are otherwise ignored.
| JSON representation |
|---|
{ "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer } |
| ক্ষেত্র | |
|---|---|
firstIsDelivery | Indicates if the "first" event is a delivery. |
secondIsDelivery | Indicates if the "second" event is a delivery. |
offsetDuration | The offset between the "first" and "second" event. It can be negative. A duration in seconds with up to nine fractional digits, ending with ' |
firstIndex | Shipment index of the "first" event. This field must be specified. |
secondIndex | Shipment index of the "second" event. This field must be specified. |