ইউ-টার্ন এড়ানো

`ShipmentModel.Shipment`-এর `pickups` এবং `deliveries` অবজেক্টগুলোতে ইউ-টার্ন পরিহারের ব্যবস্থা রয়েছে।

ইউ-টার্ন এভয়ডেন্স হলো একটি রুট অপটিমাইজেশন ফিচার যা যানবাহনকে কোনো ভিজিটের নির্দিষ্ট পিকআপ বা ডেলিভারি লোকেশনে ঘুরে দাঁড়ানো থেকে বিরত রাখে। ইউ-টার্ন এভয়ডেন্স সেট করার মাধ্যমে আপনি নির্দিষ্ট করে দেন যে, যানবাহনটি কোনো ভিজিট লোকেশনে পৌঁছানোর এবং সেখান থেকে চলে যাওয়ার সময় একই দিকে মুখ করে থাকবে।

ইউ-টার্ন পরিহার নিম্নলিখিত উপায়ে কাজ করে:

  1. আপনি একটি নির্দিষ্ট ভিজিটে ইউ-টার্ন এড়ানোর বৈশিষ্ট্যটি সেট করেছেন।
  2. এপিআইটি দ্বিমুখী রাস্তায় চলাচলের উভয় দিক বিবেচনা করে সবচেয়ে উপযুক্ত পথটি বেছে নেয়।
  3. এপিআইটি এমন একটি রুট তৈরি করে যেখানে যানবাহনটি গন্তব্যে কোনো ইউ-টার্ন না নিয়ে পৌঁছায় এবং সেখান থেকে চলে যায়। এই গন্তব্যে পৌঁছানোর জন্য চালককে রাস্তা পার হতে হতে পারে।

যেসব ক্ষেত্রে গাড়ির আকার, ট্র্যাফিক চিহ্ন বা সাধারণ যান চলাচলের অবস্থার কারণে ইউ-টার্ন নেওয়া কঠিন বা অসম্ভব, সেসব ক্ষেত্রে এই সম্পত্তিটি আদর্শ।

বৈশিষ্ট্য

ইউ-টার্ন পরিহার বৈশিষ্ট্যটি VisitRequest অবজেক্টের মধ্যে সংজ্ঞায়িত করা হয়। এই অবজেক্টটি একটি চালানের pickups এবং deliveries অ্যারের ভিতরে ব্যবহৃত হয়।

সম্পত্তি প্রকার বর্ণনা
avoidUTurns বুলিয়ান ' true সেট করা হলে, এপিআইটি যানবাহনটিকে এই নির্দিষ্ট স্থানে ইউ-টার্ন নিতে বাধা দেয়। যানবাহনটি একই দিকে মুখ করে আসবে এবং একই দিকে মুখ করে চলে যাবে।

উদাহরণ

এই অংশে দুই ধরনের উদাহরণ আলোচনা করা হয়েছে:

  • ইউ-টার্ন পরিহারের কাঠামো ব্যাখ্যা করে এমন কোডের নমুনা।
  • একটি অনুরোধের উদাহরণ, যাতে ফিচারটি অন্তর্ভুক্ত রয়েছে।

কোডের নমুনা

নিম্নলিখিত উদাহরণটি একটি পিকআপ এবং একটি ডেলিভারির মধ্যে avoidUTurns এর গঠন দেখায়:

"pickups":[
  {
    "arrivalLocation": {
      "latitude": 37.42506261000996,
      "longitude": -122.09535511930135
    },
    "avoidUTurns": true
  }
],
"deliveries":[
  {
    "arrivalLocation": {
      "latitude": 37.42421503206021,
      "longitude": -122.09526063135228
    },
    "avoidUTurns": true
  }
]

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

নিম্নলিখিত উদাহরণটি একটি মৌলিক optimizeTours অনুরোধ দেখায় যা ইউ-টার্ন এড়ানোর ব্যবস্থা অন্তর্ভুক্ত করে। এই অনুরোধটিতে নিম্নলিখিত উপাদানগুলি রয়েছে:

  • model অবজেক্টটির ভিতরে পিকআপ এবং ডেলিভারি সহ একটি চালান।
  • পিকআপ এবং ডেলিভারি উভয় স্থানেই avoidUTurns প্রপার্টিটি true সেট করা হয়েছে, যাতে ঐ স্টপগুলোতে যানবাহন দিক পরিবর্তন করতে না পারে।
  {
    "model": {
      "shipments":[
        {
          "pickups":[
            {
              "arrivalLocation": {
                "latitude": 37.42506261000996,
                "longitude": -122.09535511930135
              },
              "avoidUTurns": true
            }
          ],
          "deliveries":[
            {
              "arrivalLocation": {
                "latitude": 37.42421503206021,
                "longitude": -122.09526063135228
              },
              "avoidUTurns": true
            }
          ]
        }
      ],
      "vehicles":[
        {
          "travelMode": "DRIVING",
          "costPerKilometer": 1.0
        }
      ]
    }
  }

