- JSON উপস্থাপনা
- চালান
- পরিদর্শনের অনুরোধ
- অক্ষাংশ দ্রাঘিমাংশ
- ওয়েপয়েন্ট
- অবস্থান
- টাইমউইন্ডো
- যানবাহন
- ভ্রমণ মোড
- রুট মডিফায়ার
- আনলোডিং নীতি
- লোডলিমিট
- ব্যবধান
- লোডকস্ট
- সময়কাল সীমা
- দূরত্বের সীমা
- ব্রেকরুল
- বিরতির অনুরোধ
- ফ্রিকোয়েন্সি সীমাবদ্ধতা
- উদ্দেশ্য
- প্রকার
- সময়কাল দূরত্ব ম্যাট্রিক্স
- সারি
- রূপান্তর বৈশিষ্ট্য
- চালানের ধরনের অসামঞ্জস্যতা
- অসামঞ্জস্য মোড
- চালানের প্রকারের প্রয়োজনীয়তা
- প্রয়োজনীয়তা মোড
- অগ্রাধিকারের নিয়ম
একটি চালান মডেলে একগুচ্ছ চালান থাকে যা একগুচ্ছ যানবাহনের মাধ্যমে সম্পন্ন করতে হয়, এবং এক্ষেত্রে সামগ্রিক খরচ সর্বনিম্ন করতে হয়, যা হলো নিম্নলিখিতগুলির সমষ্টি:
- যানবাহনগুলোর রুট নির্ধারণের খরচ (মোট সময়ের খরচ, যাতায়াত সময়ের খরচ এবং সমস্ত যানবাহনের স্থির খরচের সমষ্টি)।
- অসম্পাদিত চালানের জরিমানা।
- চালানগুলোর বিশ্বব্যাপী সময়কালের খরচ
| JSON উপস্থাপনা |
|---|
{ "shipments": [ { object ( |
| ক্ষেত্র | |
|---|---|
shipments[] | মডেলটিতে অবশ্যই সম্পাদন করতে হবে এমন চালানগুলোর সেট। |
vehicles[] | পরিদর্শনকার্য সম্পাদনের জন্য ব্যবহারযোগ্য যানবাহনের সেট। |
objectives[] | এই মডেলের উদ্দেশ্যসমূহের সেট, যা আমরা খরচে রূপান্তরিত করব। যদি খালি না থাকে, তবে ইনপুট মডেলটিকে অবশ্যই খরচবিহীন হতে হবে। পরিবর্তিত অনুরোধটি পেতে, অনুগ্রহ করে পরীক্ষামূলক: আরও বিস্তারিত জানতে https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request দেখুন। |
globalStartTime | মডেলটির বৈশ্বিক শুরু এবং শেষের সময়: এই সীমার বাইরের কোনো সময় বৈধ বলে বিবেচিত হবে না। মডেলটির সময়কাল অবশ্যই এক বছরের কম হতে হবে, অর্থাৎ RFC 3339 ব্যবহার করা হয়, যেখানে তৈরি হওয়া আউটপুট সর্বদা Z-নরম্যালাইজড হবে এবং এতে ০, ৩, ৬ বা ৯টি ভগ্নাংশীয় অঙ্ক ব্যবহৃত হবে। "Z" ছাড়াও অন্যান্য অফসেটও গ্রহণ করা হয়। উদাহরণ: |
globalEndTime | সেট করা না থাকলে, ডিফল্ট হিসেবে ০০:০০:০০ ইউটিসি, ১ জানুয়ারী, ১৯৭১ (অর্থাৎ সেকেন্ড: ৩১৫৩৬০০০, ন্যানো: ০) ব্যবহৃত হয়। RFC 3339 ব্যবহার করা হয়, যেখানে তৈরি হওয়া আউটপুট সর্বদা Z-নরম্যালাইজড হবে এবং এতে ০, ৩, ৬ বা ৯টি ভগ্নাংশীয় অঙ্ক ব্যবহৃত হবে। "Z" ছাড়াও অন্যান্য অফসেটও গ্রহণ করা হয়। উদাহরণ: |
globalDurationCostPerHour | সামগ্রিক পরিকল্পনার 'গ্লোবাল ডিউরেশন' হলো সমস্ত যানবাহনের সর্বনিম্ন কার্যকর শুরুর সময় এবং সর্বশেষ কার্যকর শেষের সময়ের মধ্যেকার পার্থক্য। উদাহরণস্বরূপ, ব্যবহারকারীরা কাজটি দ্রুততম সময়ে সম্পন্ন করার জন্য অপ্টিমাইজ করতে সেই পরিমাণের উপর প্রতি ঘণ্টার একটি খরচ নির্ধারণ করতে পারেন। এই খরচ অবশ্যই |
durationDistanceMatrices[] | মডেলে ব্যবহৃত সময়কাল এবং দূরত্বের ম্যাট্রিক্স নির্দিষ্ট করে। যদি এই ফিল্ডটি খালি থাকে, তাহলে ব্যবহারের উদাহরণ:
|
durationDistanceMatrixSrcTags[] | সময়কাল এবং দূরত্ব ম্যাট্রিক্সের উৎস নির্ধারণকারী ট্যাগ; ট্যাগগুলি |
durationDistanceMatrixDstTags[] | সময়কাল এবং দূরত্ব ম্যাট্রিক্সের গন্তব্য নির্ধারণকারী ট্যাগ; ট্যাগগুলি |
transitionAttributes[] | মডেলে ট্রানজিশন অ্যাট্রিবিউট যোগ করা হয়েছে। |
shipmentTypeIncompatibilities[] | অসামঞ্জস্যপূর্ণ চালান প্রকারের সেট (দেখুন |
shipmentTypeRequirements[] | |
precedenceRules[] | অগ্রাধিকারের নিয়মাবলীর সমষ্টি যা মডেলে অবশ্যই প্রয়োগ করতে হবে। গুরুত্বপূর্ণ : অগ্রাধিকারের নিয়ম ব্যবহারের ফলে অপ্টিমাইজ করা যায় এমন সমস্যার আকার সীমিত হয়ে যায়। অগ্রাধিকারের নিয়ম ব্যবহার করে করা যেসব অনুরোধে অনেকগুলো চালান অন্তর্ভুক্ত থাকে, সেগুলো বাতিল হয়ে যেতে পারে। |
maxActiveVehicles | সক্রিয় যানবাহনের সর্বোচ্চ সংখ্যা সীমিত করে। একটি যানবাহন তখনই সক্রিয় বলে গণ্য হয়, যখন তার রুটে অন্তত একটি চালান সম্পন্ন করা হয়। যেখানে যানবাহনের তুলনায় চালকের সংখ্যা কম এবং যানবাহনের বহরটি ভিন্নধর্মী, সেখানে রুটের সংখ্যা সীমিত করার জন্য এটি ব্যবহার করা যেতে পারে। এরপর অপটিমাইজেশন ব্যবহারের জন্য যানবাহনের সেরা উপসেটটি নির্বাচন করবে। এর মান অবশ্যই কঠোরভাবে ধনাত্মক হতে হবে। |
চালান
এর একটি পিকআপ থেকে এর একটি ডেলিভারিতে একটিমাত্র পণ্যের চালান। চালানটিকে সম্পন্ন বলে গণ্য করার জন্য, একটি নির্দিষ্ট যানবাহনকে অবশ্যই তার একটি পিকআপ অবস্থানে যেতে হবে (এবং সেই অনুযায়ী তার অতিরিক্ত ধারণক্ষমতা কমাতে হবে), তারপর পরবর্তীতে তার একটি ডেলিভারি অবস্থানে যেতে হবে (এবং সেই অনুযায়ী তার অতিরিক্ত ধারণক্ষমতা পুনরায় বাড়াতে হবে)।
| JSON উপস্থাপনা |
|---|
{ "displayName": string, "pickups": [ { object ( |
| ক্ষেত্র | |
|---|---|
displayName | চালানের ব্যবহারকারী-নির্ধারিত প্রদর্শিত নাম। এটি সর্বোচ্চ ৬৩ অক্ষর দীর্ঘ হতে পারে এবং এতে UTF-8 অক্ষর ব্যবহার করা যেতে পারে। |
pickups[] | চালানটির সাথে সম্পর্কিত পিকআপ বিকল্পগুলির একটি সেট। যদি নির্দিষ্ট করে দেওয়া না থাকে, তবে যানবাহনটিকে শুধুমাত্র ডেলিভারিগুলির সাথে সঙ্গতিপূর্ণ একটি স্থানে যেতে হবে। |
deliveries[] | চালানটির সাথে সংশ্লিষ্ট ডেলিভারি বিকল্পসমূহের একটি সেট। যদি নির্দিষ্ট করে দেওয়া না থাকে, তবে যানবাহনটিকে শুধুমাত্র পিকআপের সাথে সঙ্গতিপূর্ণ একটি স্থানে যেতে হবে। |
loadDemands | চালানের লোডের চাহিদাগুলো (যেমন ওজন, আয়তন, প্যালেটের সংখ্যা ইত্যাদি) ম্যাপে উল্লেখ করুন। ম্যাপের কী-গুলো সংশ্লিষ্ট লোডের ধরন বর্ণনা করে এমন আইডেন্টিফায়ার হওয়া উচিত, এবং আদর্শগতভাবে এতে এককও অন্তর্ভুক্ত থাকা বাঞ্ছনীয়। উদাহরণস্বরূপ: 'ওজন_কেজি', 'আয়তন_গ্যালন', 'প্যালেট_সংখ্যা', ইত্যাদি। যদি কোনো নির্দিষ্ট কী ম্যাপে না থাকে, তবে সংশ্লিষ্ট লোডটিকে নাল (null) হিসেবে গণ্য করা হবে। |
allowedVehicleIndices[] | যেসব যানবাহন এই চালানটি সম্পন্ন করতে পারে। যদি খালি থাকে, তবে সব যানবাহনই এটি সম্পন্ন করতে পারে। |
costsPerVehicle[] | প্রতিটি যানবাহনের মাধ্যমে এই চালানটি সরবরাহ করার সময় যে খরচ হয় তা নির্দিষ্ট করে। যদি নির্দিষ্ট করা থাকে, তবে এতে অবশ্যই নিম্নলিখিতগুলির মধ্যে যেকোনো একটি থাকতে হবে:
এই খরচগুলো অবশ্যই |
costsPerVehicleIndices[] | যেসব যানবাহনের ক্ষেত্রে |
pickupToDeliveryAbsoluteDetourLimit | পিকআপ থেকে ডেলিভারি পর্যন্ত সংক্ষিপ্ততম পথের তুলনায় সর্বাধিক প্রকৃত অতিরিক্ত সময় নির্দিষ্ট করে। যদি এটি নির্দিষ্ট করা হয়, তবে তা অবশ্যই অঋণাত্মক হতে হবে এবং চালানটিতে অন্তত একটি পিকআপ ও একটি ডেলিভারি থাকতে হবে। উদাহরণস্বরূপ, ধরা যাক t হলো নির্বাচিত পিকআপ বিকল্প থেকে সরাসরি নির্বাচিত ডেলিভারি বিকল্পে যাওয়ার জন্য প্রয়োজনীয় সর্বনিম্ন সময়। তাহলে যদি একই চালানের জন্য আপেক্ষিক এবং পরম উভয় সীমা নির্দিষ্ট করা থাকে, তবে প্রতিটি সম্ভাব্য পিকআপ/ডেলিভারি জোড়ার জন্য অধিক সীমাবদ্ধকারী সীমাটি ব্যবহৃত হয়। ২০১৭/১০ তারিখ অনুযায়ী, বিকল্প পথ শুধুমাত্র তখনই সমর্থিত হয় যখন ভ্রমণের সময়কাল যানবাহনের উপর নির্ভরশীল না হয়। সেকেন্ডে পরিমাপকৃত সময়কাল, যা সর্বোচ্চ নয়টি ভগ্নাংশ অঙ্ক পর্যন্ত হতে পারে এবং শেষে ' |
pickupToDeliveryTimeLimit | একটি চালানের পিকআপ শুরু থেকে ডেলিভারি শুরু পর্যন্ত সর্বোচ্চ সময়কাল নির্দিষ্ট করে। যদি এটি নির্দিষ্ট করা হয়, তবে সময়কালটি অবশ্যই অঋণাত্মক হতে হবে এবং চালানটিতে অন্তত একটি পিকআপ ও একটি ডেলিভারি থাকতে হবে। এটি পিকআপ এবং ডেলিভারির জন্য কোন বিকল্পগুলি নির্বাচন করা হয়েছে বা গাড়ির গতির উপর নির্ভর করে না। এটি সর্বোচ্চ পথ পরিবর্তনের সীমাবদ্ধতার পাশাপাশি নির্দিষ্ট করা যেতে পারে: সমাধানটি উভয় নির্দিষ্টকরণকেই সম্মান করবে। সেকেন্ডে পরিমাপকৃত সময়কাল, যা সর্বোচ্চ নয়টি ভগ্নাংশ অঙ্ক পর্যন্ত হতে পারে এবং শেষে ' |
shipmentType | এই চালানের জন্য একটি 'ধরন' নির্দিষ্টকারী একটি অ-খালি স্ট্রিং। এই বৈশিষ্ট্যটি এটি |
label | এই চালানের জন্য একটি লেবেল নির্দিষ্ট করে। এই লেবেলটি রেসপন্সে সংশ্লিষ্ট |
ignore | যদি সত্য হয়, তাহলে এই চালানটি বাদ দিন, কিন্তু কোনো মডেলে কোনো |
penaltyCost | যদি চালানটি সম্পন্ন না হয়, তবে এই জরিমানা রুটগুলোর মোট খরচের সাথে যোগ করা হয়। একটি চালানকে সম্পন্ন বলে গণ্য করা হয় যদি এর পিকআপ এবং ডেলিভারির বিকল্পগুলোর মধ্যে একটিতে যাওয়া হয়। খরচটি মডেলের অন্যান্য সমস্ত খরচ-সম্পর্কিত ক্ষেত্রের জন্য ব্যবহৃত একই এককে প্রকাশ করা যেতে পারে এবং এটি অবশ্যই ধনাত্মক হতে হবে। গুরুত্বপূর্ণ : যদি এই জরিমানা নির্দিষ্ট করা না থাকে, তবে তা অনির্দিষ্টকালের জন্য প্রযোজ্য বলে গণ্য হবে, অর্থাৎ চালানটি অবশ্যই সম্পন্ন করতে হবে। |
pickupToDeliveryRelativeDetourLimit | পিকআপ থেকে ডেলিভারি পর্যন্ত সংক্ষিপ্ততম পথের তুলনায় সর্বাধিক আপেক্ষিক ঘুরপথের সময় নির্দিষ্ট করে। যদি এটি নির্দিষ্ট করা হয়, তবে তা অবশ্যই অঋণাত্মক হতে হবে এবং চালানটিতে অন্তত একটি পিকআপ ও একটি ডেলিভারি থাকতে হবে। উদাহরণস্বরূপ, ধরা যাক t হলো নির্বাচিত পিকআপ বিকল্প থেকে সরাসরি নির্বাচিত ডেলিভারি বিকল্পে যাওয়ার জন্য প্রয়োজনীয় সর্বনিম্ন সময়। তাহলে যদি একই চালানের জন্য আপেক্ষিক এবং পরম উভয় সীমা নির্দিষ্ট করা থাকে, তবে প্রতিটি সম্ভাব্য পিকআপ/ডেলিভারি জোড়ার জন্য অধিক সীমাবদ্ধকারী সীমাটি ব্যবহৃত হয়। ২০১৭/১০ তারিখ অনুযায়ী, বিকল্প পথ শুধুমাত্র তখনই সমর্থিত হয় যখন ভ্রমণের সময়কাল যানবাহনের উপর নির্ভরশীল না হয়। |
পরিদর্শনের অনুরোধ
যানবাহন দ্বারা পরিদর্শনের জন্য অনুরোধ: এতে একটি ভৌগোলিক অবস্থান (বা দুটি, নিচে দেখুন), টাইম উইন্ডো দ্বারা নির্দেশিত খোলার ও বন্ধের সময় এবং একটি পরিষেবা প্রদানের সময়কাল (পণ্য সংগ্রহ বা বিতরণের জন্য পৌঁছানোর পর যানবাহনটির ব্যয়িত সময়) থাকে।
| 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 দেখুন। |
অক্ষাংশ দ্রাঘিমাংশ
একটি অবজেক্ট যা একটি অক্ষাংশ/দ্রাঘিমাংশ জোড়াকে উপস্থাপন করে। এটি ডিগ্রি অক্ষাংশ এবং ডিগ্রি দ্রাঘিমাংশ বোঝাতে একজোড়া ডাবল (double) হিসেবে প্রকাশ করা হয়। অন্যভাবে নির্দিষ্ট করা না থাকলে, এই অবজেক্টটিকে অবশ্যই WGS84 স্ট্যান্ডার্ড মেনে চলতে হবে। মানগুলো অবশ্যই নর্মালাইজড রেঞ্জের মধ্যে থাকতে হবে।
| JSON উপস্থাপনা |
|---|
{ "latitude": number, "longitude": number } |
| ক্ষেত্র | |
|---|---|
latitude | অক্ষাংশ ডিগ্রিতে। এটি অবশ্যই [-90.0, +90.0] সীমার মধ্যে হতে হবে। |
longitude | দ্রাঘিমাংশ ডিগ্রিতে। এটি অবশ্যই [-180.0, +180.0] সীমার মধ্যে হতে হবে। |
ওয়েপয়েন্ট
একটি ওয়েপয়েন্টকে আবদ্ধ করে। ওয়েপয়েন্টগুলো ভিজিট রিকোয়েস্টের আগমন ও প্রস্থান স্থান এবং যানবাহনের শুরু ও শেষ স্থান চিহ্নিত করে।
| JSON উপস্থাপনা |
|---|
{ "sideOfRoad": boolean, "vehicleStopover": boolean, // Union field |
| ক্ষেত্র | |
|---|---|
sideOfRoad | ঐচ্ছিক। এটি নির্দেশ করে যে, এই ওয়েপয়েন্টের অবস্থানটি এমনভাবে তৈরি করা হয়েছে যাতে যানবাহনটি রাস্তার একটি নির্দিষ্ট পাশে থামতে পছন্দ করে। আপনি যখন এই মানটি সেট করবেন, তখন রুটটি সেই অবস্থানের মধ্য দিয়ে এমনভাবে যাবে যাতে যানবাহনটি রাস্তার সেই পাশে থামতে পারে, যেদিকে অবস্থানটি রাস্তার কেন্দ্র থেকে ঝুঁকে আছে। এই বিকল্পটি 'হাঁটা' (WALKING) ভ্রমণ মোডের জন্য কাজ করে না। |
vehicleStopover | এটি নির্দেশ করে যে ওয়েপয়েন্টটি যানবাহন থামার জন্য নির্ধারিত, যেখানে যাত্রী ওঠানো বা নামানোর উদ্দেশ্য রয়েছে। এই বিকল্পটি শুধুমাত্র 'ড্রাইভিং' ট্র্যাভেল মোডের জন্য এবং যখন 'লোকেশনটাইপ' 'লোকেশন' হয়, তখনই কাজ করে। পরীক্ষামূলক: ভবিষ্যতে এই ক্ষেত্রের আচরণ বা অস্তিত্ব পরিবর্তিত হতে পারে। |
ইউনিয়ন ফিল্ড location_type । একটি অবস্থানকে উপস্থাপন করার বিভিন্ন উপায়। location_type নিম্নলিখিতগুলির মধ্যে কেবল একটি হতে পারে: | |
location | ভৌগোলিক স্থানাঙ্ক ব্যবহার করে নির্দিষ্ট একটি বিন্দু, যেখানে একটি ঐচ্ছিক শিরোনাম অন্তর্ভুক্ত থাকতে পারে। |
placeId | ওয়েপয়েন্টটির সাথে সংশ্লিষ্ট POI স্থান আইডি। কোনো VisitRequest-এর আগমন বা প্রস্থানের স্থান নির্দিষ্ট করতে প্লেস আইডি ব্যবহার করার সময়, এমন একটি প্লেস আইডি ব্যবহার করুন যা সেই স্থানে নেভিগেশনের জন্য অক্ষাংশ-দ্রাঘিমাংশ (LatLng) অবস্থান নির্ধারণ করতে যথেষ্ট সুনির্দিষ্ট। উদাহরণস্বরূপ, একটি ভবনের প্রতিনিধিত্বকারী প্লেস আইডি উপযুক্ত, কিন্তু একটি রাস্তার প্রতিনিধিত্বকারী প্লেস আইডি ব্যবহার নিরুৎসাহিত করা হয়। |
অবস্থান
একটি অবস্থানকে অন্তর্ভুক্ত করে (একটি ভৌগোলিক বিন্দু এবং একটি ঐচ্ছিক শিরোনাম)।
| JSON উপস্থাপনা |
|---|
{
"latLng": {
object ( |
| ক্ষেত্র | |
|---|---|
latLng | ওয়েপয়েন্টটির ভৌগোলিক স্থানাঙ্ক। |
heading | যানবাহন চলাচলের দিকের সাথে সম্পর্কিত কম্পাস হেডিং। যাত্রী ওঠানো এবং নামানোর জন্য রাস্তার কোন পাশ ব্যবহার করতে হবে, তা নির্দিষ্ট করতে এই মানটি ব্যবহৃত হয়। হেডিং-এর মান ০ থেকে ৩৬০ পর্যন্ত হতে পারে, যেখানে ০ সরাসরি উত্তর দিক, ৯০ সরাসরি পূর্ব দিক ইত্যাদি নির্দেশ করে। |
টাইমউইন্ডো
টাইম উইন্ডো কোনো ঘটনার সময়কে সীমাবদ্ধ করে, যেমন কোনো পরিদর্শনে পৌঁছানোর সময়, বা কোনো যানবাহনের শুরু এবং শেষের সময়।
হার্ড টাইম উইন্ডো বাউন্ড, 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-নরম্যালাইজড হবে এবং এতে ০, ৩, ৬ বা ৯টি ভগ্নাংশীয় অঙ্ক ব্যবহৃত হবে। "Z" ছাড়াও অন্যান্য অফসেটও গ্রহণ করা হয়। উদাহরণ: |
endTime | নির্দিষ্ট সময়সীমার শেষ সময়। যদি এটি অনির্দিষ্ট থাকে, তবে এটি RFC 3339 ব্যবহার করা হয়, যেখানে তৈরি হওয়া আউটপুট সর্বদা Z-নরম্যালাইজড হবে এবং এতে ০, ৩, ৬ বা ৯টি ভগ্নাংশীয় অঙ্ক ব্যবহৃত হবে। "Z" ছাড়াও অন্যান্য অফসেটও গ্রহণ করা হয়। উদাহরণ: |
softStartTime | সময়সীমাটির সফট স্টার্ট টাইম। RFC 3339 ব্যবহার করা হয়, যেখানে তৈরি হওয়া আউটপুট সর্বদা Z-নরম্যালাইজড হবে এবং এতে ০, ৩, ৬ বা ৯টি ভগ্নাংশীয় অঙ্ক ব্যবহৃত হবে। "Z" ছাড়াও অন্যান্য অফসেটও গ্রহণ করা হয়। উদাহরণ: |
softEndTime | সময়সীমাটির নরম সমাপ্তির সময়। RFC 3339 ব্যবহার করা হয়, যেখানে তৈরি হওয়া আউটপুট সর্বদা Z-নরম্যালাইজড হবে এবং এতে ০, ৩, ৬ বা ৯টি ভগ্নাংশীয় অঙ্ক ব্যবহৃত হবে। "Z" ছাড়াও অন্যান্য অফসেটও গ্রহণ করা হয়। উদাহরণ: |
costPerHourBeforeSoftStartTime | যদি ঘটনাটি softStartTime-এর আগে ঘটে, তাহলে মডেলে থাকা অন্যান্য খরচের সাথে প্রতি ঘণ্টার একটি খরচ যোগ করা হবে, যা নিম্নরূপে গণনা করা হয়: এই খরচ অবশ্যই ধনাত্মক হতে হবে, এবং softStartTime সেট করা হলেই কেবল এই ফিল্ডটি সেট করা যাবে। |
costPerHourAfterSoftEndTime | যদি ইভেন্টটি This cost must be positive, and the field can only be set if |
যানবাহন
একটি চালান সমস্যার জন্য একটি যানবাহনের মডেল তৈরি করে। একটি চালান সমস্যা সমাধান করলে এই যানবাহনটির জন্য 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 স্ট্রিং থেকে সময়কাল পর্যন্ত একটি ম্যাপ নির্দিষ্ট করে। এই সময়কাল হলো যদি কোনো পরিদর্শন অনুরোধের একাধিক প্রকার থাকে, তাহলে মানচিত্রে প্রতিটি প্রকারের জন্য একটি সময়কাল যোগ করা হবে। |
breakRule | এই যানবাহনের জন্য প্রযোজ্য বিরতির সময়সূচী বর্ণনা করা হলো। যানবাহনটি খালি থাকলে, এর জন্য কোনো বিরতি নির্ধারিত থাকবে না। |
label | এই যানবাহনটির জন্য একটি লেবেল নির্দিষ্ট করে। এই লেবেলটি রেসপন্সে সংশ্লিষ্ট |
ignore | যদি সত্য হয়, তাহলে যদি যদি |
travelDurationMultiple | Specifies a multiplicative factor that can be used to increase or decrease travel times of this vehicle. For example, setting this to 2.0 means that this vehicle is slower and has travel times that are twice what they are for standard vehicles. This multiple does not affect visit durations. It does affect cost if সতর্কীকরণ: এই গুণকটি প্রয়োগ করার পর কিন্তু যেকোনো সংখ্যাসূচক অপারেশন করার আগে, ভ্রমণের সময়কে নিকটতম সেকেন্ডে রাউন্ড করা হবে, সুতরাং, একটি ছোট গুণকের ফলে নির্ভুলতা হ্রাস পেতে পারে। নিচে |
ভ্রমণ মোড
যানবাহন দ্বারা ব্যবহারযোগ্য ভ্রমণ পদ্ধতিসমূহ
এগুলো গুগল ম্যাপস প্ল্যাটফর্ম রুটস এপিআই (Google Maps Platform Routes API)-এর ভ্রমণ মোডগুলোর একটি উপসেট হওয়া উচিত, দেখুন: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteTravelMode
দ্রষ্টব্য: WALKING রুটগুলো পরীক্ষামূলক পর্যায়ে রয়েছে এবং এতে মাঝে মাঝে স্পষ্ট ফুটপাত বা পথচারী চলার পথ নাও থাকতে পারে। আপনার অ্যাপে প্রদর্শিত সমস্ত হাঁটার রুটের জন্য আপনাকে অবশ্যই ব্যবহারকারীকে এই সতর্কবার্তাটি দেখাতে হবে।
| এনাম | |
|---|---|
TRAVEL_MODE_UNSPECIFIED | অনির্দিষ্ট ভ্রমণ মোড, যা DRIVING এর সমতুল্য। |
DRIVING | চালনার নির্দেশনা অনুযায়ী ভ্রমণের ধরণ (গাড়ি, ...)। |
WALKING | হাঁটার দিকনির্দেশনা অনুযায়ী ভ্রমণ পদ্ধতি। |
রুট মডিফায়ার
গাড়ির রুট গণনা করার সময় পূরণ করতে হবে এমন কিছু ঐচ্ছিক শর্তের একটি সেটকে এটি অন্তর্ভুক্ত করে। এটি গুগল ম্যাপস প্ল্যাটফর্মের রুটস প্রিফার্ড এপিআই (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 | ডেলিভারি অবশ্যই পিকআপের একই ক্রমে সম্পন্ন করতে হবে। |
লোডলিমিট
কোনো যানবাহনের জন্য প্রযোজ্য ভারবহন সীমা নির্ধারণ করে, যেমন "এই ট্রাকটি সর্বোচ্চ ৩৫০০ কেজি পর্যন্ত বহন করতে পারবে"। 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 | সর্বনিম্ন গ্রহণযোগ্য লোড। এটি অবশ্যই ≥ ০ হতে হবে। যদি উভয়ই নির্দিষ্ট করা থাকে, তবে |
max | A maximum acceptable load. Must be ≥ 0. If unspecified, the maximum load is unrestricted by this message. If they're both specified, |
লোডকস্ট
Transition সময় এক ইউনিট ভার সরানোর খরচ। একটি নির্দিষ্ট ভারের জন্য, খরচটি দুটি অংশের সমষ্টি:
- সর্বনিম্ন(লোড,
loadThreshold) *costPerUnitBelowThreshold - সর্বোচ্চ(0, লোড -
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 হলো ১২০.০।
তবে, যদি রুটটি start,pickup,delivery,pickup,delivery,end হয় এবং এর মধ্যে ট্রানজিশন থাকে:
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 দ্বারা সংঘটিত খরচ হল
- রূপান্তর ০: ০.০
- রূপান্তর ১: ২.০ * ১০ * ১.০ + ১০.০ * ০ * ১.০ = ২০.০
- রূপান্তর ২: ০.০
- রূপান্তর ৩: ২.০ * ১০ * ১.০ + ১০.০ * ০ * ১.০ = ২০.০
- রূপান্তর ৪: ০.০
এখানে রুটটির LoadCost হলো ৪০.০।
LoadCost অধিক লোডযুক্ত ট্রানজিশন সম্পন্ন সলিউশনগুলোকে আরও ব্যয়বহুল করে তোলে।
পরীক্ষামূলক: আরও বিস্তারিত জানতে https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request দেখুন।
| JSON উপস্থাপনা |
|---|
{ "loadThreshold": string, "costPerUnitBelowThreshold": number, "costPerUnitAboveThreshold": number } |
| ক্ষেত্র | |
|---|---|
loadThreshold | ভারের সেই পরিমাণ, যার উপরে প্রতি ইউনিট ভার সরানোর খরচ 'threshold-এর নিচের প্রতি ইউনিটের খরচ' থেকে 'threshold-এর উপরের প্রতি ইউনিটের খরচ'-এ পরিবর্তিত হয়। এর মান অবশ্যই >= ০ হতে হবে। |
costPerUnitBelowThreshold | ০ এবং নির্ধারিত সীমার মধ্যবর্তী প্রতিটি এককের জন্য, এক ইউনিট ভার সরানোর খরচ। মানটি অবশ্যই সসীম হতে হবে এবং ০ বা তার বেশি হতে হবে। |
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 উপস্থাপনা |
|---|
{ "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
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 উপস্থাপনা |
|---|
{ "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 উপস্থাপনা |
|---|
{ "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 উপস্থাপনা |
|---|
{ "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 উপস্থাপনা |
|---|
{ "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 উপস্থাপনা |
|---|
{
"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.
| এনাম | |
|---|---|
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 উপস্থাপনা |
|---|
{
"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 উপস্থাপনা |
|---|
{ "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 উপস্থাপনা |
|---|
{
"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 উপস্থাপনা |
|---|
{
"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.
| এনাম | |
|---|---|
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 উপস্থাপনা |
|---|
{
"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.
| এনাম | |
|---|---|
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 উপস্থাপনা |
|---|
{ "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. |