- JSON উপস্থাপনা
- শিপমেন্ট
- VisitRequest
- LatLng
- Waypoint
- লোকেশন
- TimeWindow
- গাড়ি
- TravelMode
- RouteModifiers
- UnloadingPolicy
- LoadLimit
- ইন্টারভাল
- LoadCost
- DurationLimit
- DistanceLimit
- BreakRule
- BreakRequest
- FrequencyConstraint
- উদ্দেশ্য
- Type
- DurationDistanceMatrix
- সারি
- TransitionAttributes
- ShipmentTypeIncompatibility
- IncompatibilityMode
- ShipmentTypeRequirement
- RequirementMode
- PrecedenceRule
একটি শিপমেন্ট মডেলে শিপমেন্টের একটি সেট থাকে যা অবশ্যই গাড়ির একটি সেট দ্বারা সম্পন্ন করতে হবে, পাশাপাশি সামগ্রিক খরচ কমিয়ে আনতে হবে, যা হল:
- গাড়ির রুট নির্ধারণের খরচ (মোট সময় প্রতি খরচের যোগফল, ভ্রমণের সময় প্রতি খরচ এবং সমস্ত গাড়ির নির্দিষ্ট খরচ)।
- শিপমেন্ট না করার জন্য জরিমানা।
- শিপমেন্টের গ্লোবাল ডিউরেশনের খরচ
| JSON উপস্থাপনা |
|---|
{ "shipments": [ { object ( |
| ফিল্ড | |
|---|---|
shipments[] |
শিপমেন্টের সেট যা মডেলে অবশ্যই পারফর্ম করতে হবে। |
vehicles[] |
ভিজিট করার জন্য ব্যবহার করা যেতে পারে এমন গাড়ির সেট। |
objectives[] |
এই মডেলের জন্য উদ্দেশ্যের সেট, যা আমরা খরচে রূপান্তর করব। খালি না থাকলে, ইনপুট মডেলটি খরচহীন হতে হবে। পরিবর্তিত অনুরোধ পেতে, এক্সপেরিমেন্টাল: আরও বিবরণের জন্য https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request দেখুন। |
globalStartTime |
মডেলের গ্লোবাল শুরু ও শেষের সময়: এই রেঞ্জের বাইরে কোনও সময় সঠিক হিসেবে বিবেচনা করা যাবে না। মডেলের সময়সীমা এক বছরের কম হতে হবে, অর্থাৎ
RFC 3339 ব্যবহার করে, যেখানে জেনারেট করা আউটপুট সবসময় Z-নরমালাইজড হবে এবং ০, ৩, ৬ বা ৯টি ভগ্নাংশ সংখ্যা ব্যবহার করবে। "Z" ছাড়া অন্যান্য অফসেটও গ্রহণ করা হয়। যেমন: |
globalEndTime |
সেট করা না থাকলে, ডিফল্ট হিসেবে ১ জানুয়ারি, ১৯৭১, 00:00:00 UTC (অর্থাৎ, সেকেন্ড: ৩১৫৩৬০০০, ন্যানো: ০) ব্যবহার করা হয়। RFC 3339 ব্যবহার করে, যেখানে জেনারেট করা আউটপুট সবসময় Z-নরমালাইজড হবে এবং ০, ৩, ৬ বা ৯টি ভগ্নাংশ সংখ্যা ব্যবহার করবে। "Z" ছাড়া অন্যান্য অফসেটও গ্রহণ করা হয়। যেমন: |
globalDurationCostPerHour |
সামগ্রিক প্ল্যানের "গ্লোবাল ডিউরেশন" হল সব গাড়ির সবচেয়ে আগে কার্যকর হওয়ার শুরুর সময় এবং সবচেয়ে পরে কার্যকর হওয়ার শেষ সময়ের মধ্যে পার্থক্য। উদাহরণস্বরূপ, ব্যবহারকারীরা সেই পরিমাণের জন্য ঘণ্টা-প্রতি-মূল্য অ্যাসাইন করতে পারেন যাতে যত তাড়াতাড়ি সম্ভব কাজ শেষ করার জন্য অপ্টিমাইজ করা যায়। এই খরচ |
durationDistanceMatrices[] |
মডেলে ব্যবহৃত সময়সীমা ও দূরত্বের ম্যাট্রিক্স নির্দিষ্ট করে। এই ফিল্ড খালি থাকলে, ব্যবহারের উদাহরণ:
|
durationDistanceMatrixSrcTags[] |
সময়সীমা ও দূরত্বের ম্যাট্রিক্সের সোর্স নির্ধারণকারী ট্যাগ; ট্যাগ |
durationDistanceMatrixDstTags[] |
সময়সীমা ও দূরত্বের ম্যাট্রিক্সের গন্তব্য নির্ধারণকারী ট্যাগ; ট্যাগ |
transitionAttributes[] |
মডেলে ট্রানজিশন অ্যাট্রিবিউট যোগ করা হয়েছে। |
shipmentTypeIncompatibilities[] |
মানানসই নয় এমন shipment_types-এর সেট ( |
shipmentTypeRequirements[] |
|
precedenceRules[] |
অগ্রাধিকার সংক্রান্ত নিয়মের সেট যা মডেলে অবশ্যই এনফোর্স করতে হবে। গুরুত্বপূর্ণ: অগ্রাধিকারের নিয়ম ব্যবহার করলে, অপ্টিমাইজ করা যেতে পারে এমন সমস্যার সাইজ সীমিত হয়ে যায়। অগ্রাধিকার সংক্রান্ত নিয়ম ব্যবহার করে করা অনুরোধে অনেক শিপমেন্ট থাকলে তা বাতিল করা হতে পারে। |
maxActiveVehicles |
অ্যাক্টিভ গাড়ির সর্বাধিক সংখ্যা সীমিত করে। কোনও গাড়ির রুট অন্তত একটি শিপমেন্ট সম্পূর্ণ করলে, সেই গাড়িটি অ্যাক্টিভ হিসেবে বিবেচিত হয়। গাড়ির সংখ্যার তুলনায় ড্রাইভারের সংখ্যা কম হলে এবং গাড়ির বহর বৈচিত্র্যময় হলে, রুটের সংখ্যা সীমিত করতে এটি ব্যবহার করা যেতে পারে। অপ্টিমাইজেশন তখন ব্যবহারের জন্য গাড়ির সেরা সাবসেট বেছে নেবে। অবশ্যই পজিটিভ হতে হবে। |
শিপমেন্ট
কোনও একটি আইটেম পিক-আপ করা থেকে শুরু করে ডেলিভারি করা পর্যন্ত শিপমেন্ট। শিপমেন্ট সম্পূর্ণ হয়েছে বলে বিবেচনা করার জন্য, একটি অনন্য গাড়িকে অবশ্যই তার পিক-আপ লোকেশনগুলির মধ্যে একটিতে যেতে হবে (এবং সেই অনুযায়ী তার অতিরিক্ত ক্ষমতা কমাতে হবে), তারপরে তার ডেলিভারি লোকেশনগুলির মধ্যে একটিতে যেতে হবে (এবং সেই অনুযায়ী তার অতিরিক্ত ক্ষমতা আবার বাড়াতে হবে)।
| JSON উপস্থাপনা |
|---|
{ "displayName": string, "pickups": [ { object ( |
| ফিল্ড | |
|---|---|
displayName |
শিপমেন্টের জন্য ব্যবহারকারীর সেট করা ডিসপ্লে নাম। এটি সর্বাধিক ৬৩ অক্ষরের হতে পারে এবং UTF-8 অক্ষর ব্যবহার করতে পারে। |
pickups[] |
শিপমেন্টের সাথে যুক্ত পিক-আপের বিকল্পের সেট। উল্লেখ করা না থাকলে, ডেলিভারির জন্য গাড়িকে শুধু সংশ্লিষ্ট লোকেশনে যেতে হবে। |
deliveries[] |
শিপমেন্টের সাথে যুক্ত ডেলিভারির বিকল্পের সেট। নির্দিষ্ট করা না থাকলে, গাড়িটিকে শুধুমাত্র পিক-আপের সাথে সম্পর্কিত লোকেশনে যেতে হবে। |
loadDemands |
শিপমেন্টের লোড সংক্রান্ত চাহিদা (যেমন ওজন, ভলিউম, প্যালেটের সংখ্যা ইত্যাদি)। ম্যাপের কীগুলি সংশ্লিষ্ট লোডের ধরন বর্ণনা করে শনাক্তকারী হওয়া উচিত, আদর্শভাবে ইউনিটগুলিও অন্তর্ভুক্ত করা উচিত। যেমন: "weight_kg", "volume_gallons", "pallet_count" ইত্যাদি। প্রদত্ত কী ম্যাপে না থাকলে, সংশ্লিষ্ট লোডকে ফাঁকা হিসেবে বিবেচনা করা হয়। |
allowedVehicleIndices[] |
এই শিপমেন্ট করতে পারে এমন গাড়ির সেট। খালি থাকলে, সব গাড়ি এটি করতে পারে। |
costsPerVehicle[] |
প্রতিটি গাড়ির মাধ্যমে এই শিপমেন্ট ডেলিভারি করার সময় যে খরচ হয় তা উল্লেখ করে। নির্দিষ্ট করা থাকলে, এতে অবশ্যই এগুলির মধ্যে যেকোনও একটি থাকতে হবে:
এই খরচগুলি অবশ্যই |
costsPerVehicleIndices[] |
গাড়ির সূচক যেখানে |
pickupToDeliveryAbsoluteDetourLimit |
পিক-আপ থেকে ডেলিভারি পর্যন্ত সবচেয়ে ছোট পথের তুলনায় সর্বাধিক অ্যাবসোলিউট ডিট্যুর সময় নির্দিষ্ট করে। উল্লেখ করা থাকলে, এটি অবশ্যই নেতিবাচক নয় এমন হতে হবে এবং শিপমেন্টে অন্তত একটি পিক-আপ এবং একটি ডেলিভারি থাকতে হবে। যেমন, ধরা যাক, বেছে নেওয়া পিক-আপ বিকল্প থেকে সরাসরি বেছে নেওয়া ডেলিভারি বিকল্পে যেতে সবচেয়ে কম সময় t লাগে। তারপর একই শিপমেন্টে আপেক্ষিক এবং পরম সীমা উভয়ই নির্দিষ্ট করা থাকলে, প্রতিটি সম্ভাব্য পিকআপ/ডেলিভারি পেয়ারের জন্য আরও সীমাবদ্ধ সীমা ব্যবহার করা হয়। ২০১৭/১০ থেকে, ভ্রমণের সময়সীমা গাড়ির উপর নির্ভর না করলে তবেই ডিট্যুর কাজ করে। |
pickupToDeliveryTimeLimit |
শিপমেন্টের পিক-আপ শুরু হওয়া থেকে ডেলিভারি শুরু হওয়া পর্যন্ত সর্বাধিক সময়সীমা নির্দিষ্ট করে। উল্লেখ করা থাকলে, এটি অবশ্যই নেতিবাচক নয় এমন হতে হবে এবং শিপমেন্টে অন্তত একটি পিক-আপ এবং একটি ডেলিভারি থাকতে হবে। পিক-আপ ও ডেলিভারির জন্য কোন বিকল্প বেছে নেওয়া হয়েছে অথবা গাড়ির স্পিড কত, তার উপর এটি নির্ভর করে না। এটি সর্বাধিক ডিট্যুর সীমাবদ্ধতার পাশাপাশি নির্দিষ্ট করা যেতে পারে: সমাধানটি উভয় স্পেসিফিকেশনকে সম্মান করবে। |
shipmentType |
এই শিপমেন্টের "ধরন" উল্লেখ করে এমন খালি নয় এমন স্ট্রিং। এই ফিচারটি
|
label |
এই শিপমেন্টের জন্য একটি লেবেল নির্দিষ্ট করে। এই লেবেলটি সংশ্লিষ্ট |
ignore |
যদি সত্য হয়, তাহলে এই শিপমেন্ট এড়িয়ে যান, তবে মডেলে কোনও
|
penaltyCost |
শিপমেন্ট সম্পূর্ণ না হলে, এই জরিমানা রুটের সামগ্রিক খরচের সাথে যোগ করা হয়। কোনও শিপমেন্টের পিক-আপ ও ডেলিভারির বিকল্পগুলির মধ্যে কোনও একটিতে ভিজিট করা হলে, শিপমেন্ট সম্পূর্ণ হয়েছে বলে বিবেচনা করা হয়। মডেলে খরচ-সম্পর্কিত অন্যান্য সব ফিল্ডের জন্য ব্যবহৃত একই ইউনিটে খরচ প্রকাশ করা যেতে পারে এবং এটি অবশ্যই পজিটিভ হতে হবে। গুরুত্বপূর্ণ: এই জরিমানা নির্দিষ্ট করা না থাকলে, এটি অসীম বলে বিবেচিত হয়, অর্থাৎ শিপমেন্ট সম্পূর্ণ করতেই হবে। |
pickupToDeliveryRelativeDetourLimit |
পিক-আপ থেকে ডেলিভারি পর্যন্ত সবচেয়ে ছোট পথের তুলনায় সর্বাধিক আপেক্ষিক ডিট্যুর সময় নির্দিষ্ট করে। উল্লেখ করা থাকলে, এটি অবশ্যই নেতিবাচক নয় এমন হতে হবে এবং শিপমেন্টে অন্তত একটি পিক-আপ এবং একটি ডেলিভারি থাকতে হবে। যেমন, ধরা যাক, বেছে নেওয়া পিক-আপ বিকল্প থেকে সরাসরি বেছে নেওয়া ডেলিভারি বিকল্পে যেতে সবচেয়ে কম সময় t লাগে। তারপর একই শিপমেন্টে আপেক্ষিক এবং পরম সীমা উভয়ই নির্দিষ্ট করা থাকলে, প্রতিটি সম্ভাব্য পিকআপ/ডেলিভারি পেয়ারের জন্য আরও সীমাবদ্ধ সীমা ব্যবহার করা হয়। ২০১৭/১০ থেকে, ভ্রমণের সময়সীমা গাড়ির উপর নির্ভর না করলে তবেই ডিট্যুর কাজ করে। |
VisitRequest
গাড়ির মাধ্যমে করা যেতে পারে এমন ভিজিটের জন্য অনুরোধ: এতে একটি জিও-লোকেশন (বা দুটি, নিচে দেখুন), টাইম উইন্ডো দ্বারা দেখানো খোলার এবং বন্ধ করার সময় এবং একটি পরিষেবার সময়কাল (পণ্য পিক-আপ বা ড্রপ-অফ করার জন্য গাড়িটি আসার পরে ব্যয় করা সময়) থাকে।
| 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 দেখুন। |
LatLng
এমন একটি অবজেক্ট যা অক্ষাংশ/দ্রাঘিমাংশ পেয়ারকে দেখায়। এটি অক্ষাংশ ও দ্রাঘিমাংশের ডিগ্রি দেখানোর জন্য ডাবলসের একটি জোড়া হিসেবে প্রকাশ করা হয়। অন্যভাবে উল্লেখ করা না থাকলে, এই অবজেক্টকে অবশ্যই WGS84 স্ট্যান্ডার্ড মেনে চলতে হবে। মান অবশ্যই স্বাভাবিক রেঞ্জের মধ্যে হতে হবে।
| JSON উপস্থাপনা |
|---|
{ "latitude": number, "longitude": number } |
| ফিল্ড | |
|---|---|
latitude |
অক্ষাংশ ডিগ্রিতে। এটি অবশ্যই [-৯০.০, +৯০.০] রেঞ্জের মধ্যে হতে হবে। |
longitude |
ডিগ্রিতে দ্রাঘিমাংশ। এটি অবশ্যই [-১৮০.০, +১৮০.০] রেঞ্জের মধ্যে হতে হবে। |
Waypoint
একটি ওয়েপয়েন্ট এনক্যাপসুলেট করে। ওয়েপয়েন্ট VisitRequests-এর পৌঁছানো ও রওনা হওয়ার লোকেশন এবং গাড়ির শুরু ও শেষের লোকেশন চিহ্নিত করে।
| JSON উপস্থাপনা |
|---|
{
"sideOfRoad": boolean,
"vehicleStopover": boolean,
// The following is a list of mutually exclusive fields. At most one of the
// fields will be set in a response:
"location": {
object ( |
| ফিল্ড | |
|---|---|
sideOfRoad |
ঐচ্ছিক। এটি দেখায় যে এই ওয়েপয়েন্টের লোকেশন রাস্তার একটি নির্দিষ্ট দিকে গাড়ি থামানোর জন্য পছন্দ করা হয়েছে। আপনি এই ভ্যালু সেট করলে, রুটটি লোকেশনের মধ্যে দিয়ে যাবে যাতে রাস্তার যেদিকে লোকেশনটি রয়েছে, রাস্তার সেই দিকে গাড়িটি থামতে পারে। 'হাঁটা' ভ্রমণ মোডের জন্য এই বিকল্প কাজ করে না। |
vehicleStopover |
এটি ইঙ্গিত করে যে ওয়েপয়েন্টটি গাড়ি থামানোর জন্য, যেখানে উদ্দেশ্য হল পিক-আপ বা ড্রপ-অফ করা। এই বিকল্পটি শুধুমাত্র 'ড্রাইভিং' ট্রাভেল মোডের জন্য এবং 'locationType' 'location' হলে কাজ করে। পরীক্ষামূলক: এই ফিল্ডের আচরণ বা অস্তিত্ব ভবিষ্যতে পরিবর্তিত হতে পারে। |
| কোনও লোকেশন দেখানোর বিভিন্ন উপায়। নিচে পারস্পরিকভাবে এক্সক্লুসিভ ফিল্ডের তালিকা দেওয়া হল। উত্তরে সর্বাধিক একটি ফিল্ড সেট করা হবে: | |
location |
ভৌগোলিক স্থানাঙ্ক ব্যবহার করে নির্দিষ্ট করা একটি পয়েন্ট, যার মধ্যে ঐচ্ছিক হেডিং অন্তর্ভুক্ত। |
placeId |
ওয়েপয়েন্টের সাথে যুক্ত POI প্লেস আইডি। VisitRequest-এর আগমন বা প্রস্থানের লোকেশন নির্দিষ্ট করার জন্য কোনও প্লেস আইডি ব্যবহার করার সময়, এমন একটি প্লেস আইডি ব্যবহার করুন যা সেই জায়গায় নেভিগেট করার জন্য LatLng লোকেশন নির্ধারণ করার জন্য যথেষ্ট নির্দিষ্ট। যেমন, কোনও বিল্ডিংয়ের জন্য প্লেস আইডি ব্যবহার করা যেতে পারে, কিন্তু কোনও রাস্তার জন্য প্লেস আইডি ব্যবহার করা উচিত নয়। |
| মিউচুয়ালি এক্সক্লুসিভ ফিল্ডের শেষ। | |
লোকেশন
একটি লোকেশন (একটি ভৌগোলিক পয়েন্ট এবং একটি ঐচ্ছিক শিরোনাম) এনক্যাপসুলেট করে।
| JSON উপস্থাপনা |
|---|
{
"latLng": {
object ( |
| ফিল্ড | |
|---|---|
latLng |
ওয়েপয়েন্টের ভৌগোলিক স্থানাঙ্ক। |
heading |
ট্রাফিকের গতির দিকনির্দেশের সাথে সম্পর্কিত কম্পাস হেডিং। পিক-আপ ও ড্রপ-অফের জন্য রাস্তার কোন দিক ব্যবহার করা হবে তা এই ভ্যালু থেকে বোঝা যায়। হেডিং ভ্যালু ০ থেকে ৩৬০ পর্যন্ত হতে পারে, যেখানে ০ হল উত্তর দিক, ৯০ হল পূর্ব দিক ইত্যাদি। |
TimeWindow
টাইম উইন্ডো কোনও ইভেন্টের সময়কে সীমাবদ্ধ করে, যেমন কোনও ভিজিটে পৌঁছানোর সময় অথবা কোনও গাড়ির শুরু ও শেষ হওয়ার সময়।
হার্ড টাইম উইন্ডো বাউন্ড, 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 |
এই খরচ অবশ্যই ধনাত্মক হতে হবে এবং |
গাড়ি
শিপমেন্ট সংক্রান্ত সমস্যার ক্ষেত্রে কোনও গাড়ির মডেল। শিপমেন্ট সংক্রান্ত সমস্যার সমাধান করলে, এই গাড়ির জন্য 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 |
একটি মাল্টিপ্লিকেটিভ ফ্যাক্টর নির্দিষ্ট করে যা এই গাড়ির ভ্রমণের সময় বাড়াতে বা কমাতে ব্যবহার করা যেতে পারে। যেমন, এটি ২.০-এ সেট করার অর্থ হল, এই গাড়িটি ধীরগতির এবং স্ট্যান্ডার্ড গাড়ির তুলনায় এর ভ্রমণের সময় দ্বিগুণ। এই মাল্টিপল ভিজিটের সময়সীমাকে প্রভাবিত করে না। সতর্কতা: এই গুণক প্রয়োগ করার পরে কিন্তু কোনও সংখ্যাগত অপারেশন করার আগে ভ্রমণের সময় নিকটতম সেকেন্ডে রাউন্ড অফ করা হবে, তাই ছোট গুণকের ফলে নির্ভুলতা কমে যেতে পারে। এছাড়াও, নিচে |
TravelMode
গাড়ির মাধ্যমে ব্যবহার করা যায় এমন ভ্রমণ মোড।
এগুলি Google Maps Platform Routes API-এর ভ্রমণ মোডের সাবসেট হওয়া উচিত, দেখুন: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteTravelMode
মনে রাখবেন: WALKING রুট বিটা ভার্সনে আছে এবং কখনও কখনও পরিষ্কার ফুটপাথ বা পথচারীদের জন্য রাস্তা নাও থাকতে পারে। আপনার অ্যাপে দেখানো সব হাঁটার রুটের জন্য ব্যবহারকারীকে এই সতর্কতা দেখাতে হবে।
| Enums | |
|---|---|
TRAVEL_MODE_UNSPECIFIED |
অনুল্লিখিত ভ্রমণ মোড, DRIVING-এর সমতুল্য। |
DRIVING |
গাড়ি চালানোর দিকনির্দেশ (গাড়ি, ...) অনুযায়ী ভ্রমণের মোড। |
WALKING |
হাঁটার দিকনির্দেশ অনুযায়ী ভ্রমণ মোড। |
TWO_WHEELER |
মোটরচালিত দুই চাকার গাড়ি। যেমন, মোটরসাইকেল। মনে রাখবেন, এটি সাইকেল চালিয়ে ভ্রমণ মোডের থেকে আলাদা, কারণ সাইকেল চালিয়ে ভ্রমণ মোডে মানুষের শারীরিক শক্তি ব্যবহার করে চালানো হয় এমন বাহন অন্তর্ভুক্ত। এই ট্রাভেল মোড শুধুমাত্র মোটরসাইকেলের জন্য কাজ করে এমন দেশ ও অঞ্চল-এর তালিকায় উল্লেখ করা দেশগুলিতে কাজ করে। |
RouteModifiers
গাড়ির রুট গণনা করার সময় পূরণ করার জন্য ঐচ্ছিক শর্তের একটি সেট এনক্যাপসুলেট করে। এটি Google Maps Platform 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
গাড়ি থেকে কীভাবে মালপত্র নামানো যাবে সেই সংক্রান্ত নীতি। শুধুমাত্র সেইসব শিপমেন্টের ক্ষেত্রে প্রযোজ্য যেগুলিতে পিক-আপ ও ডেলিভারি, দুটিই আছে।
অন্যান্য শিপমেন্ট unloadingPolicy-এর উপর নির্ভর না করে রুটের যেকোনও জায়গায় হতে পারে।
| Enums | |
|---|---|
UNLOADING_POLICY_UNSPECIFIED |
আনলোডিং নীতি উল্লেখ করা নেই; ডেলিভারি অবশ্যই সংশ্লিষ্ট পিকআপের পরে হতে হবে। |
LAST_IN_FIRST_OUT |
পিক-আপের বিপরীত ক্রমে ডেলিভারি করতে হবে |
FIRST_IN_FIRST_OUT |
পিক-আপের ক্রম অনুযায়ী ডেলিভারি করতে হবে |
LoadLimit
গাড়ির ক্ষেত্রে প্রযোজ্য লোড সীমা নির্ধারণ করে, যেমন "এই ট্রাকে শুধুমাত্র ৩৫০০ কেজি পর্যন্ত বহন করা যেতে পারে"। 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 |
সর্বাধিক গ্রহণযোগ্য লোড। ≥ ০ হতে হবে। অনির্দিষ্ট থাকলে, এই মেসেজের মাধ্যমে সর্বাধিক লোড সীমাবদ্ধ করা হয় না। দুটিই নির্দিষ্ট করা থাকলে, |
LoadCost
Transition-এর সময় এক ইউনিট লোড সরানোর খরচ। কোনও নির্দিষ্ট লোডের জন্য, খরচ দুটি অংশের যোগফল:
- min(load,
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-এর জন্য খরচ হল
- ট্রানজিশন ০: ০.০
- ট্রানজিশন ১: ২.০ * ১০ * ১.০ + ১০.০ * ০ * ১.০ = ২০.০
- ট্রানজিশন ২: ০.০
- ট্রানজিশন ৩: ২.০ * ১০ * ১.০ + ১০.০ * ০ * ১.০ = ২০.০
- ট্রানজিশন ৪: ০.০
এখানে রুটের উপর LoadCost হল ৪০.০।
LoadCost-এর জন্য ভারী-লোড ট্রানজিশন সহ সমাধান আরও ব্যয়বহুল হয়ে যায়।
এক্সপেরিমেন্টাল: আরও বিবরণের জন্য https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request দেখুন।
| JSON উপস্থাপনা |
|---|
{ "loadThreshold": string, "costPerUnitBelowThreshold": number, "costPerUnitAboveThreshold": number } |
| ফিল্ড | |
|---|---|
loadThreshold |
লোডের পরিমাণ যার উপরে লোডের একটি ইউনিট সরানোর খরচ costPerUnitBelowThreshold থেকে costPerUnitAboveThreshold-এ পরিবর্তিত হয়। >= ০ হতে হবে। |
costPerUnitBelowThreshold |
০ থেকে থ্রেশহোল্ডের মধ্যে প্রতিটি ইউনিটের জন্য, লোডের একটি ইউনিট সরানোর খরচ। অবশ্যই একটি সসীম মান হতে হবে এবং >= ০। |
costPerUnitAboveThreshold |
থ্রেশহোল্ডের উপরে প্রতিটি ইউনিটের জন্য, লোডের একটি ইউনিট সরানোর খরচ। বিশেষ ক্ষেত্রে থ্রেশহোল্ড = ০, এটি ইউনিট প্রতি একটি নির্দিষ্ট খরচ। অবশ্যই একটি সসীম মান হতে হবে এবং >= ০। |
DurationLimit
কোনও গাড়ির রুটের সর্বাধিক সময়সীমা নির্ধারণকারী সীমা। এটি শক্ত বা নরম হতে পারে।
সফ্ট লিমিট ফিল্ড সংজ্ঞায়িত করা হলে, সফ্ট ম্যাক্স থ্রেশহোল্ড এবং এর সাথে সম্পর্কিত খরচ একসাথে সংজ্ঞায়িত করতে হবে।
| JSON উপস্থাপনা |
|---|
{ "maxDuration": string, "softMaxDuration": string, "quadraticSoftMaxDuration": string, "costPerHourAfterSoftMax": number, "costPerSquareHourAfterQuadraticSoftMax": number } |
| ফিল্ড | |
|---|---|
maxDuration |
একটি হার্ড সীমা যা সর্বাধিক সময়সীমা পর্যন্ত সময়কালকে সীমাবদ্ধ করে। |
softMaxDuration |
একটি সফট সীমা যা সর্বাধিক সময়সীমা এনফোর্স করে না, তবে লঙ্ঘন করা হলে রুটের জন্য খরচ হয়। এই খরচটি একই ইউনিটের সাথে মডেলে সংজ্ঞায়িত অন্যান্য খরচের সাথে যোগ করে। নির্দিষ্ট করা থাকলে, |
quadraticSoftMaxDuration |
একটি সফট সীমা যা সর্বাধিক সময়সীমা প্রয়োগ করে না, তবে লঙ্ঘন করা হলে রুটটি একটি খরচ বহন করে, যা সময়কালের দ্বিঘাত। এই খরচটি একই ইউনিটের সাথে মডেলে সংজ্ঞায়িত অন্যান্য খরচের সাথে যোগ করে।
|
costPerHourAfterSoftMax |
খরচ অবশ্যই অঋণাত্মক হতে হবে। |
costPerSquareHourAfterQuadraticSoftMax |
সময়সীমা থ্রেশহোল্ডের নিচে থাকলে অতিরিক্ত খরচ ০ হয়, অন্যথায় খরচ সময়সীমার উপর নির্ভর করে, যেমন: খরচ অবশ্যই অঋণাত্মক হতে হবে। |
DistanceLimit
সর্বাধিক কত দূরত্ব ভ্রমণ করা যাবে তা নির্ধারণকারী সীমা। এটি শক্ত বা নরম হতে পারে।
সফ্ট লিমিট সংজ্ঞায়িত করা হলে, softMaxMeters এবং costPerKilometerAboveSoftMax দুটিকেই সংজ্ঞায়িত করতে হবে এবং তা অঋণাত্মক হতে হবে।
| JSON উপস্থাপনা |
|---|
{ "maxMeters": string, "softMaxMeters": string, "costPerKilometerBelowSoftMax": number, "costPerKilometerAboveSoftMax": number } |
| ফিল্ড | |
|---|---|
maxMeters |
দূরত্বকে সর্বাধিক maxMeters-এ সীমাবদ্ধ করার জন্য একটি হার্ড লিমিট। সীমা অবশ্যই অঋণাত্মক হতে হবে। |
softMaxMeters |
সফ্ট লিমিট সর্বাধিক দূরত্বের সীমা এনফোর্স করে না, তবে লঙ্ঘন করা হলে এমন একটি খরচ হয় যা মডেলে সংজ্ঞায়িত অন্যান্য খরচের সাথে একই ইউনিটে যোগ হয়। softMaxMeters উল্লেখ করা থাকলে, তা অবশ্যই maxMeters-এর থেকে কম এবং নন-নেগেটিভ হতে হবে। |
costPerKilometerBelowSoftMax |
কিলোমিটার প্রতি খরচ, এই খরচ |
costPerKilometerAboveSoftMax |
দূরত্ব খরচ অবশ্যই অঋণাত্মক হতে হবে। |
BreakRule
গাড়ির জন্য টাইম ব্রেক জেনারেট করার নিয়ম (যেমন, লাঞ্চ ব্রেক)। বিরতি হল এমন একটি সময়সীমা যার মধ্যে গাড়িটি তার বর্তমান অবস্থানে অলস থাকে এবং কোনও ভিজিট করতে পারে না। এইসব ক্ষেত্রে বিরতি হতে পারে:
- দুটি ভিজিটের মধ্যে যাতায়াতের সময় (যার মধ্যে ভিজিটের ঠিক আগে বা ঠিক পরের সময় অন্তর্ভুক্ত, তবে ভিজিটের মাঝের সময় নয়), যেক্ষেত্রে এটি ভিজিটের মধ্যে সংশ্লিষ্ট ট্রানজিট সময়কে বাড়িয়ে দেয়,
- অথবা গাড়ি চালু করার আগে (বিরতির মাঝে গাড়ি চালু নাও হতে পারে), এই ক্ষেত্রে এটি গাড়ি চালু করার সময়কে প্রভাবিত করে না।
- অথবা গাড়ির শেষ (একইভাবে, গাড়ির শেষ সময়ের সাথে)।
| JSON উপস্থাপনা |
|---|
{ "breakRequests": [ { object ( |
| ফিল্ড | |
|---|---|
breakRequests[] |
বিরতির ক্রম। |
frequencyConstraints[] |
একাধিক |
BreakRequest
প্রতিটি গাড়ির ক্ষেত্রে প্রযোজ্য বিরতির ক্রম (অর্থাৎ, তাদের সংখ্যা এবং ক্রম) আগে থেকেই জানা থাকতে হবে। বারবার আসা BreakRequest সেই ক্রমকে সংজ্ঞায়িত করে, যে ক্রমে সেগুলি অবশ্যই ঘটবে। তাদের টাইম উইন্ডো (earliestStartTime / latestStartTime) ওভারল্যাপ করতে পারে, তবে সেগুলি অবশ্যই অর্ডারের সাথে মানানসই হতে হবে (এটি চেক করা হয়েছে)।
| JSON উপস্থাপনা |
|---|
{ "earliestStartTime": string, "latestStartTime": string, "minDuration": string } |
| ফিল্ড | |
|---|---|
earliestStartTime |
প্রয়োজনীয়। বিরতি শুরুর নিম্ন সীমা (অন্তর্ভুক্ত)। RFC 3339 ব্যবহার করে, যেখানে জেনারেট করা আউটপুট সবসময় Z-নরমালাইজড হবে এবং ০, ৩, ৬ বা ৯টি ভগ্নাংশ সংখ্যা ব্যবহার করবে। "Z" ছাড়া অন্যান্য অফসেটও গ্রহণ করা হয়। যেমন: |
latestStartTime |
প্রয়োজনীয়। বিরতি শুরুর উচ্চ সীমা (অন্তর্ভুক্ত)। RFC 3339 ব্যবহার করে, যেখানে জেনারেট করা আউটপুট সবসময় Z-নরমালাইজড হবে এবং ০, ৩, ৬ বা ৯টি ভগ্নাংশ সংখ্যা ব্যবহার করবে। "Z" ছাড়া অন্যান্য অফসেটও গ্রহণ করা হয়। যেমন: |
minDuration |
প্রয়োজনীয়। বিরতির ন্যূনতম সময়সীমা। পজিটিভ হতে হবে। |
FrequencyConstraint
উপরে উল্লেখ করা বিরতির ফ্রিকোয়েন্সি ও সময়সীমা আরও সীমাবদ্ধ করা যেতে পারে, যেমন "প্রতি ১২ ঘণ্টায় অন্তত ১ ঘণ্টার বিরতি নিতেই হবে"। ধরে নেওয়া যাক যে, এটিকে "১২ ঘণ্টার যেকোনও স্লাইডিং টাইম উইন্ডোর মধ্যে, কমপক্ষে এক ঘণ্টার অন্তত একটি বিরতি থাকতে হবে" হিসেবে ব্যাখ্যা করা যেতে পারে, সেই উদাহরণটি নিম্নলিখিত FrequencyConstraint-এ অনুবাদ করা হবে:
{
minBreakDuration { seconds: 3600 } # 1 hour.
maxInterBreakDuration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
সমাধানে বিরতির সময় এবং সময়কাল এই ধরনের সমস্ত সীমাবদ্ধতা মেনে চলবে, এর সাথে BreakRequest-এ আগে থেকে নির্দিষ্ট করা সময়সীমা এবং ন্যূনতম সময়কালও মেনে চলবে।
FrequencyConstraint-এর ক্ষেত্রে পরপর নয় এমন বিরতি প্রযোজ্য হতে পারে। যেমন, নিম্নলিখিত শিডিউল "প্রতি ১২ ঘণ্টায় ১ ঘণ্টা" উদাহরণ মেনে চলে:
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 |
প্রয়োজনীয়। এই সীমাবদ্ধতার জন্য বিরতির ন্যূনতম সময়সীমা। ঋণাত্মক নয়। |
maxInterBreakDuration |
প্রয়োজনীয়। রুটের যেকোনও সময়ের ব্যবধানের সর্বাধিক অনুমোদিত স্প্যান যাতে অন্তত আংশিকভাবে |
উদ্দেশ্য
উদ্দেশ্য খরচ মডেলকে সম্পূর্ণভাবে প্রতিস্থাপন করে এবং তাই আগে থেকে থাকা খরচের সাথে মানানসই নয়। প্রতিটি উদ্দেশ্য, যেমন, গাড়ি, শিপমেন্ট বা ট্রানজিশন অ্যাট্রিবিউটের জন্য পূর্ব-নির্ধারিত খরচের সাথে ম্যাপ করা হয়।
এক্সপেরিমেন্টাল: আরও বিবরণের জন্য https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request দেখুন।
| JSON উপস্থাপনা |
|---|
{
"type": enum ( |
| ফিল্ড | |
|---|---|
type |
উদ্দেশ্যের ধরন। |
weight |
অন্যান্য উদ্দেশ্যের তুলনায় এই উদ্দেশ্য কতটা গুরুত্বপূর্ণ। এটি যেকোনও ধনাত্মক সংখ্যা হতে পারে, ওয়েটের যোগফল ১ হতে হবে এমন কোনও বাধ্যবাধকতা নেই। ডিফল্ট ওয়েট হল ১.০। |
ধরন
উদ্দেশ্যের ধরন যা খরচের সেটে ম্যাপ করা হবে।
| Enums | |
|---|---|
DEFAULT |
একটি যুক্তিসঙ্গত সমাধান নিশ্চিত করতে, খরচের একটি ডিফল্ট সেট ব্যবহার করা হবে। মনে রাখবেন: এই উদ্দেশ্যটি নিজে থেকেই ব্যবহার করা যেতে পারে, তবে ব্যবহারকারীর নির্দিষ্ট করা উদ্দেশ্যগুলিতে বেসলাইন হিসাবে সর্বদা ১.০ ওয়েট সহ যোগ করা হবে, যদি এটি আগে থেকে উপস্থিত না থাকে। |
MIN_DISTANCE |
"MIN" উদ্দেশ্য। ভ্রমণের মোট দূরত্ব কমান। |
MIN_WORKING_TIME |
সব গাড়ির মোট কাজের সময় কম করুন। |
MIN_TRAVEL_TIME |
উপরের মতোই, তবে শুধু ভ্রমণের সময়ের উপর ফোকাস করা। |
MIN_NUM_VEHICLES |
ব্যবহৃত গাড়ির সংখ্যা কম করুন। |
DurationDistanceMatrix
ভিজিট ও গাড়ির শুরুর লোকেশন থেকে ভিজিট ও গাড়ির শেষ লোকেশন পর্যন্ত সময় ও দূরত্বের ম্যাট্রিক্স নির্দিষ্ট করে।
| JSON উপস্থাপনা |
|---|
{
"rows": [
{
object ( |
| ফিল্ড | |
|---|---|
rows[] |
সময়সীমা ও দূরত্বের ম্যাট্রিক্সের সারি নির্দিষ্ট করে। এতে অবশ্যই |
vehicleStartTag |
এই সময়সীমা ও দূরত্বের ম্যাট্রিক্স কোন কোন গাড়ির ক্ষেত্রে প্রযোজ্য তা নির্ধারণকারী ট্যাগ। খালি থাকলে, এটি সব গাড়ির ক্ষেত্রে প্রযোজ্য এবং শুধুমাত্র একটি ম্যাট্রিক্স থাকতে পারে। প্রতিটি গাড়ির স্টার্ট অবশ্যই একটি ম্যাট্রিক্সের সাথে মিলতে হবে, অর্থাৎ তাদের সব ম্যাট্রিক্সের আলাদা |
সারি
সময়সীমা ও দূরত্বের ম্যাট্রিক্সের একটি সারি নির্দিষ্ট করে।
| JSON উপস্থাপনা |
|---|
{ "durations": [ string ], "meters": [ number ] } |
| ফিল্ড | |
|---|---|
durations[] |
কোনও সারির জন্য সময়সীমার ভ্যালু। এতে অবশ্যই |
meters[] |
প্রদত্ত সারির জন্য দূরত্বের মান। মডেলে দূরত্বের সাথে সম্পর্কিত কোনও খরচ বা সীমাবদ্ধতা না থাকলে, এটি খালি রাখা যেতে পারে; অন্যথায় এতে অবশ্যই |
TransitionAttributes
একটি রুটে পরপর দুটি ভিজিটের মধ্যে ট্রানজিশনের অ্যাট্রিবিউট নির্দিষ্ট করে। একই ট্রানজিশনে একাধিক TransitionAttributes প্রযোজ্য হতে পারে: সেক্ষেত্রে, সব অতিরিক্ত খরচ যোগ করা হয় এবং সবচেয়ে কঠোর সীমাবদ্ধতা বা সীমা প্রযোজ্য হয় (স্বাভাবিক "AND" শব্দার্থবিদ্যা অনুসরণ করে)।
| JSON উপস্থাপনা |
|---|
{
"srcTag": string,
"excludedSrcTag": string,
"dstTag": string,
"excludedDstTag": string,
"cost": number,
"costPerKilometer": number,
"distanceLimit": {
object ( |
| ফিল্ড | |
|---|---|
srcTag |
এইসব অ্যাট্রিবিউট প্রযোজ্য হয় এমন (src->dst) ট্রানজিশনের সেটকে সংজ্ঞায়িত করা ট্যাগ। কোনও সোর্স ভিজিট বা গাড়ি স্টার্ট করার ঘটনা তখনই ম্যাচ করে যখন এর |
excludedSrcTag |
|
dstTag |
গন্তব্য ভিজিট বা গাড়ির যাত্রা শেষ হওয়ার তথ্য তখনই মেলে যখন এর |
excludedDstTag |
|
cost |
এই ট্রানজিশন পারফর্ম করার জন্য খরচ নির্দিষ্ট করে। এটি মডেলের অন্যান্য সমস্ত খরচের মতো একই ইউনিটে রয়েছে এবং অবশ্যই নেতিবাচক হবে না। এটি আগে থেকে থাকা অন্যান্য সব খরচের উপরে প্রযোজ্য হয়। |
costPerKilometer |
এই ট্রানজিশন করার সময় ভ্রমণ করা দূরত্বের জন্য প্রতি কিলোমিটারে খরচ নির্দিষ্ট করে। এটি গাড়িতে উল্লেখ করা যেকোনও |
distanceLimit |
এই ট্রানজিশন করার সময় ভ্রমণ করা দূরত্বের উপর একটি সীমা নির্দিষ্ট করে। ২০২১/০৬ থেকে, শুধুমাত্র সফট লিমিট কাজ করে। |
delay |
এই ট্রানজিশন পারফর্ম করার সময় হওয়া বিলম্ব নির্দিষ্ট করে। এই বিলম্ব সবসময় সোর্স ভিজিট শেষ করার পরে এবং গন্তব্য ভিজিট শুরু করার আগে ঘটে। |
ShipmentTypeIncompatibility
shipmentType-এর উপর নির্ভর করে শিপমেন্টের মধ্যে অসঙ্গতি নির্দিষ্ট করে। একই রুটে বেমানান শিপমেন্টের উপস্থিতি বেমানান মোডের উপর ভিত্তি করে সীমাবদ্ধ করা হয়।
| JSON উপস্থাপনা |
|---|
{
"types": [
string
],
"incompatibilityMode": enum ( |
| ফিল্ড | |
|---|---|
types[] |
মানানসই নয় এমন ধরনের তালিকা। তালিকাভুক্ত শিপমেন্টের মধ্যে দুটি শিপমেন্টের |
incompatibilityMode |
মানানসই না হওয়ার ক্ষেত্রে মোড প্রয়োগ করা হয়েছে। |
IncompatibilityMode
একই রুটে বেমানান শিপমেন্টের উপস্থিতি কীভাবে সীমাবদ্ধ করা হয় তা নির্ধারণকারী মোড।
| Enums | |
|---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
অনুল্লিখিত 'ইনকমপ্যাটিবিলিটি' মোড। এই ভ্যালু কখনও ব্যবহার করা উচিত নয়। |
NOT_PERFORMED_BY_SAME_VEHICLE |
এই মোডে, বেমানান ধরনের দুটি শিপমেন্ট কখনও একই গাড়ি শেয়ার করতে পারে না। |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
এই মোডে, বেমানান ধরনের দুটি শিপমেন্ট একই সময়ে একই গাড়িতে কখনও থাকতে পারে না:
|
ShipmentTypeRequirement
shipmentType-এর উপর ভিত্তি করে শিপমেন্টের মধ্যে প্রয়োজনীয়তা নির্দিষ্ট করে। প্রয়োজনীয়তার মোড অনুযায়ী প্রয়োজনীয়তার নির্দিষ্ট বিবরণ সংজ্ঞায়িত করা হয়।
| JSON উপস্থাপনা |
|---|
{
"requiredShipmentTypeAlternatives": [
string
],
"dependentShipmentTypes": [
string
],
"requirementMode": enum ( |
| ফিল্ড | |
|---|---|
requiredShipmentTypeAlternatives[] |
|
dependentShipmentTypes[] |
মনে রাখবেন: প্রয়োজনীয়তার এমন চেইন যেখানে |
requirementMode |
প্রয়োজনীয়তার ক্ষেত্রে মোড প্রয়োগ করা হয়েছে। |
RequirementMode
একটি রুটে নির্ভরশীল শিপমেন্টের উপস্থিতি নির্ধারণকারী মোড।
| Enums | |
|---|---|
REQUIREMENT_MODE_UNSPECIFIED |
অনির্দিষ্ট প্রয়োজনীয় মোড। এই ভ্যালু কখনও ব্যবহার করা উচিত নয়। |
PERFORMED_BY_SAME_VEHICLE |
এই মোডে, সব "নির্ভরশীল" শিপমেন্টকে অবশ্যই তাদের অন্তত একটি "প্রয়োজনীয়" শিপমেন্টের মতো একই গাড়ি শেয়ার করতে হবে। |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
তাই "নির্ভরশীল" শিপমেন্ট পিক-আপে অবশ্যই এগুলির মধ্যে কোনও একটি থাকতে হবে:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
আগের মতোই, তবে "নির্ভরশীল" শিপমেন্টের ক্ষেত্রে ডেলিভারি করার সময় তাদের গাড়িতে একটি "প্রয়োজনীয়" শিপমেন্ট থাকতে হবে। |
PrecedenceRule
দুটি ইভেন্টের মধ্যে অগ্রাধিকারের নিয়ম (প্রতিটি ইভেন্ট হল শিপমেন্ট পিক-আপ বা ডেলিভারি করা): "প্রথম" ইভেন্ট শুরু হওয়ার অন্তত offsetDuration পরে "দ্বিতীয়" ইভেন্ট শুরু করতে হবে।
একাধিক পূর্ববর্তী ঘটনা একই (বা সম্পর্কিত) ইভেন্টকে উল্লেখ করতে পারে, যেমন, "A ডেলিভারি করার পরে B পিক-আপ করা হয়" এবং "B পিক-আপ করার পরে C পিক-আপ করা হয়"।
এছাড়াও, দুটি শিপমেন্টই করা হলে তবেই অগ্রাধিকার প্রযোজ্য হয়, অন্যথায় তা উপেক্ষা করা হয়।
| JSON উপস্থাপনা |
|---|
{ "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer } |
| ফিল্ড | |
|---|---|
firstIsDelivery |
"প্রথম" ইভেন্টটি ডেলিভারি কিনা তা নির্দেশ করে। |
secondIsDelivery |
"দ্বিতীয়" ইভেন্টটি ডেলিভারি কিনা তা নির্দেশ করে। |
offsetDuration |
"প্রথম" এবং "দ্বিতীয়" ইভেন্টের মধ্যে অফসেট। এটি নেগেটিভ হতে পারে। |
firstIndex |
"প্রথম" ইভেন্টের শিপমেন্ট ইনডেক্স। এই ফিল্ডটি নির্দিষ্ট করতে হবে। |
secondIndex |
"দ্বিতীয়" ইভেন্টের শিপমেন্ট ইনডেক্স। এই ফিল্ডটি নির্দিষ্ট করতে হবে। |