sideOfRoad ইউ-টার্ন এড়িয়ে চলুন

যদিও sideOfRoad একটি আলাদা ফিচার, এটি ইউ-টার্ন এভয়ডেন্সের সাথে ঘনিষ্ঠভাবে সম্পর্কিত, কারণ এটি গাড়িকে গন্তব্যের সবচেয়ে কাছের রাস্তার পাশে চালিত করে অনেক ইউ-টার্ন প্রতিরোধ করে। এর ফলে গাড়িটি একটি নির্দিষ্ট দিক থেকে গন্তব্যস্থলের দিকে যেতে বাধ্য হয়, যা ইউ-টার্ন করার প্রয়োজনীয়তা দূর করে।

বাস্তবে, পরিদর্শনের স্থানে পৌঁছানোর জন্য পায়ে হেঁটে রাস্তা পার হওয়া নিরাপদ হলেই আপনার ইউ-টার্ন পরিহার ব্যবহার করা উচিত। যদি রাস্তা পার হওয়া নিরুৎসাহিত করা হয় বা সম্ভব না হয়, তবে এর পরিবর্তে sideOfRoad ' true সেট করার কথা বিবেচনা করুন।

sideOfRoad প্রপার্টিটি একটি Waypoint অবজেক্টের মধ্যে সংজ্ঞায়িত করা হয়।

অন্যান্য বৈশিষ্ট্যের সাথে মিথস্ক্রিয়া

ইউ-টার্ন পরিহার ব্যবস্থা অন্যান্য রাউটিং বৈশিষ্ট্যগুলির সাথে নিম্নলিখিত উপায়ে কাজ করে:

  • রাস্তার পাশ: avoidUTurns এবং sideOfRoad উভয়কেই true সেট করলে, গাড়িটিকে পরিদর্শনের স্থানের সবচেয়ে কাছের রাস্তার পাশে চালিত করার সময় ইউ-টার্ন এড়ানোর সম্ভাবনা সামান্য বেড়ে যায়। তবে, এমনটা করলে ইউ-টার্ন এড়ানোর সীমাবদ্ধতা সম্পর্কিত অতিরিক্ত জটিলতা তৈরি হয়। বেশিরভাগ পরিদর্শনের স্থানের জন্য, ইউ-টার্ন এড়াতে এই প্রপার্টিগুলোর মধ্যে যেকোনো একটি সেট করাই যথেষ্ট।
  • ইনজেক্টেড সলিউশন: যখন আপনি ইউ-টার্ন এভয়ডেন্স ব্যবহার করেন, তখন এপিআই রেসপন্সে তৈরি হওয়া ShipmentRoute.Visit এর ভেতরে একটি injectedSolutionLocationToken অন্তর্ভুক্ত থাকে, যা রাস্তার কোন পাশটি বেছে নেওয়া হয়েছে তা রেকর্ড করে। ভবিষ্যতে কোনো অনুরোধে যদি আপনি এই ভিজিটটিকে ইনজেক্টেড সলিউশন হিসেবে পুনরায় ব্যবহার করেন, তবে আপনাকে অবশ্যই এই টোকেনটি এপিআই-তে ফেরত পাঠাতে হবে।

সীমাবদ্ধতা

ইউ-টার্ন পরিহার একটি সর্বোত্তম প্রচেষ্টামূলক বৈশিষ্ট্য। নিম্নলিখিত শর্তগুলোর অধীনে এপিআই একটি তৈরি করা রুটে ইউ-টার্ন অন্তর্ভুক্ত করতে পারে:

  • ভ্রমণ মোডটি DRIVING ছাড়া অন্য কোনো মোডে সেট করা আছে।
  • একটি নির্দিষ্ট ভ্রমণ স্থানের আগমন এবং প্রস্থান স্থান ভিন্ন। এক্ষেত্রে, এপিআই একটি ত্রুটি প্রদর্শন করে।
  • পরিদর্শন স্থানটি একটি বন্ধ রাস্তায় অবস্থিত, যেখান থেকে বের হওয়ার জন্য ইউ-টার্ন নিতে হয়।
  • ইউ-টার্নটি প্রকৃত পরিদর্শন স্থানে না হয়ে, বরং পথ বরাবর ঘটে।
  • এই কৌশলটি হলো ভিন্ন একটি রাস্তায় খুব তীক্ষ্ণভাবে মোড় নেওয়া, যাকে এপিআই (API) ইউ-টার্ন হিসেবে শ্রেণিবদ্ধ করে না।