Package google.maps.routeoptimization.v1

সূচক

রুট অপ্টিমাইজেশান

যানবাহন ট্যুর অপ্টিমাইজ করার জন্য একটি পরিষেবা।

নির্দিষ্ট ধরণের ক্ষেত্রের বৈধতা:

  • google.protobuf.Timestamp
    • সময়গুলি ইউনিক্স সময়ে: 1970-01-01T00:00:00+00:00 থেকে সেকেন্ড।
    • সেকেন্ড অবশ্যই [0, 253402300799], অর্থাৎ [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00]-এ হতে হবে।
    • nanos আনসেট বা 0 এ সেট করা আবশ্যক।
  • google.protobuf.Duration
    • সেকেন্ড অবশ্যই [0, 253402300799], অর্থাৎ [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00]-এ হতে হবে।
    • nanos আনসেট বা 0 এ সেট করা আবশ্যক।
  • google.type.LatLng
    • অক্ষাংশ অবশ্যই [-90.0, 90.0]-এ হতে হবে।
    • দ্রাঘিমাংশ অবশ্যই [-180.0, 180.0]-এর মধ্যে হতে হবে।
    • অক্ষাংশ এবং দ্রাঘিমাংশের অন্তত একটি অ-শূন্য হতে হবে।
ব্যাচঅপ্টিমাইজ ট্যুরস

rpc BatchOptimizeTours( BatchOptimizeToursRequest ) returns ( Operation )

একটি ব্যাচ হিসাবে এক বা একাধিক OptimizeToursRequest বার্তাগুলির জন্য গাড়ির ট্যুর অপ্টিমাইজ করে৷

এই পদ্ধতিটি একটি লং রানিং অপারেশন (LRO)। অপ্টিমাইজেশনের জন্য ইনপুট ( OptimizeToursRequest বার্তা) এবং আউটপুট ( OptimizeToursResponse বার্তা) ক্লাউড স্টোরেজ থেকে/এ ব্যবহারকারী-নির্দিষ্ট বিন্যাসে পড়া/লেখা হয়। OptimizeTours পদ্ধতির মতো, প্রতিটি OptimizeToursRequest একটি ShipmentModel থাকে এবং ShipmentRoute s সম্বলিত একটি OptimizeToursResponse প্রদান করে, যা সামগ্রিক খরচ কমিয়ে যানবাহনের দ্বারা সঞ্চালিত রুটের একটি সেট।

অনুমোদনের সুযোগ

নিম্নলিখিত OAuth সুযোগ প্রয়োজন:

  • https://www.googleapis.com/auth/cloud-platform
অপটিমাইজ ট্যুরস

rpc OptimizeTours( OptimizeToursRequest ) returns ( OptimizeToursResponse )

একটি ShipmentModel সম্বলিত একটি OptimizeToursRequest পাঠায় এবং ShipmentRoute s সম্বলিত একটি OptimizeToursResponse ফেরত দেয়, যা সামগ্রিক খরচ কমিয়ে যানবাহনের দ্বারা সম্পাদিত রুটের একটি সেট।

একটি ShipmentModel মডেল প্রধানত Shipment নিয়ে গঠিত যা চালাতে হবে এবং Vehicle যা Shipment পরিবহনের জন্য ব্যবহার করা যেতে পারে৷ ShipmentRoute Vehicle Shipment বরাদ্দ করে৷ আরও নির্দিষ্টভাবে, তারা প্রতিটি গাড়ির জন্য একটি সিরিজ Visit নির্ধারণ করে, যেখানে একটি Visit একটি VisitRequest সাথে মিলে যায়, যা একটি Shipment জন্য একটি পিকআপ বা ডেলিভারি।

লক্ষ্য হল Vehicle ShipmentRoute একটি অ্যাসাইনমেন্ট প্রদান করা যা মোট খরচ কমিয়ে দেয় যেখানে খরচের অনেকগুলি উপাদান ShipmentModel সংজ্ঞায়িত করা হয়েছে৷

অনুমোদনের সুযোগ

নিম্নলিখিত OAuth সুযোগ প্রয়োজন:

  • https://www.googleapis.com/auth/cloud-platform

সমষ্টিগত মেট্রিক্স

ShipmentRoute এর জন্য সমষ্টিগত মেট্রিক্স ( OptimizeToursResponse জন্য সমস্ত Transition এবং/অথবা Visit (সমস্ত ShipmentRoute উপর রেসপন্স) উপাদান।

ক্ষেত্র
performed_shipment_count

int32

সঞ্চালিত চালানের সংখ্যা. মনে রাখবেন যে একটি পিকআপ এবং ডেলিভারি জুটি শুধুমাত্র একবার গণনা করা হয়।

travel_duration

Duration

একটি রুট বা একটি সমাধানের জন্য মোট ভ্রমণের সময়কাল।

wait_duration

Duration

একটি রুট বা একটি সমাধানের জন্য মোট অপেক্ষার সময়কাল।

delay_duration

Duration

একটি রুট বা একটি সমাধানের জন্য মোট বিলম্বের সময়কাল।

break_duration

Duration

একটি রুট বা একটি সমাধানের জন্য মোট বিরতির সময়কাল।

visit_duration

Duration

একটি রুট বা একটি সমাধানের জন্য মোট পরিদর্শন সময়কাল।

total_duration

Duration

মোট সময়কাল উপরের সমস্ত সময়কালের যোগফলের সমান হওয়া উচিত। রুটের জন্য, এটি এর সাথেও মিলে যায়:

[ShipmentRoute.vehicle_end_time][google.maps.routeoptimization.v1.ShipmentRoute.vehicle_end_time] - [ShipmentRoute.vehicle_start_time][google.maps.routeoptimization.v1.ShipmentRoute.vehicle_start_time]
travel_distance_meters

double

একটি রুট বা একটি সমাধানের জন্য মোট ভ্রমণ দূরত্ব।

max_loads

map<string, VehicleLoad >

এই রুটের প্রতিটি পরিমাণের জন্য (resp. সমাধান) সমগ্র রুটে অর্জিত সর্বাধিক লোড (resp. solution), সমস্ত Transition.vehicle_loads (resp. ShipmentRoute.metrics.max_loads ) এর উপর সর্বাধিক হিসাবে গণনা করা হয়েছে।

BatchOptimizeToursMetadata

এই ধরনের কোন ক্ষেত্র আছে.

BatchOptimizeToursRequest কলের জন্য অপারেশন মেটাডেটা।

BatchOptimizeToursRequest

একটি অ্যাসিঙ্ক্রোনাস অপারেশন হিসাবে ব্যাচ অপ্টিমাইজ ট্যুর করার অনুরোধ। প্রতিটি ইনপুট ফাইলে একটি OptimizeToursRequest থাকা উচিত এবং প্রতিটি আউটপুট ফাইলে একটি OptimizeToursResponse থাকবে। অনুরোধে ফাইলগুলি পড়া/লেখা এবং পার্স করার তথ্য রয়েছে। সমস্ত ইনপুট এবং আউটপুট ফাইল একই প্রকল্পের অধীনে হওয়া উচিত।

ক্ষেত্র
parent

string

প্রয়োজন। একটি কল করতে লক্ষ্য প্রকল্প এবং অবস্থান.

বিন্যাস: * projects/{project-id} * projects/{project-id}/locations/{location-id}

কোনো অবস্থান নির্দিষ্ট না থাকলে, একটি অঞ্চল স্বয়ংক্রিয়ভাবে বেছে নেওয়া হবে।

model_configs[]

AsyncModelConfig

প্রয়োজন। প্রতিটি ক্রয় মডেলের ইনপুট/আউটপুট তথ্য, যেমন ফাইল পাথ এবং ডেটা ফরম্যাট।

AsyncModelConfig

অসিঙ্ক্রোনাসভাবে একটি অপ্টিমাইজেশন মডেল সমাধানের জন্য তথ্য।

ক্ষেত্র
display_name

string

ঐচ্ছিক। ব্যবহারকারীর সংজ্ঞায়িত মডেল নাম, মডেলের ট্র্যাক রাখতে ব্যবহারকারীদের দ্বারা উপনাম হিসাবে ব্যবহার করা যেতে পারে।

input_config

InputConfig

প্রয়োজন। ইনপুট মডেল সম্পর্কে তথ্য।

output_config

OutputConfig

প্রয়োজন। পছন্দসই আউটপুট অবস্থান তথ্য.

BatchOptimizeToursResponse

এই ধরনের কোন ক্ষেত্র আছে.

একটি BatchOptimizeToursRequest এর প্রতিক্রিয়া। অপারেশন সম্পূর্ণ হওয়ার পর এটি লং রানিং অপারেশনে ফিরিয়ে দেওয়া হয়।

BreakRule

একটি যানবাহনের জন্য সময় বিরতি তৈরি করার নিয়ম (যেমন লাঞ্চ বিরতি)। একটি বিরতি হল একটি সংলগ্ন সময়কাল যেখানে যানবাহনটি তার বর্তমান অবস্থানে নিষ্ক্রিয় থাকে এবং কোনও পরিদর্শন করতে পারে না। একটি বিরতি ঘটতে পারে:

  • দুটি ভিজিটের মধ্যে ভ্রমণের সময় (যার মধ্যে একটি ভিজিটের আগে বা ঠিক পরে সময় থাকে, তবে ভিজিটের মাঝখানে নয়), এই ক্ষেত্রে এটি ভিজিটের মধ্যে সংশ্লিষ্ট ট্রানজিট সময়কে প্রসারিত করে,
  • বা যানবাহন শুরু হওয়ার আগে (একটি বিরতির মাঝখানে যানবাহন শুরু নাও হতে পারে), এই ক্ষেত্রে এটি গাড়ির শুরুর সময়কে প্রভাবিত করে না।
  • বা যানবাহন শেষ হওয়ার পরে (এভাবে, গাড়ির শেষ সময় সহ)।
ক্ষেত্র
break_requests[]

BreakRequest

বিরতির ক্রম। BreakRequest বার্তাটি দেখুন।

frequency_constraints[]

FrequencyConstraint

বেশ কিছু FrequencyConstraint প্রযোজ্য হতে পারে। এই BreakRule এর BreakRequest s দ্বারা তাদের সকলকে অবশ্যই সন্তুষ্ট হতে হবে। FrequencyConstraint দেখুন।

ব্রেক রিকোয়েস্ট

বিরতির ক্রম (অর্থাৎ তাদের সংখ্যা এবং ক্রম) যা প্রতিটি গাড়ির জন্য প্রযোজ্য তা অবশ্যই আগে থেকেই জানা উচিত। পুনরাবৃত্ত BreakRequest গুলি সেই ক্রমটিকে সংজ্ঞায়িত করে, যে ক্রমে সেগুলি ঘটতে হবে৷ তাদের সময় উইন্ডো ( earliest_start_time / latest_start_time ) ওভারল্যাপ হতে পারে, কিন্তু সেগুলি অবশ্যই অর্ডারের সাথে সামঞ্জস্যপূর্ণ হতে হবে (এটি চেক করা হয়েছে)।

ক্ষেত্র
earliest_start_time

Timestamp

প্রয়োজন। বিরতির শুরুতে লোয়ার বাউন্ড (অন্তর্ভুক্ত)।

latest_start_time

Timestamp

প্রয়োজন। বিরতির শুরুতে আপার বাউন্ড (ইনক্লুসিভ)।

min_duration

Duration

প্রয়োজন। বিরতির ন্যূনতম সময়কাল। ইতিবাচক হতে হবে।

ফ্রিকোয়েন্সি সীমাবদ্ধতা

একটি ন্যূনতম বিরতির ফ্রিকোয়েন্সি প্রয়োগ করে উপরে উল্লেখিত বিরতির ফ্রিকোয়েন্সি এবং সময়কালকে আরও সীমাবদ্ধ করতে পারে, যেমন "প্রতি 12 ঘন্টায় কমপক্ষে 1 ঘন্টা বিরতি থাকতে হবে"। ধরে নিলাম যে এটিকে "12 ঘন্টার যেকোনো স্লাইডিং টাইম উইন্ডোর মধ্যে, কমপক্ষে এক ঘন্টার একটি বিরতি থাকতে হবে" হিসাবে ব্যাখ্যা করা যেতে পারে, এই উদাহরণটি নিম্নলিখিত FrequencyConstraint অনুবাদ করবে:

{
   min_break_duration { seconds: 3600 }         # 1 hour.
   max_inter_break_duration { seconds: 39600 }  # 11 hours (12 - 1 = 11).
}

সমাধানে বিরতির সময় এবং সময়কাল এই ধরনের সমস্ত সীমাবদ্ধতাকে সম্মান করবে, BreakRequest এ ইতিমধ্যে নির্দিষ্ট করা সময় উইন্ডো এবং ন্যূনতম সময়কাল ছাড়াও।

একটি FrequencyConstraint অনুশীলনে অ-পরপর বিরতিতে প্রযোজ্য হতে পারে। উদাহরণস্বরূপ, নিম্নলিখিত সময়সূচী "প্রতি 12 ঘন্টা" উদাহরণকে সম্মান করে:

  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
ক্ষেত্র
min_break_duration

Duration

প্রয়োজন। এই সীমাবদ্ধতার জন্য ন্যূনতম বিরতির সময়কাল। নেতিবাচক। FrequencyConstraint বিবরণ দেখুন।

max_inter_break_duration

Duration

প্রয়োজন। রুটের যেকোনো সময়ের ব্যবধানের সর্বাধিক অনুমোদিত স্প্যান যা অন্তত আংশিকভাবে duration >= min_break_duration । ইতিবাচক হতে হবে।

ডেটা ফরম্যাট

ইনপুট এবং আউটপুট ফাইলের জন্য ডেটা বিন্যাস।

Enums
DATA_FORMAT_UNSPECIFIED অবৈধ মান, বিন্যাস অবশ্যই অনির্দিষ্ট হওয়া উচিত নয়৷
JSON জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন।
PROTO_TEXT প্রোটোকল বাফার টেক্সট ফরম্যাট। https://protobuf.dev/reference/protobuf/textformat-spec/ দেখুন

দূরত্বসীমা

ভ্রমণ করা যেতে পারে এমন একটি সর্বোচ্চ দূরত্ব সংজ্ঞায়িত করে। এটা শক্ত বা নরম হতে পারে।

যদি একটি নরম সীমা সংজ্ঞায়িত করা হয়, তাহলে soft_max_meters এবং cost_per_kilometer_above_soft_max উভয়কেই সংজ্ঞায়িত করতে হবে এবং অঋণাত্মক হতে হবে।

ক্ষেত্র
max_meters

int64

একটি কঠিন সীমা যা দূরত্বকে সর্বাধিক max_meters হতে বাধা দেয়৷ সীমাটি অবশ্যই নেতিবাচক হতে হবে।

soft_max_meters

int64

একটি নরম সীমা সর্বোচ্চ দূরত্বের সীমা বলবৎ করে না, কিন্তু লঙ্ঘন করলে একটি খরচ হয় যা একই ইউনিটের সাথে মডেলে সংজ্ঞায়িত অন্যান্য খরচের সাথে যোগ করে।

যদি সংজ্ঞায়িত করা হয় soft_max_meters অবশ্যই max_meters এর থেকে কম হতে হবে এবং অবশ্যই nonnegative হতে হবে।

cost_per_kilometer_above_soft_max

double

দূরত্ব soft_max_meters সীমার উপরে হলে প্রতি কিলোমিটার খরচ। দূরত্ব সীমার নিচে থাকলে অতিরিক্ত খরচ 0 হয়, অন্যথায় খরচ গণনা করার জন্য ব্যবহৃত সূত্রটি নিম্নরূপ:

  (distance_meters - soft_max_meters) / 1000.0 *
  cost_per_kilometer_above_soft_max.

খরচ nonnegative হতে হবে.

Gcs গন্তব্য

Google ক্লাউড স্টোরেজের অবস্থান যেখানে আউটপুট ফাইল(গুলি) লেখা হবে৷

ক্ষেত্র
uri

string

প্রয়োজন। Google ক্লাউড স্টোরেজ ইউআরআই।

GcsSource

Google ক্লাউড স্টোরেজ অবস্থান যেখান থেকে ইনপুট ফাইল পড়া হবে।

ক্ষেত্র
uri

string

প্রয়োজন। gs://bucket/path/to/object ফর্ম্যাট সহ একটি Google ক্লাউড স্টোরেজ অবজেক্টের URI।

Injected Solution Constraint

কোন ভিজিটগুলিকে সীমাবদ্ধ করা উচিত এবং কীভাবে সেগুলিকে সীমাবদ্ধ করা উচিত সে সম্পর্কে তথ্য সহ অনুরোধে সমাধান ইনজেকশন করা হয়েছে৷

ক্ষেত্র
routes[]

ShipmentRoute

ইনজেকশন সমাধানের রুট। মূল সমাধান থেকে কিছু রুট বাদ দেওয়া যেতে পারে। রুট এবং এড়িয়ে যাওয়া শিপমেন্টগুলিকে অবশ্যই injected_first_solution_routes এর জন্য তালিকাভুক্ত মৌলিক বৈধতা অনুমানগুলি পূরণ করতে হবে৷

skipped_shipments[]

SkippedShipment

ইনজেকশনের সমাধানের চালান এড়িয়ে গেছে। মূল সমাধান থেকে কিছু বাদ দেওয়া যেতে পারে। routes ক্ষেত্র দেখুন.

constraint_relaxations[]

ConstraintRelaxation

যানবাহনের শূন্য বা তার বেশি গ্রুপের জন্য, কখন এবং কতটা সীমাবদ্ধতা শিথিল করতে হবে তা নির্দিষ্ট করে। যদি এই ক্ষেত্রটি খালি থাকে, সমস্ত অ-খালি যানবাহন রুট সম্পূর্ণরূপে সীমাবদ্ধ।

সীমাবদ্ধতা শিথিলকরণ

যানবাহনের একটি গ্রুপের জন্য, পরিদর্শনে কোন প্রান্তিক (গুলি) সীমাবদ্ধতা শিথিল করা হবে এবং কোন স্তরে তা নির্দিষ্ট করে৷ skipped_shipment ক্ষেত্রে তালিকাভুক্ত শিপমেন্টগুলি এড়ানোর জন্য সীমাবদ্ধ; অর্থাৎ, তারা সঞ্চালিত করা যাবে না.

ক্ষেত্র
relaxations[]

Relaxation

সমস্ত ভিজিট সীমাবদ্ধতা শিথিলতা যা vehicle_indices যানবাহন সহ রুটে পরিদর্শনের ক্ষেত্রে প্রযোজ্য হবে।

vehicle_indices[]

int32

যানবাহনের সূচকগুলি নির্দিষ্ট করে যেখানে পরিদর্শন সীমাবদ্ধতা relaxations প্রযোজ্য। খালি থাকলে, এটি ডিফল্ট হিসাবে বিবেচিত হয় এবং relaxations সমস্ত যানবাহনের ক্ষেত্রে প্রযোজ্য হয় যেগুলি অন্যান্য constraint_relaxations নির্দিষ্ট করা হয়নি। সেখানে সর্বাধিক একটি ডিফল্ট থাকতে পারে, অর্থাৎ, সর্বাধিক একটি সীমাবদ্ধতা শিথিলকরণ ক্ষেত্রে খালি vehicle_indices অনুমোদিত। একটি যানবাহন সূচক শুধুমাত্র একবার তালিকাভুক্ত করা যেতে পারে, এমনকি বেশ কয়েকটি constraint_relaxations মধ্যেও।

একটি গাড়ির সূচী ShipmentRoute.vehicle_index এর মতই ম্যাপ করা হয়, যদি interpret_injected_solutions_using_labels সত্য হয় ( fields মন্তব্য দেখুন)।

শিথিলতা

relaxations খালি থাকলে, routes সমস্ত দর্শনের শুরুর সময় এবং ক্রম সম্পূর্ণরূপে সীমাবদ্ধ থাকে এবং সেই রুটে কোনও নতুন ভিজিট সন্নিবেশ করা বা যোগ করা যাবে না। এছাড়াও, routes একটি গাড়ির শুরু এবং শেষের সময় সম্পূর্ণরূপে সীমাবদ্ধ, যতক্ষণ না গাড়িটি খালি থাকে (অর্থাৎ, কোনও ভিজিট নেই এবং মডেলটিতে মিথ্যা সেট used_if_route_is_empty করা হয়েছে)।

relaxations(i).level একটি পরিদর্শন #j-এ প্রয়োগ করা সীমাবদ্ধতা শিথিলকরণ স্তর নির্দিষ্ট করে যা সন্তুষ্ট করে:

  • route.visits(j).start_time >= relaxations(i).threshold_time AND
  • j + 1 >= relaxations(i).threshold_visit_count

একইভাবে, গাড়ির স্টার্ট relaxations(i).level শিথিল করা হয় যদি এটি সন্তুষ্ট করে:

  • vehicle_start_time >= relaxations(i).threshold_time AND
  • relaxations(i).threshold_visit_count == 0 এবং গাড়ির শেষ relaxations(i).level শিথিল করা হয় যদি এটি সন্তুষ্ট হয়:
  • vehicle_end_time >= relaxations(i).threshold_time এবং
  • route.visits_size() + 1 >= relaxations(i).threshold_visit_count

একটি শিথিলকরণ স্তর প্রয়োগ করতে যদি একটি ভিজিট threshold_visit_count বা threshold_time একই level সাথে দুটি relaxations যোগ করে: একটি শুধুমাত্র threshold_visit_count সেট সহ এবং অন্যটি শুধুমাত্র threshold_time সেট সহ। যদি একটি পরিদর্শন একাধিক relaxations শর্তগুলিকে সন্তুষ্ট করে, তবে সবচেয়ে শিথিল স্তরটি প্রযোজ্য। ফলস্বরূপ, যানবাহন শুরু থেকে রুট পরিদর্শনের মধ্য দিয়ে যান শেষ পর্যন্ত, শিথিলকরণ স্তরটি আরও শিথিল হয়ে ওঠে: অর্থাৎ, রুটটি অগ্রসর হওয়ার সাথে সাথে শিথিলকরণ স্তরটি হ্রাস পাচ্ছে না।

রুট ভিজিটের সময় এবং ক্রম যা কোন relaxations থ্রেশহোল্ড শর্ত পূরণ করে না তা সম্পূর্ণরূপে সীমাবদ্ধ এবং এই ক্রমগুলিতে কোন ভিজিট সন্নিবেশিত করা যাবে না। এছাড়াও, যদি একটি গাড়ির শুরু বা শেষ কোনো শিথিলতার শর্ত পূরণ না করে তবে সময় নির্দিষ্ট করা হয়, যদি না গাড়িটি খালি থাকে।

ক্ষেত্র
level

Level

সীমাবদ্ধতা শিথিলকরণ স্তর যা প্রযোজ্য হয় যখন threshold_time এ বা তার পরে এবং কমপক্ষে threshold_visit_count সন্তুষ্ট হয়।

threshold_time

Timestamp

যে সময় বা তার পরে শিথিলকরণ level প্রয়োগ করা যেতে পারে।

threshold_visit_count

int32

পরিদর্শনের সংখ্যা বা তার পরে শিথিলকরণ level প্রয়োগ করা যেতে পারে। যদি threshold_visit_count 0 হয় (বা সেট করা হয়নি), তাহলে গাড়ির স্টার্টে level সরাসরি প্রয়োগ করা হতে পারে।

যদি এটি route.visits_size() + 1 হয় তবে level শুধুমাত্র গাড়ির প্রান্তে প্রয়োগ করা যেতে পারে। যদি এটি route.visits_size() + 1 এর চেয়ে বেশি হয়, তবে সেই রুটের জন্য level মোটেও প্রয়োগ করা হয় না।

স্তর

বিভিন্ন সীমাবদ্ধতা শিথিলকরণ স্তরগুলি প্রকাশ করে, যা একটি পরিদর্শনের জন্য প্রয়োগ করা হয় এবং যেগুলি থ্রেশহোল্ড শর্তগুলিকে সন্তুষ্ট করার সময় অনুসরণ করে৷

নীচের গণনাটি শিথিলকরণ বৃদ্ধির ক্রম অনুসারে।

Enums
LEVEL_UNSPECIFIED

অন্তর্নিহিত ডিফল্ট শিথিলকরণ স্তর: কোন সীমাবদ্ধতা শিথিল করা হয় না, অর্থাৎ, সমস্ত পরিদর্শন সম্পূর্ণরূপে সীমাবদ্ধ।

এই মানটি স্পষ্টভাবে level ব্যবহার করা উচিত নয়।

RELAX_VISIT_TIMES_AFTER_THRESHOLD ভিজিট শুরুর সময় এবং গাড়ির শুরু/শেষের সময় শিথিল করা হবে, কিন্তু প্রতিটি ভিজিট একই গাড়ির সাথে আবদ্ধ থাকবে এবং ভিজিট সিকোয়েন্স অবশ্যই পালন করতে হবে: তাদের মধ্যে বা তাদের আগে কোন ভিজিট ঢোকানো যাবে না।
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD RELAX_VISIT_TIMES_AFTER_THRESHOLD এর মতোই, তবে ভিজিট সিকোয়েন্সটিও শিথিল: ভিজিটগুলি কেবল তাদের গাড়িতে আবদ্ধ থাকে৷
RELAX_ALL_AFTER_THRESHOLD RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD এর মতোই, তবে গাড়িটিও শিথিল: থ্রেশহোল্ডের সময় বা তার পরে পরিদর্শন সম্পূর্ণ বিনামূল্যে এবং সম্ভাব্যভাবে অকার্যকর হয়ে যেতে পারে।

ইনপুট কনফিগারেশন

[BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours]-এর জন্য একটি ইনপুট নির্দিষ্ট করুন।

ক্ষেত্র
data_format

DataFormat

প্রয়োজন। ইনপুট তথ্য বিন্যাস.

ইউনিয়ন ক্ষেত্র source । প্রয়োজন। source নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
gcs_source

GcsSource

একটি Google ক্লাউড স্টোরেজ অবস্থান। এটি একটি একক বস্তু (ফাইল) হতে হবে।

অবস্থান

একটি অবস্থান (একটি ভৌগলিক বিন্দু, এবং একটি ঐচ্ছিক শিরোনাম) এনক্যাপসুলেট করে।

ক্ষেত্র
lat_lng

LatLng

ওয়েপয়েন্টের ভৌগলিক স্থানাঙ্ক।

heading

int32

কম্পাস শিরোনাম ট্র্যাফিক প্রবাহের দিকের সাথে যুক্ত। পিকআপ এবং ড্রপ-অফের জন্য ব্যবহার করার জন্য রাস্তার পাশে নির্দিষ্ট করতে এই মানটি ব্যবহার করা হয়। শিরোনামের মান 0 থেকে 360 পর্যন্ত হতে পারে, যেখানে 0 সঠিক উত্তরের একটি শিরোনাম নির্দিষ্ট করে, 90 পূর্বের পূর্বের শিরোনাম উল্লেখ করে ইত্যাদি।

অপটিমাইজ ট্যুর রিকোয়েস্ট

একটি ট্যুর অপ্টিমাইজেশান সমাধানকারীকে দেওয়ার অনুরোধ যা সমাধানের জন্য শিপমেন্ট মডেলের পাশাপাশি অপ্টিমাইজেশন প্যারামিটারগুলিকে সংজ্ঞায়িত করে৷

ক্ষেত্র
parent

string

প্রয়োজন। একটি কল করতে লক্ষ্য প্রকল্প বা অবস্থান.

বিন্যাস: * projects/{project-id} * projects/{project-id}/locations/{location-id}

কোনো অবস্থান নির্দিষ্ট না থাকলে, একটি অঞ্চল স্বয়ংক্রিয়ভাবে বেছে নেওয়া হবে।

timeout

Duration

এই টাইমআউট সেট করা থাকলে, টাইমআউট পিরিয়ড অতিবাহিত হওয়ার আগে বা সিঙ্ক্রোনাস অনুরোধের জন্য সার্ভারের সময়সীমা পৌঁছে যাওয়ার আগে সার্ভার একটি প্রতিক্রিয়া প্রদান করে, যেটি তাড়াতাড়ি হয়।

অ্যাসিঙ্ক্রোনাস অনুরোধের জন্য, সময় শেষ হওয়ার আগে সার্ভার একটি সমাধান (যদি সম্ভব হয়) তৈরি করবে।

model

ShipmentModel

সমাধানের জন্য চালানের মডেল।

solving_mode

SolvingMode

ডিফল্টরূপে, সমাধানের মোড হল DEFAULT_SOLVE (0)।

search_mode

SearchMode

অনুসন্ধান মোড অনুরোধ সমাধান করতে ব্যবহৃত.

injected_first_solution_routes[]

ShipmentRoute

পূর্ববর্তী সমাধানের অনুরূপ একটি প্রথম সমাধান খুঁজে পেতে অপ্টিমাইজেশান অ্যালগরিদমকে গাইড করুন।

প্রথম সমাধান নির্মিত হলে মডেলটি সীমাবদ্ধ। কোনো রুটে সঞ্চালিত নয় এমন কোনো চালান প্রথম সমাধানে পরোক্ষভাবে বাদ দেওয়া হয়, তবে সেগুলো ধারাবাহিক সমাধানে সঞ্চালিত হতে পারে।

সমাধানটি অবশ্যই কিছু মৌলিক বৈধতা অনুমান পূরণ করবে:

  • সমস্ত রুটের জন্য, vehicle_index অবশ্যই পরিসরে থাকতে হবে এবং নকল করা যাবে না।
  • সমস্ত ভিজিটের জন্য, shipment_index এবং visit_request_index অবশ্যই পরিসরে থাকতে হবে।
  • একটি চালান শুধুমাত্র একটি রুটে উল্লেখ করা যেতে পারে.
  • একটি পিকআপ-ডেলিভারি চালানের পিকআপ ডেলিভারির আগে সঞ্চালিত করা আবশ্যক।
  • একটি চালানের একাধিক পিকআপ বিকল্প বা বিতরণ বিকল্প সঞ্চালিত হতে পারে না।
  • সব রুটের জন্য, সময় বাড়ছে (যেমন, vehicle_start_time <= visits[0].start_time <= visits[1].start_time ... <= vehicle_end_time )।
  • একটি চালান শুধুমাত্র অনুমোদিত যানবাহনে সঞ্চালিত হতে পারে। Shipment.allowed_vehicle_indices খালি থাকলে বা এর vehicle_index Shipment.allowed_vehicle_indices এ অন্তর্ভুক্ত থাকলে একটি গাড়ির অনুমতি দেওয়া হয়।

যদি ইনজেকশন দেওয়া দ্রবণটি সম্ভব না হয়, তবে একটি বৈধতা ত্রুটি অগত্যা ফেরত দেওয়া হয় না এবং এর পরিবর্তে অসম্ভাব্যতা নির্দেশ করে একটি ত্রুটি ফেরত দেওয়া হতে পারে।

injected_solution_constraint

InjectedSolutionConstraint

অপ্টিমাইজেশান অ্যালগরিদম সীমাবদ্ধ করুন একটি চূড়ান্ত সমাধান খুঁজে পেতে যা পূর্ববর্তী সমাধানের মতো। উদাহরণস্বরূপ, এটি রুটের অংশগুলিকে হিমায়িত করতে ব্যবহার করা যেতে পারে যা ইতিমধ্যে সম্পন্ন হয়েছে বা যা সম্পূর্ণ করা হবে কিন্তু সংশোধন করা উচিত নয়।

যদি ইনজেকশন দেওয়া দ্রবণটি সম্ভব না হয়, তবে একটি বৈধতা ত্রুটি অগত্যা ফেরত দেওয়া হয় না এবং এর পরিবর্তে অসম্ভাব্যতা নির্দেশ করে একটি ত্রুটি ফেরত দেওয়া হতে পারে।

refresh_details_routes[]

ShipmentRoute

যদি খালি না হয়, প্রদত্ত রুটগুলি রিফ্রেশ করা হবে, তাদের ভিজিট বা ভ্রমণের সময়গুলির অন্তর্নিহিত ক্রম পরিবর্তন না করে: শুধুমাত্র অন্যান্য বিবরণ আপডেট করা হবে। এটি মডেলের সমাধান করে না।

2020/11 অনুসারে, এটি শুধুমাত্র খালি নয় এমন রুটের পলিলাইনগুলিকে পপুলেট করে এবং প্রয়োজন যে populate_polylines সত্য।

পাস করা রুটের route_polyline ক্ষেত্রগুলি রুট transitions সাথে অসামঞ্জস্যপূর্ণ হতে পারে।

এই ক্ষেত্রটি অবশ্যই injected_first_solution_routes বা injected_solution_constraint এর সাথে ব্যবহার করা উচিত নয়।

Shipment.ignore এবং Vehicle.ignore আচরণের উপর কোন প্রভাব ফেলে না। সংশ্লিষ্ট চালান বা যানবাহন উপেক্ষা করা হোক না কেন, সমস্ত অ-খালি রুটে সমস্ত ভিজিটের মধ্যে পলিলাইনগুলি এখনও জনবহুল।

interpret_injected_solutions_using_labels

bool

সত্য হলে:

  • অনুরোধে যানবাহনের সাথে একটি ইনজেকশনযুক্ত দ্রবণে রুট মেলানোর জন্য vehicle_index এর পরিবর্তে ShipmentRoute.vehicle_label ব্যবহার করে; খালি না থাকলে ConstraintRelaxation.vehicle_indices আপডেট করতে আসল ShipmentRoute.vehicle_index এর ম্যাপিং নতুন ShipmentRoute.vehicle_index এ পুনরায় ব্যবহার করে, কিন্তু ম্যাপিংটি অবশ্যই দ্ব্যর্থহীন হতে হবে (অর্থাৎ, একাধিক ShipmentRoute s একই মূল vehicle_index শেয়ার করা উচিত নয়)।
  • অনুরোধে শিপমেন্টের সাথে একটি ইনজেকশন করা সমাধানে ভিজিট মেলাতে shipment_index এর পরিবর্তে ShipmentRoute.Visit.shipment_label ব্যবহার করে;
  • অনুরোধ শিপমেন্টের সাথে ইনজেকশন করা দ্রবণে এড়িয়ে যাওয়া শিপমেন্টের সাথে মেলাতে SkippedShipment.index এর পরিবর্তে SkippedShipment.label ব্যবহার করে।

এই ব্যাখ্যাটি injected_first_solution_routes , injected_solution_constraint , এবং refresh_details_routes ক্ষেত্রে প্রযোজ্য। এটি ব্যবহার করা যেতে পারে যখন অনুরোধে চালান বা যানবাহনের সূচকগুলি সমাধানটি তৈরি হওয়ার পর থেকে পরিবর্তিত হয়, সম্ভবত শিপমেন্ট বা যানবাহন অনুরোধ থেকে সরানো হয়েছে বা যোগ করা হয়েছে।

সত্য হলে, নিম্নলিখিত বিভাগের লেবেলগুলি অবশ্যই তাদের বিভাগে একবারে উপস্থিত হতে হবে:

যদি ইনজেকশনের দ্রবণে একটি vehicle_label একটি অনুরোধ গাড়ির সাথে মিল না থাকে, তাহলে সংশ্লিষ্ট রুটটি তার পরিদর্শন সহ সমাধান থেকে সরানো হয়। যদি ইনজেকশনের দ্রবণে একটি shipment_label একটি অনুরোধ চালানের সাথে সঙ্গতিপূর্ণ না হয়, তাহলে সংশ্লিষ্ট ভিজিটটি সমাধান থেকে সরানো হয়। যদি ইনজেকশন করা দ্রবণে একটি SkippedShipment.label অনুরোধ চালানের সাথে সামঞ্জস্যপূর্ণ না হয়, SkippedShipment সমাধান থেকে সরানো হয়।

একটি ইনজেকশনযুক্ত দ্রবণ থেকে রুট ভিজিট বা সম্পূর্ণ রুটগুলি সরানো অন্তর্নিহিত সীমাবদ্ধতার উপর প্রভাব ফেলতে পারে, যা সমাধানে পরিবর্তন, বৈধতা ত্রুটি বা অসম্ভাব্যতা হতে পারে।

দ্রষ্টব্য: কলকারীকে অবশ্যই নিশ্চিত করতে হবে যে প্রতিটি Vehicle.label (resp. Shipment.label ) দুটি প্রাসঙ্গিক অনুরোধ জুড়ে ব্যবহৃত একটি যানবাহন (resp. শিপমেন্ট) সত্তাকে স্বতন্ত্রভাবে সনাক্ত করে: অতীতের অনুরোধ যা ইনজেকশনের সমাধানে ব্যবহৃত OptimizeToursResponse তৈরি করেছিল এবং বর্তমান অনুরোধ যাতে ইনজেকশনের সমাধান অন্তর্ভুক্ত থাকে। উপরে বর্ণিত স্বতন্ত্রতা পরীক্ষাগুলি এই প্রয়োজনীয়তার গ্যারান্টি দেওয়ার জন্য যথেষ্ট নয়।

consider_road_traffic

bool

ShipmentRoute , Visit.start_time , এবং vehicle_end_time Transition.travel_duration ShipmentRoute.has_traffic_infeasibilities ক্ষেত্র সেট করতে এবং OptimizeToursResponse.total_cost ফিল্ড গণনা করতে।

populate_polylines

bool

সত্য হলে, ShipmentRoute s এর প্রতিক্রিয়ায় পলিলাইনগুলি পপুলেট করা হবে।

populate_transition_polylines

bool

সত্য হলে, ShipmentRoute.transitions প্রতিক্রিয়ায় পলিলাইনগুলি পপুলেট করা হবে।

allow_large_deadline_despite_interruption_risk

bool

যদি এটি সেট করা থাকে, তাহলে অনুরোধের একটি সময়সীমা থাকতে পারে ( https://grpc.io/blog/deadlines দেখুন) 60 মিনিট পর্যন্ত। অন্যথায়, সর্বোচ্চ সময়সীমা মাত্র 30 মিনিট। মনে রাখবেন যে দীর্ঘস্থায়ী অনুরোধগুলির একটি উল্লেখযোগ্যভাবে বড় (কিন্তু এখনও ছোট) বাধার ঝুঁকি রয়েছে।

use_geodesic_distances

bool

যদি সত্য হয়, ভ্রমণের দূরত্বগুলি Google মানচিত্রের দূরত্বের পরিবর্তে জিওডেসিক দূরত্ব ব্যবহার করে গণনা করা হবে, এবং ভ্রমণের সময়গুলি জিওডেসিক দূরত্ব ব্যবহার করে গণনা করা হবে geodesic_meters_per_second দ্বারা সংজ্ঞায়িত গতির সাথে।

label

string

এই অনুরোধ শনাক্ত করতে ব্যবহার করা হতে পারে এমন লেবেল, OptimizeToursResponse.request_label এ আবার রিপোর্ট করা হয়েছে।

geodesic_meters_per_second

double

যখন use_geodesic_distances সত্য হয়, তখন এই ক্ষেত্রটি অবশ্যই সেট করতে হবে এবং ভ্রমণের সময় গণনা করার জন্য প্রয়োগ করা গতি সংজ্ঞায়িত করতে হবে। এর মান কমপক্ষে 1.0 মিটার/সেকেন্ড হতে হবে।

max_validation_errors

int32

প্রত্যাবর্তিত বৈধতা ত্রুটির সংখ্যা ছেঁটে ফেলে৷ এই ত্রুটিগুলি সাধারণত একটি INVALID_ARGUMENT ত্রুটির পেলোডের সাথে একটি BadRequest ত্রুটি বিশদ বিবরণ ( https://cloud.google.com/apis/design/errors#error_details ) হিসাবে সংযুক্ত থাকে, যদি না solving_mode=VALIDATE_ONLY: OptimizeToursResponse.validation_errors field_validation দেখুন৷ এটি ডিফল্ট 100 এবং 10,000 এ সীমাবদ্ধ।

অনুসন্ধান মোড

মোড অনুসন্ধানের আচরণকে সংজ্ঞায়িত করে, ট্রেডিং অফ লেটেন্সি বনাম সমাধানের গুণমান। সমস্ত মোডে, বিশ্বব্যাপী অনুরোধের সময়সীমা কার্যকর করা হয়।

Enums
SEARCH_MODE_UNSPECIFIED অনির্দিষ্ট অনুসন্ধান মোড, RETURN_FAST এর সমতুল্য।
RETURN_FAST প্রথম ভাল সমাধান খুঁজে পাওয়ার পরে অনুসন্ধান বন্ধ করুন।
CONSUME_ALL_AVAILABLE_TIME আরও ভাল সমাধান অনুসন্ধান করার জন্য সমস্ত উপলব্ধ সময় ব্যয় করুন।

সমাধান মোড

সমাধানকারীর অনুরোধটি কীভাবে পরিচালনা করা উচিত তা সংজ্ঞায়িত করে। সমস্ত মোডে VALIDATE_ONLY , যদি অনুরোধটি অবৈধ হয়, আপনি একটি INVALID_REQUEST ত্রুটি পাবেন৷ ফিরে আসা ত্রুটির সংখ্যা ক্যাপ করতে max_validation_errors দেখুন।

Enums
DEFAULT_SOLVE মডেলটি সমাধান করুন।
VALIDATE_ONLY শুধুমাত্র মডেলটিকে সমাধান না করেই যাচাই করে: যতটা সম্ভব OptimizeToursResponse.validation_errors পূরণ করে।
DETECT_SOME_INFEASIBLE_SHIPMENTS

শুধুমাত্র OptimizeToursResponse.validation_errors বা OptimizeToursResponse.skipped_shipments পপুলেট করে এবং প্রকৃতপক্ষে বাকি অনুরোধের সমাধান করে না (প্রতিক্রিয়ায় status এবং routes সেট করা নেই)। যদি injected_solution_constraint রুটে অসম্ভাব্যতা সনাক্ত করা হয় তবে সেগুলি OptimizeToursResponse.validation_errors ফিল্ডে জমা হয় এবং OptimizeToursResponse.skipped_shipments খালি রাখা হয়।

গুরুত্বপূর্ণ : সমস্ত অসম্ভাব্য চালান এখানে ফেরত দেওয়া হয় না, তবে শুধুমাত্র যেগুলি প্রিপ্রসেসিংয়ের সময় অসম্ভাব্য হিসাবে সনাক্ত করা হয়।

OptimizeToursResponse

একটি ট্যুর অপ্টিমাইজেশান সমস্যার সমাধান করার পরে প্রতিক্রিয়া যা প্রতিটি গাড়ির দ্বারা অনুসরণ করা রুটগুলি, শিপমেন্টগুলি যা এড়িয়ে গেছে এবং সমাধানের সামগ্রিক খরচ।

ক্ষেত্র
routes[]

ShipmentRoute

প্রতিটি গাড়ির জন্য গণনা করা রুট; i-th রুট মডেলের i-th যানের সাথে মিলে যায়।

request_label

string

OptimizeToursRequest.label এর অনুলিপি, যদি অনুরোধে একটি লেবেল নির্দিষ্ট করা থাকে।

skipped_shipments[]

SkippedShipment

সমস্ত চালানের তালিকা এড়িয়ে গেছে।

validation_errors[]

OptimizeToursValidationError

সমস্ত বৈধতা ত্রুটির তালিকা যা আমরা স্বাধীনভাবে সনাক্ত করতে সক্ষম হয়েছি। OptimizeToursValidationError বার্তাটির জন্য "একাধিক ত্রুটি" ব্যাখ্যাটি দেখুন৷

metrics

Metrics

এই সমাধানের জন্য সময়কাল, দূরত্ব এবং ব্যবহারের মেট্রিক্স।

মেট্রিক্স

সামগ্রিক মেট্রিক্স, সমস্ত রুটে একত্রিত।

ক্ষেত্র
aggregated_route_metrics

AggregatedMetrics

রুট উপর একত্রিত. প্রতিটি মেট্রিক হল একই নামের সমস্ত ShipmentRoute.metrics ক্ষেত্রের যোগফল (বা সর্বোচ্চ, লোডের জন্য)।

skipped_mandatory_shipment_count

int32

এড়িয়ে যাওয়া বাধ্যতামূলক চালানের সংখ্যা।

used_vehicle_count

int32

ব্যবহৃত যানবাহনের সংখ্যা। দ্রষ্টব্য: যদি একটি যানবাহনের রুট খালি থাকে এবং Vehicle.used_if_route_is_empty সত্য হয়, তাহলে গাড়িটিকে ব্যবহৃত বলে গণ্য করা হবে।

earliest_vehicle_start_time

Timestamp

একটি ব্যবহৃত গাড়ির জন্য প্রথম দিকের শুরুর সময়, ShipmentRoute.vehicle_start_time এর সমস্ত ব্যবহৃত যানবাহনের ন্যূনতম হিসাবে গণনা করা হয়।

latest_vehicle_end_time

Timestamp

একটি ব্যবহৃত গাড়ির সর্বশেষ শেষ সময়, ShipmentRoute.vehicle_end_time এর সমস্ত ব্যবহৃত যানবাহনের উপর সর্বাধিক হিসাবে গণনা করা হয়।

costs

map<string, double>

সমাধানের খরচ, খরচ-সম্পর্কিত অনুরোধ ক্ষেত্র দ্বারা বিভক্ত। কীগুলি হল প্রোটো পাথ, ইনপুট OptimizeToursRequest-এর সাপেক্ষে, যেমন "model.shipments.pickups.cost", এবং মানগুলি হল সংশ্লিষ্ট খরচ ক্ষেত্রের দ্বারা উত্পন্ন মোট খরচ, সমগ্র সমাধানের উপর একত্রিত৷ অন্য কথায়, খরচ ["model.shipments.pickups.cost"] হল সমাধানের সমস্ত পিকআপ খরচের সমষ্টি। মডেলে সংজ্ঞায়িত সমস্ত খরচ এখানে বিস্তারিতভাবে রিপোর্ট করা হয়েছে ট্রানজিশন অ্যাট্রিবিউটের সাথে সম্পর্কিত খরচগুলি বাদ দিয়ে যেগুলি শুধুমাত্র 2022/01 হিসাবে সমষ্টিগতভাবে রিপোর্ট করা হয়েছে।

total_cost

double

সমাধানের মোট খরচ। খরচ ম্যাপে সমস্ত মানের সমষ্টি।

OptimizeToursValidationError

একটি OptimizeToursRequest যাচাই করার সময় একটি ত্রুটির বর্ণনা দেয়।

ক্ষেত্র
code

int32

একটি বৈধতা ত্রুটি জোড়া ( code , display_name ) দ্বারা সংজ্ঞায়িত করা হয় যা সর্বদা উপস্থিত থাকে।

অন্যান্য ক্ষেত্র (নীচে) ত্রুটি সম্পর্কে আরও প্রসঙ্গ প্রদান করে।

একাধিক ত্রুটি : যখন একাধিক ত্রুটি থাকে, তখন যাচাইকরণ প্রক্রিয়া তাদের মধ্যে কয়েকটি আউটপুট করার চেষ্টা করে। অনেকটা কম্পাইলারের মতো, এটি একটি অপূর্ণ প্রক্রিয়া। কিছু বৈধতা ত্রুটি "মারাত্মক" হবে, যার অর্থ তারা পুরো বৈধতা প্রক্রিয়া বন্ধ করে দেয়। অন্যদের মধ্যে display_name="UNSPECIFIED" ত্রুটির ক্ষেত্রে এটি হয়৷ কিছু অন্য ত্রুটিগুলি এড়িয়ে যেতে বৈধকরণ প্রক্রিয়ার কারণ হতে পারে।

স্থিতিশীলতা : code এবং display_name খুব স্থিতিশীল হওয়া উচিত। কিন্তু সময়ের সাথে সাথে নতুন কোড এবং ডিসপ্লে নামগুলি উপস্থিত হতে পারে, যা একটি ভিন্ন ( code , display_name ) জোড়া দেওয়ার জন্য একটি প্রদত্ত (অবৈধ) অনুরোধের কারণ হতে পারে কারণ নতুন ত্রুটিটি পুরানোটিকে লুকিয়ে রেখেছে ("একাধিক ত্রুটি" দেখুন)৷

রেফারেন্স : সমস্ত (কোড, নাম) জোড়ার একটি তালিকা:

  • অনির্দিষ্ট = 0;
  • VALIDATION_TIMEOUT_ERROR = 10; সময়সীমার মধ্যে বৈধতা সম্পন্ন করা যায়নি।
  • REQUEST_OPTIONS_ERROR = 12;

    • REQUEST_OPTIONS_INVALID_SOLVING_MODE = 1201;
    • REQUEST_OPTIONS_INVALID_MAX_VALIDATION_ERRORS = 1203;
    • REQUEST_OPTIONS_INVALID_GEODESIC_METERS_PER_SECOND = 1204;
    • REQUEST_OPTIONS_GEODESIC_METERS_PER_SECOND_TOO_SMALL = 1205;
    • REQUEST_OPTIONS_MISSING_GEODESIC_METERS_PER_SECOND = 1206;
    • REQUEST_OPTIONS_POPULATE_PATHFINDER_TRIPS_AND_GEODESIC_DISTANCE = 1207;
    • REQUEST_OPTIONS_COST_MODEL_OPTIONS_AND_GEODESIC_DISTANCE = 1208;
    • REQUEST_OPTIONS_TRAVEL_MODE_INCOMPATIBLE_WITH_TRAFFIC = 1211;
    • REQUEST_OPTIONS_MULTIPLE_TRAFFIC_FLAVORS = 1212;
    • REQUEST_OPTIONS_INVALID_TRAFFIC_FLAVOR = 1213;
    • REQUEST_OPTIONS_TRAFFIC_ENABLED_WITHOUT_GLOBAL_START_TIME = 1214;
    • REQUEST_OPTIONS_TRAFFIC_ENABLED_WITH_PRECEDENCES = 1215;
    • REQUEST_OPTIONS_TRAFFIC_PREFILL_MODE_INVALID = 1216;
    • REQUEST_OPTIONS_TRAFFIC_PREFILL_ENABLED_WITHOUT_TRAFFIC = 1217;
  • INJECTED_SOLUTION_ERROR = 20;
    • INJECTED_SOLUTION_MISSING_LABEL = 2000;
    • INJECTED_SOLUTION_DUPLICATE_LABEL = 2001;
    • INJECTED_SOLUTION_AMBIGUOUS_INDEX = 2002;
    • INJECTED_SOLUTION_INFEASIBLE_AFTER_GETTING_TRAVEL_TIMES = 2003;
    • INJECTED_SOLUTION_TRANSITION_INCONSISTENT_WITH_ACTUAL_TRAVEL = 2004;
    • INJECTED_SOLUTION_CONCURRENT_SOLUTION_TYPES = 2005;
    • INJECTED_SOLUTION_MORE_THAN_ONE_PER_TYPE = 2006;
    • INJECTED_SOLUTION_REFRESH_WITHOUT_POPULATE = 2008;
    • INJECTED_SOLUTION_CONSTRAINED_ROUTE_PORTION_INFEASIBLE = 2010;
  • SHIPMENT_MODEL_ERROR = 22;
    • SHIPMENT_MODEL_TOO_LARGE = 2200;
    • SHIPMENT_MODEL_TOO_MANY_CAPACITY_TYPES = 2201;
    • SHIPMENT_MODEL_GLOBAL_START_TIME_NEGATIVE_OR_NAN = 2202;
    • SHIPMENT_MODEL_GLOBAL_END_TIME_TOO_LARGE_OR_NAN = 2203;
    • SHIPMENT_MODEL_GLOBAL_START_TIME_AFTER_GLOBAL_END_TIME = 2204;
    • SHIPMENT_MODEL_GLOBAL_DURATION_TOO_LONG = 2205;
    • SHIPMENT_MODEL_MAX_ACTIVE_VEHICLES_NOT_POSITIVE = 2206;
    • SHIPMENT_MODEL_DURATION_MATRIX_TOO_LARGE = 2207;
  • INDEX_ERROR = 24;
  • TAG_ERROR = 26;
  • TIME_WINDOW_ERROR = 28;
    • TIME_WINDOW_INVALID_START_TIME = 2800;
    • TIME_WINDOW_INVALID_END_TIME = 2801;
    • TIME_WINDOW_INVALID_SOFT_START_TIME = 2802;
    • TIME_WINDOW_INVALID_SOFT_END_TIME = 2803;
    • TIME_WINDOW_OUTSIDE_GLOBAL_TIME_WINDOW = 2804;
    • TIME_WINDOW_START_TIME_AFTER_END_TIME = 2805;
    • TIME_WINDOW_INVALID_COST_PER_HOUR_BEFORE_SOFT_START_TIME = 2806;
    • TIME_WINDOW_INVALID_COST_PER_HOUR_AFTER_SOFT_END_TIME = 2807;
    • TIME_WINDOW_COST_BEFORE_SOFT_START_TIME_WITHOUT_SOFT_START_TIME = 2808;
    • TIME_WINDOW_COST_AFTER_SOFT_END_TIME_WITHOUT_SOFT_END_TIME = 2809;
    • TIME_WINDOW_SOFT_START_TIME_WITHOUT_COST_BEFORE_SOFT_START_TIME = 2810;
    • TIME_WINDOW_SOFT_END_TIME_WITHOUT_COST_AFTER_SOFT_END_TIME = 2811;
    • TIME_WINDOW_OVERLAPPING_ADJACENT_OR_EARLIER_THAN_PREVIOUS = 2812;
    • TIME_WINDOW_START_TIME_AFTER_SOFT_START_TIME = 2813;
    • TIME_WINDOW_SOFT_START_TIME_AFTER_END_TIME = 2814;
    • TIME_WINDOW_START_TIME_AFTER_SOFT_END_TIME = 2815;
    • TIME_WINDOW_SOFT_END_TIME_AFTER_END_TIME = 2816;
    • TIME_WINDOW_COST_BEFORE_SOFT_START_TIME_SET_AND_MULTIPLE_WINDOWS = 2817;
    • TIME_WINDOW_COST_AFTER_SOFT_END_TIME_SET_AND_MULTIPLE_WINDOWS = 2818;
    • TRANSITION_ATTRIBUTES_ERROR = 30;
    • TRANSITION_ATTRIBUTES_INVALID_COST = 3000;
    • TRANSITION_ATTRIBUTES_INVALID_COST_PER_KILOMETER = 3001;
    • TRANSITION_ATTRIBUTES_DUPLICATE_TAG_PAIR = 3002;
    • TRANSITION_ATTRIBUTES_DISTANCE_LIMIT_MAX_METERS_UNSUPPORTED = 3003;
    • TRANSITION_ATTRIBUTES_UNSPECIFIED_SOURCE_TAGS = 3004;
    • TRANSITION_ATTRIBUTES_CONFLICTING_SOURCE_TAGS_FIELDS = 3005;
    • TRANSITION_ATTRIBUTES_UNSPECIFIED_DESTINATION_TAGS = 3006;
    • TRANSITION_ATTRIBUTES_CONFLICTING_DESTINATION_TAGS_FIELDS = 3007;
    • TRANSITION_ATTRIBUTES_DELAY_DURATION_NEGATIVE_OR_NAN = 3008;
    • TRANSITION_ATTRIBUTES_DELAY_DURATION_EXCEEDS_GLOBAL_DURATION = 3009;
  • AMOUNT_ERROR = 31;
    • AMOUNT_NEGATIVE_VALUE = 3100;
  • LOAD_LIMIT_ERROR = 33;
    • LOAD_LIMIT_INVALID_COST_ABOVE_SOFT_MAX = 3303;
    • LOAD_LIMIT_SOFT_MAX_WITHOUT_COST_ABOVE_SOFT_MAX = 3304;
    • LOAD_LIMIT_COST_ABOVE_SOFT_MAX_WITHOUT_SOFT_MAX = 3305;
    • LOAD_LIMIT_NEGATIVE_SOFT_MAX = 3306;
    • LOAD_LIMIT_MIXED_DEMAND_TYPE = 3307;
    • LOAD_LIMIT_MAX_LOAD_NEGATIVE_VALUE = 3308;
    • LOAD_LIMIT_SOFT_MAX_ABOVE_MAX = 3309;
  • INTERVAL_ERROR = 34;
    • INTERVAL_MIN_EXCEEDS_MAX = 3401;
    • INTERVAL_NEGATIVE_MIN = 3402;
    • INTERVAL_NEGATIVE_MAX = 3403;
    • INTERVAL_MIN_EXCEEDS_CAPACITY = 3404;
    • INTERVAL_MAX_EXCEEDS_CAPACITY = 3405;
  • DISTANCE_LIMIT_ERROR = 36;
    • DISTANCE_LIMIT_INVALID_COST_AFTER_SOFT_MAX = 3601;
    • DISTANCE_LIMIT_SOFT_MAX_WITHOUT_COST_AFTER_SOFT_MAX = 3602;
    • DISTANCE_LIMIT_COST_AFTER_SOFT_MAX_WITHOUT_SOFT_MAX = 3603;
    • DISTANCE_LIMIT_NEGATIVE_MAX = 3604;
    • DISTANCE_LIMIT_NEGATIVE_SOFT_MAX = 3605;
    • DISTANCE_LIMIT_SOFT_MAX_LARGER_THAN_MAX = 3606;
  • DURATION_LIMIT_ERROR = 38;
    • DURATION_LIMIT_MAX_DURATION_NEGATIVE_OR_NAN = 3800;
    • DURATION_LIMIT_SOFT_MAX_DURATION_NEGATIVE_OR_NAN = 3801;
    • DURATION_LIMIT_INVALID_COST_PER_HOUR_AFTER_SOFT_MAX = 3802;
    • DURATION_LIMIT_SOFT_MAX_WITHOUT_COST_AFTER_SOFT_MAX = 3803;
    • DURATION_LIMIT_COST_AFTER_SOFT_MAX_WITHOUT_SOFT_MAX = 3804;
    • DURATION_LIMIT_QUADRATIC_SOFT_MAX_DURATION_NEGATIVE_OR_NAN = 3805;
    • DURATION_LIMIT_INVALID_COST_AFTER_QUADRATIC_SOFT_MAX = 3806;
    • DURATION_LIMIT_QUADRATIC_SOFT_MAX_WITHOUT_COST_PER_SQUARE_HOUR = 3807;
    • DURATION_LIMIT_COST_PER_SQUARE_HOUR_WITHOUT_QUADRATIC_SOFT_MAX = 3808;
    • DURATION_LIMIT_QUADRATIC_SOFT_MAX_WITHOUT_MAX = 3809;
    • DURATION_LIMIT_SOFT_MAX_LARGER_THAN_MAX = 3810;
    • DURATION_LIMIT_QUADRATIC_SOFT_MAX_LARGER_THAN_MAX = 3811;
    • DURATION_LIMIT_DIFF_BETWEEN_MAX_AND_QUADRATIC_SOFT_MAX_TOO_LARGE = 3812;
    • DURATION_LIMIT_MAX_DURATION_EXCEEDS_GLOBAL_DURATION = 3813;
    • DURATION_LIMIT_SOFT_MAX_DURATION_EXCEEDS_GLOBAL_DURATION = 3814;
    • DURATION_LIMIT_QUADRATIC_SOFT_MAX_DURATION_EXCEEDS_GLOBAL_DURATION = 3815;
  • SHIPMENT_ERROR = 40;
    • SHIPMENT_PD_LIMIT_WITHOUT_PICKUP_AND_DELIVERY = 4014;
    • SHIPMENT_PD_ABSOLUTE_DETOUR_LIMIT_DURATION_NEGATIVE_OR_NAN = 4000;
    • SHIPMENT_PD_ABSOLUTE_DETOUR_LIMIT_DURATION_EXCEEDS_GLOBAL_DURATION = 4001;
    • SHIPMENT_PD_RELATIVE_DETOUR_LIMIT_INVALID = 4015;
    • SHIPMENT_PD_DETOUR_LIMIT_AND_EXTRA_VISIT_DURATION = 4016;
    • SHIPMENT_PD_TIME_LIMIT_DURATION_NEGATIVE_OR_NAN = 4002;
    • SHIPMENT_PD_TIME_LIMIT_DURATION_EXCEEDS_GLOBAL_DURATION = 4003;
    • SHIPMENT_EMPTY_SHIPMENT_TYPE = 4004;
    • SHIPMENT_NO_PICKUP_NO_DELIVERY = 4005;
    • SHIPMENT_INVALID_PENALTY_COST = 4006;
    • SHIPMENT_ALLOWED_VEHICLE_INDEX_OUT_OF_BOUNDS = 4007;
    • SHIPMENT_DUPLICATE_ALLOWED_VEHICLE_INDEX = 4008;
    • SHIPMENT_INCONSISTENT_COST_FOR_VEHICLE_SIZE_WITHOUT_INDEX = 4009;
    • SHIPMENT_INCONSISTENT_COST_FOR_VEHICLE_SIZE_WITH_INDEX = 4010;
    • SHIPMENT_INVALID_COST_FOR_VEHICLE = 4011;
    • SHIPMENT_COST_FOR_VEHICLE_INDEX_OUT_OF_BOUNDS = 4012;
    • SHIPMENT_DUPLICATE_COST_FOR_VEHICLE_INDEX = 4013;
  • VEHICLE_ERROR = 42;
    • VEHICLE_EMPTY_REQUIRED_OPERATOR_TYPE = 4200;
    • VEHICLE_DUPLICATE_REQUIRED_OPERATOR_TYPE = 4201;
    • VEHICLE_NO_OPERATOR_WITH_REQUIRED_OPERATOR_TYPE = 4202;
    • VEHICLE_EMPTY_START_TAG = 4203;
    • VEHICLE_DUPLICATE_START_TAG = 4204;
    • VEHICLE_EMPTY_END_TAG = 4205;
    • VEHICLE_DUPLICATE_END_TAG = 4206;
    • VEHICLE_EXTRA_VISIT_DURATION_NEGATIVE_OR_NAN = 4207;
    • VEHICLE_EXTRA_VISIT_DURATION_EXCEEDS_GLOBAL_DURATION = 4208;
    • VEHICLE_EXTRA_VISIT_DURATION_EMPTY_KEY = 4209;
    • VEHICLE_FIRST_SHIPMENT_INDEX_OUT_OF_BOUNDS = 4210;
    • VEHICLE_FIRST_SHIPMENT_IGNORED = 4211;
    • VEHICLE_FIRST_SHIPMENT_NOT_BOUND = 4212;
    • VEHICLE_LAST_SHIPMENT_INDEX_OUT_OF_BOUNDS = 4213;
    • VEHICLE_LAST_SHIPMENT_IGNORED = 4214;
    • VEHICLE_LAST_SHIPMENT_NOT_BOUND = 4215;
    • VEHICLE_IGNORED_WITH_USED_IF_ROUTE_IS_EMPTY = 4216;
    • VEHICLE_INVALID_COST_PER_KILOMETER = 4217;
    • VEHICLE_INVALID_COST_PER_HOUR = 4218;
    • VEHICLE_INVALID_COST_PER_TRAVELED_HOUR = 4219;
    • VEHICLE_INVALID_FIXED_COST = 4220;
    • VEHICLE_INVALID_TRAVEL_DURATION_MULTIPLE = 4221;
    • VEHICLE_TRAVEL_DURATION_MULTIPLE_WITH_SHIPMENT_PD_DETOUR_LIMITS = 4223;
    • VEHICLE_MATRIX_INDEX_WITH_SHIPMENT_PD_DETOUR_LIMITS = 4224;
    • VEHICLE_MINIMUM_DURATION_LONGER_THAN_DURATION_LIMIT = 4222;
  • VISIT_REQUEST_ERROR = 44;
    • VISIT_REQUEST_EMPTY_TAG = 4400;
    • VISIT_REQUEST_DUPLICATE_TAG = 4401;
    • VISIT_REQUEST_DURATION_NEGATIVE_OR_NAN = 4404;
    • VISIT_REQUEST_DURATION_EXCEEDS_GLOBAL_DURATION = 4405;
  • PRECEDENCE_ERROR = 46;
  • BREAK_ERROR = 48;
    • BREAK_RULE_EMPTY = 4800;
    • BREAK_REQUEST_UNSPECIFIED_DURATION = 4801;
    • BREAK_REQUEST_UNSPECIFIED_EARLIEST_START_TIME = 4802;
    • BREAK_REQUEST_UNSPECIFIED_LATEST_START_TIME = 4803;
    • BREAK_REQUEST_DURATION_NEGATIVE_OR_NAN = 4804; = 4804;
    • BREAK_REQUEST_LATEST_START_TIME_BEFORE_EARLIEST_START_TIME = 4805;
    • BREAK_REQUEST_EARLIEST_START_TIME_BEFORE_GLOBAL_START_TIME = 4806;
    • BREAK_REQUEST_LATEST_END_TIME_AFTER_GLOBAL_END_TIME = 4807;
    • BREAK_REQUEST_NON_SCHEDULABLE = 4808;
    • BREAK_FREQUENCY_MAX_INTER_BREAK_DURATION_NEGATIVE_OR_NAN = 4809;
    • BREAK_FREQUENCY_MIN_BREAK_DURATION_NEGATIVE_OR_NAN = 4810;
    • BREAK_FREQUENCY_MIN_BREAK_DURATION_EXCEEDS_GLOBAL_DURATION = 4811;
    • BREAK_FREQUENCY_MAX_INTER_BREAK_DURATION_EXCEEDS_GLOBAL_DURATION = 4812;
    • BREAK_REQUEST_DURATION_EXCEEDS_GLOBAL_DURATION = 4813;
    • BREAK_FREQUENCY_MISSING_MAX_INTER_BREAK_DURATION = 4814;
    • BREAK_FREQUENCY_MISSING_MIN_BREAK_DURATION = 4815;
  • SHIPMENT_TYPE_INCOMPATIBILITY_ERROR = 50;
    • SHIPMENT_TYPE_INCOMPATIBILITY_EMPTY_TYPE = 5001;
    • SHIPMENT_TYPE_INCOMPATIBILITY_LESS_THAN_TWO_TYPES = 5002;
    • SHIPMENT_TYPE_INCOMPATIBILITY_DUPLICATE_TYPE = 5003;
    • SHIPMENT_TYPE_INCOMPATIBILITY_INVALID_INCOMPATIBILITY_MODE = 5004;
    • SHIPMENT_TYPE_INCOMPATIBILITY_TOO_MANY_INCOMPATIBILITIES = 5005;
  • SHIPMENT_TYPE_REQUIREMENT_ERROR = 52;
    • SHIPMENT_TYPE_REQUIREMENT_NO_REQUIRED_TYPE = 52001;
    • SHIPMENT_TYPE_REQUIREMENT_NO_DEPENDENT_TYPE = 52002;
    • SHIPMENT_TYPE_REQUIREMENT_INVALID_REQUIREMENT_MODE = 52003;
    • SHIPMENT_TYPE_REQUIREMENT_TOO_MANY_REQUIREMENTS = 52004;
    • SHIPMENT_TYPE_REQUIREMENT_EMPTY_REQUIRED_TYPE = 52005;
    • SHIPMENT_TYPE_REQUIREMENT_DUPLICATE_REQUIRED_TYPE = 52006;
    • SHIPMENT_TYPE_REQUIREMENT_NO_REQUIRED_TYPE_FOUND = 52007;
    • SHIPMENT_TYPE_REQUIREMENT_EMPTY_DEPENDENT_TYPE = 52008;
    • SHIPMENT_TYPE_REQUIREMENT_DUPLICATE_DEPENDENT_TYPE = 52009;
    • SHIPMENT_TYPE_REQUIREMENT_SELF_DEPENDENT_TYPE = 52010;
    • SHIPMENT_TYPE_REQUIREMENT_GRAPH_HAS_CYCLES = 52011;
  • VEHICLE_OPERATOR_ERROR = 54;
    • VEHICLE_OPERATOR_EMPTY_TYPE = 5400;
    • VEHICLE_OPERATOR_MULTIPLE_START_TIME_WINDOWS = 5401;
    • VEHICLE_OPERATOR_SOFT_START_TIME_WINDOW = 5402;
    • VEHICLE_OPERATOR_MULTIPLE_END_TIME_WINDOWS = 5403;
    • VEHICLE_OPERATOR_SOFT_END_TIME_WINDOW = 5404;
  • DURATION_SECONDS_MATRIX_ERROR = 56;
    • DURATION_SECONDS_MATRIX_DURATION_NEGATIVE_OR_NAN = 5600;
    • DURATION_SECONDS_MATRIX_DURATION_EXCEEDS_GLOBAL_DURATION = 5601;
display_name

string

ত্রুটি প্রদর্শন নাম.

fields[]

FieldReference

একটি ত্রুটি প্রসঙ্গে 0, 1 (বেশিরভাগ সময়) বা আরও ক্ষেত্র জড়িত হতে পারে। উদাহরণস্বরূপ, যানবাহন # 4 এবং চালান # 2 এর প্রথম পিকআপকে উল্লেখ করা নিম্নরূপ করা যেতে পারে:

fields { name: "vehicles" index: 4}
fields { name: "shipments" index: 2 sub_field {name: "pickups" index: 0} }

উল্লেখ্য, যাইহোক, প্রদত্ত ত্রুটি কোডের জন্য fields মূলত্ব পরিবর্তন করা উচিত নয়।

error_message

string

মানব-পাঠযোগ্য স্ট্রিং ত্রুটি বর্ণনা করে। code এবং error_message এর মধ্যে একটি 1:1 ম্যাপিং আছে (when code!= "UNSPECIFIED")।

স্থিতিশীলতা : স্থিতিশীল নয়: একটি প্রদত্ত code সাথে সম্পর্কিত ত্রুটি বার্তাটি সময়ের সাথে পরিবর্তিত হতে পারে (আশা করি এটি স্পষ্ট করতে হবে)। পরিবর্তে display_name এবং code উপর নির্ভর করুন.

offending_values

string

ক্ষেত্র(গুলি) এর মান(গুলি) থাকতে পারে৷ এটি সবসময় পাওয়া যায় না। আপনার এটির উপর একেবারেই নির্ভর করা উচিত নয় এবং এটি শুধুমাত্র ম্যানুয়াল মডেল ডিবাগিংয়ের জন্য ব্যবহার করা উচিত।

ফিল্ড রেফারেন্স

বৈধতা ত্রুটির জন্য একটি প্রসঙ্গ নির্দিষ্ট করে। একটি FieldReference সর্বদা এই ফাইলের একটি প্রদত্ত ক্ষেত্রকে নির্দেশ করে এবং একই শ্রেণিবদ্ধ কাঠামো অনুসরণ করে। উদাহরণস্বরূপ, আমরা ব্যবহার করে যানবাহন #5 এর start_time_windows এর উপাদান #2 নির্দিষ্ট করতে পারি:

name: "vehicles" index: 5 sub_field { name: "end_time_windows" index: 2 }

তবে আমরা বার্তার ভিড় এড়াতে OptimizeToursRequest বা ShipmentModel এর মতো শীর্ষ-স্তরের সত্তা বাদ দিই।

ক্ষেত্র
name

string

ক্ষেত্রের নাম, যেমন, "যান"।

sub_field

FieldReference

প্রয়োজনে বারবার নেস্টেড সাব-ফিল্ড।

ইউনিয়ন ক্ষেত্র index_or_key .

index_or_key নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:

index

int32

বারবার হলে ক্ষেত্রের সূচক।

key

string

ক্ষেত্রটি একটি মানচিত্র হলে কী।

আউটপুট কনফিগারেশন

[BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours] ফলাফলের জন্য একটি গন্তব্য নির্দিষ্ট করুন।

ক্ষেত্র
data_format

DataFormat

প্রয়োজন। আউটপুট ডেটা বিন্যাস।

ইউনিয়ন ক্ষেত্রের destination । প্রয়োজন। destination নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
gcs_destination

GcsDestination

আউটপুট লিখতে Google ক্লাউড স্টোরেজ অবস্থান।

চালান

একটি একক আইটেমের চালান, এটির একটি পিকআপ থেকে তার একটি ডেলিভারি পর্যন্ত। চালানটি সম্পাদিত হিসাবে বিবেচিত হওয়ার জন্য, একটি অনন্য যানবাহনকে অবশ্যই তার পিকআপ অবস্থানগুলির একটিতে যেতে হবে (এবং সেই অনুযায়ী তার অতিরিক্ত ক্ষমতা হ্রাস করতে হবে), তারপরে তার ডেলিভারি অবস্থানগুলির একটিতে যান (এবং সেই অনুযায়ী তার অতিরিক্ত ক্ষমতা পুনরায় বাড়াতে হবে)।

ক্ষেত্র
display_name

string

চালানের ব্যবহারকারী-নির্ধারিত প্রদর্শন নাম। এটি 63 অক্ষর পর্যন্ত দীর্ঘ হতে পারে এবং UTF-8 অক্ষর ব্যবহার করতে পারে।

pickups[]

VisitRequest

চালানের সাথে যুক্ত পিকআপ বিকল্পের সেট। যদি নির্দিষ্ট করা না থাকে, তাহলে গাড়িটিকে শুধুমাত্র ডেলিভারির সাথে সম্পর্কিত একটি অবস্থান পরিদর্শন করতে হবে।

deliveries[]

VisitRequest

চালানের সাথে যুক্ত ডেলিভারি বিকল্পের সেট। নির্দিষ্ট না থাকলে, গাড়িটিকে শুধুমাত্র পিকআপগুলির সাথে সম্পর্কিত একটি অবস্থান পরিদর্শন করতে হবে৷

load_demands

map<string, Load >

চালানের লোড চাহিদা (উদাহরণস্বরূপ ওজন, আয়তন, প্যালেটের সংখ্যা ইত্যাদি)। মানচিত্রের কীগুলি অনুরূপ লোডের ধরন বর্ণনাকারী শনাক্তকারী হওয়া উচিত, আদর্শভাবে ইউনিটগুলিও সহ। উদাহরণস্বরূপ: "ওজন_কেজি", "ভলিউম_গ্যালন", "প্যালেট_কাউন্ট", ইত্যাদি। যদি একটি প্রদত্ত কী মানচিত্রে উপস্থিত না হয়, তাহলে সংশ্লিষ্ট লোডটিকে শূন্য হিসাবে বিবেচনা করা হয়।

allowed_vehicle_indices[]

int32

এই চালান সঞ্চালন করতে পারে যে যানবাহন সেট. খালি থাকলে, সমস্ত যানবাহন এটি সম্পাদন করতে পারে। ShipmentModel vehicles তালিকায় যানবাহনগুলি তাদের সূচক দ্বারা দেওয়া হয়।

costs_per_vehicle[]

double

প্রতিটি যানবাহন দ্বারা এই চালানটি বিতরণ করার সময় যে খরচ হয় তা নির্দিষ্ট করে৷ যদি নির্দিষ্ট করা থাকে, তবে এটি অবশ্যই থাকতে হবে:

  • costs_per_vehicle_indices হিসাবে একই সংখ্যক উপাদান। costs_per_vehicle[i] মডেলের গাড়ির_প্রতি_গাড়ির_সূচক costs_per_vehicle_indices[i] এর সাথে মিলে যায়।
  • মডেলের যানবাহন হিসাবে উপাদান একই সংখ্যা. i-th উপাদানটি মডেলের যানবাহন #i-এর সাথে মিলে যায়।

এই খরচ অবশ্যই penalty_cost মতো একই ইউনিটে হতে হবে এবং নেতিবাচক হতে হবে না। এই ক্ষেত্রটি খালি রাখুন, যদি এমন কোন খরচ না থাকে।

costs_per_vehicle_indices[]

int32

যানবাহনের সূচকগুলি যেগুলির costs_per_vehicle প্রযোজ্য। যদি খালি না থাকে, তাহলে এটিতে অবশ্যই costs_per_vehicle এর সমান সংখ্যক উপাদান থাকতে হবে। একটি গাড়ির সূচক একাধিকবার নির্দিষ্ট করা যাবে না। একটি যানবাহনকে costs_per_vehicle_indices থেকে বাদ দেওয়া হলে, তার খরচ শূন্য।

pickup_to_delivery_absolute_detour_limit

Duration

পিকআপ থেকে ডেলিভারি পর্যন্ত সংক্ষিপ্ততম পথের তুলনায় সর্বাধিক নিখুঁত চক্কর সময় নির্দিষ্ট করে। যদি নির্দিষ্ট করা হয় তবে এটি অবশ্যই অবিচ্ছিন্ন হতে হবে এবং চালানের অবশ্যই কমপক্ষে একটি পিকআপ এবং একটি বিতরণ থাকতে হবে।

উদাহরণস্বরূপ, নির্বাচিত পিকআপ বিকল্প থেকে সরাসরি নির্বাচিত বিতরণ বিকল্পের দিকে যাওয়ার জন্য সবচেয়ে কম সময় নেওয়া উচিত। তারপরে pickup_to_delivery_absolute_detour_limit প্রয়োগ করে:

start_time(delivery) - start_time(pickup) <=
t + pickup_to_delivery_absolute_detour_limit

যদি উভয়ই আপেক্ষিক এবং পরম সীমা একই চালানিতে নির্দিষ্ট করা হয় তবে প্রতিটি সম্ভাব্য পিকআপ/বিতরণ জুটির জন্য আরও সীমাবদ্ধ সীমা ব্যবহার করা হয়। 2017/10 হিসাবে, যখন ভ্রমণের সময়সীমা যানবাহনের উপর নির্ভর করে না তখন ডিটারগুলি কেবল তখনই সমর্থিত হয়।

pickup_to_delivery_time_limit

Duration

চালানের সরবরাহ শুরু করার জন্য পিকআপ শুরু থেকে সর্বাধিক সময়কাল নির্দিষ্ট করে। যদি নির্দিষ্ট করা হয় তবে এটি অবশ্যই অবিচ্ছিন্ন হতে হবে এবং চালানের অবশ্যই কমপক্ষে একটি পিকআপ এবং একটি বিতরণ থাকতে হবে। এটি নির্ভর করে না যে কোন বিকল্পগুলি পিকআপ এবং বিতরণের জন্য বা যানবাহনের গতির উপর নির্বাচন করা হয় তার উপর নির্ভর করে না। এটি সর্বাধিক প্রদত্ত সীমাবদ্ধতার পাশাপাশি নির্দিষ্ট করা যেতে পারে: সমাধানটি উভয় স্পেসিফিকেশনকে সম্মান করবে।

shipment_type

string

এই চালানের জন্য একটি "টাইপ" নির্দিষ্ট করে অ-খালি স্ট্রিং। এই বৈশিষ্ট্যটি shipment_types মধ্যে অসম্পূর্ণতা বা প্রয়োজনীয়তাগুলি সংজ্ঞায়িত করতে ব্যবহার করা যেতে পারে ( ShipmentModel shipment_type_incompatibilities এবং shipment_type_requirements দেখুন)।

visit_types থেকে পৃথক যা একক দর্শনের জন্য নির্দিষ্ট করা আছে: একই চালানের সাথে সম্পর্কিত সমস্ত পিকআপ/বিতরণ একই shipment_type ভাগ করুন।

label

string

এই চালানের জন্য একটি লেবেল নির্দিষ্ট করে। এই লেবেলটি সংশ্লিষ্ট ShipmentRoute.Visit shipment_label প্রতিক্রিয়াতে রিপোর্ট করা হয়েছে।

ignore

bool

যদি সত্য হয় তবে এই চালানটি এড়িয়ে যান, তবে penalty_cost প্রয়োগ করবেন না।

মডেলটিতে কোনও shipment_type_requirements থাকে যখন একটি চালানের ফলাফলকে একটি বৈধতা ত্রুটির ফলাফল উপেক্ষা করে।

injected_first_solution_routes বা injected_solution_constraint সঞ্চালিত একটি চালান উপেক্ষা করা অনুমোদিত; সলভার পারফর্মিং রুট থেকে সম্পর্কিত পিকআপ/বিতরণ পরিদর্শনগুলি সরিয়ে দেয়। precedence_rules যে রেফারেন্স উপেক্ষা করে চালানগুলি উপেক্ষা করা হবে।

penalty_cost

double

যদি চালানটি সম্পূর্ণ না করা হয় তবে এই জরিমানাটি রুটের সামগ্রিক ব্যয়ে যুক্ত করা হয়। যদি এর কোনও পিকআপ এবং বিতরণ বিকল্প পরিদর্শন করা হয় তবে একটি চালান সম্পূর্ণ হিসাবে বিবেচিত হয়। মডেলটিতে অন্যান্য সমস্ত ব্যয় সম্পর্কিত ক্ষেত্রগুলির জন্য ব্যবহৃত একই ইউনিটে ব্যয়টি প্রকাশ করা যেতে পারে এবং অবশ্যই ইতিবাচক হতে হবে।

গুরুত্বপূর্ণ : যদি এই জরিমানা নির্দিষ্ট না করা হয় তবে এটি অসীম হিসাবে বিবেচিত হয়, অর্থাত্ চালানটি অবশ্যই সম্পন্ন করতে হবে।

pickup_to_delivery_relative_detour_limit

double

পিকআপ থেকে ডেলিভারি পর্যন্ত স্বল্পতম পথের তুলনায় সর্বাধিক আপেক্ষিক ডিটার সময় নির্দিষ্ট করে। যদি নির্দিষ্ট করা হয় তবে এটি অবশ্যই অবিচ্ছিন্ন হতে হবে এবং চালানের অবশ্যই কমপক্ষে একটি পিকআপ এবং একটি বিতরণ থাকতে হবে।

উদাহরণস্বরূপ, নির্বাচিত পিকআপ বিকল্প থেকে সরাসরি নির্বাচিত বিতরণ বিকল্পের দিকে যাওয়ার জন্য সবচেয়ে কম সময় নেওয়া উচিত। তারপরে pickup_to_delivery_relative_detour_limit প্রয়োগ করে:

start_time(delivery) - start_time(pickup) <=
std::ceil(t * (1.0 + pickup_to_delivery_relative_detour_limit))

যদি উভয়ই আপেক্ষিক এবং পরম সীমা একই চালানিতে নির্দিষ্ট করা হয় তবে প্রতিটি সম্ভাব্য পিকআপ/বিতরণ জুটির জন্য আরও সীমাবদ্ধ সীমা ব্যবহার করা হয়। 2017/10 হিসাবে, যখন ভ্রমণের সময়সীমা যানবাহনের উপর নির্ভর করে না তখন ডিটারগুলি কেবল তখনই সমর্থিত হয়।

লোড

ভিজিট করার সময়, একটি পিকআপ হলে গাড়ির লোডে একটি পূর্বনির্ধারিত পরিমাণ যুক্ত করা যেতে পারে, বা এটি সরবরাহ করা হলে বিয়োগ করা যেতে পারে। এই বার্তাটি এ জাতীয় পরিমাণ সংজ্ঞায়িত করে। load_demands দেখুন।

ক্ষেত্র
amount

int64

সংশ্লিষ্ট ভিজিট সম্পাদনকারী যানবাহনের লোড যার দ্বারা পৃথক হবে। যেহেতু এটি একটি পূর্ণসংখ্যা, তাই ব্যবহারকারীদের নির্ভুলতা হ্রাস এড়াতে উপযুক্ত ইউনিট বেছে নেওয়ার পরামর্শ দেওয়া হয়। অবশ্যই ≥ 0 হতে হবে।

ভিজিটরেকুয়েস্ট দেখুন

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

ক্ষেত্র
arrival_location

LatLng

এই VisitRequest সম্পাদন করার সময় যানবাহনটি যেখানে যান। যদি চালানের মডেলটির সময়কাল দূরত্বের ম্যাট্রিক থাকে তবে arrival_location অবশ্যই নির্দিষ্ট করা উচিত নয়।

arrival_waypoint

Waypoint

এই VisitRequest সম্পাদন করার সময় যানবাহনটি যেখানে পৌঁছেছে সেই পথটি। যদি চালানের মডেলটির সময়কাল দূরত্বের ম্যাট্রিক থাকে তবে arrival_waypoint নির্দিষ্ট করা উচিত নয়।

departure_location

LatLng

ভূ-অবস্থান যেখানে এই VisitRequest শেষ করার পরে যানবাহনটি চলে যায়। এটি arrival_location সমান হলে বাদ দেওয়া যেতে পারে। যদি চালানের মডেলটির সময়কাল দূরত্বের ম্যাট্রিক থাকে তবে departure_location অবশ্যই নির্দিষ্ট করা উচিত নয়।

departure_waypoint

Waypoint

এই VisitRequest শেষ করার পরে যানবাহনটি যেখানে চলে যায় সেই পথটি। যদি এটি arrival_waypoint মতো হয় তবে বাদ দেওয়া যেতে পারে। যদি চালানের মডেলটির সময়কাল দূরত্বের ম্যাট্রিক থাকে তবে departure_waypoint নির্দিষ্ট করা উচিত নয়।

tags[]

string

ভিজিট অনুরোধের সাথে সংযুক্ত ট্যাগগুলি নির্দিষ্ট করে। খালি বা সদৃশ স্ট্রিং অনুমোদিত নয়।

time_windows[]

TimeWindow

টাইম উইন্ডোজ যা একটি দর্শন সময় আগমনের সময়কে সীমাবদ্ধ করে। নোট করুন যে কোনও যানবাহন আগমনের সময় উইন্ডোর বাইরে চলে যেতে পারে, অর্থাত্ আগমনের সময় + সময়কাল কোনও সময় উইন্ডোর ভিতরে থাকার দরকার নেই। TimeWindow.start_time আগে গাড়িটি উপস্থিত হলে এটি অপেক্ষা করার সময় হতে পারে।

TimeWindow অনুপস্থিতির অর্থ হ'ল গাড়িটি যে কোনও সময় এই দর্শনটি সম্পাদন করতে পারে।

টাইম উইন্ডোজ অবশ্যই বিরক্ত হতে হবে, অর্থাত্ কোনও সময় উইন্ডো অবশ্যই অন্যের সাথে ওভারল্যাপ করতে হবে বা অন্য সংলগ্ন হতে হবে এবং সেগুলি অবশ্যই ক্রমবর্ধমান ক্রমে থাকতে হবে।

cost_per_hour_after_soft_end_time এবং soft_end_time কেবল তখনই সেট করা যেতে পারে যদি কোনও একক সময় উইন্ডো থাকে।

duration

Duration

ভিজিটের সময়কাল, অর্থাত্ আগমন এবং প্রস্থানের মধ্যে যানবাহন দ্বারা ব্যয় করা সময় (সম্ভাব্য অপেক্ষার সময়টিতে যুক্ত হতে হবে; time_windows দেখুন)।

cost

double

কোনও যানবাহনের রুটে এই ভিজিট অনুরোধটি পরিষেবা দিতে ব্যয়। এটি প্রতিটি বিকল্প পিকআপ বা চালানের সরবরাহের জন্য বিভিন্ন ব্যয় দিতে ব্যবহার করা যেতে পারে। এই ব্যয়টি অবশ্যই Shipment.penalty_cost মতো একই ইউনিটে থাকতে হবে en

load_demands

map<string, Load >

এই ভিজিট অনুরোধের দাবি লোড। এটি ঠিক Shipment.load_demands Shipment VisitRequest এখানে তালিকাভুক্ত দাবিগুলি Shipment.load_demands তালিকাভুক্ত দাবিগুলিতে যুক্ত করা হয়েছে Load লোড_ডেম্যান্ডস।

visit_types[]

string

ভিজিটের ধরণগুলি নির্দিষ্ট করে। এটি কোনও যানবাহন এই দর্শনটি সম্পূর্ণ করার জন্য প্রয়োজনীয় অতিরিক্ত সময় বরাদ্দ করতে ব্যবহৃত হতে পারে (দেখুন Vehicle.extra_visit_duration_for_visit_type )।

একটি প্রকার কেবল একবার উপস্থিত হতে পারে।

label

string

এই VisitRequest জন্য একটি লেবেল নির্দিষ্ট করে। এই লেবেলটি সংশ্লিষ্ট ShipmentRoute.Visit visit_label হিসাবে প্রতিক্রিয়াতে রিপোর্ট করা হয়েছে।

শিপমেন্টমোডেল

একটি চালানের মডেলটিতে শিপমেন্টের একটি সেট রয়েছে যা সামগ্রিক ব্যয়কে হ্রাস করার সময় যানবাহনের একটি সেট দ্বারা সম্পাদন করতে হবে, যা এর যোগফল:

  • যানবাহনগুলি রাউটিংয়ের ব্যয় (মোট সময় প্রতি ব্যয়ের যোগফল, ভ্রমণের সময় প্রতি ব্যয় এবং সমস্ত যানবাহনের উপর নির্ধারিত ব্যয়)।
  • অপ্রয়োজনীয় চালানের জরিমানা।
  • চালানের বৈশ্বিক সময়কালের ব্যয়
ক্ষেত্র
shipments[]

Shipment

শিপমেন্টের সেট যা অবশ্যই মডেলটিতে সম্পাদন করা উচিত।

vehicles[]

Vehicle

যানবাহনের সেট যা ভিজিট সম্পাদন করতে ব্যবহার করা যেতে পারে।

global_start_time

Timestamp

মডেলটির গ্লোবাল স্টার্ট এবং শেষ সময়: এই পরিসরের বাইরে কোনও সময় বৈধ হিসাবে বিবেচিত হতে পারে না।

মডেলের সময়কাল অবশ্যই এক বছরেরও কম হতে হবে, অর্থাত্ global_end_time এবং global_start_time অবশ্যই একে অপরের 31536000 সেকেন্ডের মধ্যে হওয়া উচিত।

cost_per_*hour ক্ষেত্রগুলি ব্যবহার করার সময়, আপনি পারফরম্যান্স বাড়ানোর জন্য এই উইন্ডোটি একটি ছোট ব্যবধানে সেট করতে চাইতে পারেন (যেমন আপনি যদি একদিনের মডেল করেন তবে আপনার সেই দিনটিতে বিশ্বব্যাপী সময়সীমা নির্ধারণ করা উচিত)। যদি আনসেট হয়, 00:00:00 ইউটিসি, 1 জানুয়ারী, 1970 (অর্থাত্ সেকেন্ডস: 0, ন্যানোস: 0) ডিফল্ট হিসাবে ব্যবহৃত হয়।

global_end_time

Timestamp

যদি আনসেট হয়, 00:00:00 ইউটিসি, 1 জানুয়ারী, 1971 (অর্থাত্ সেকেন্ডস: 31536000, ন্যানোস: 0) ডিফল্ট হিসাবে ব্যবহৃত হয়।

global_duration_cost_per_hour

double

সামগ্রিক পরিকল্পনার "বৈশ্বিক সময়কাল" হ'ল প্রাথমিকতম কার্যকর শুরুর সময় এবং সমস্ত যানবাহনের সর্বশেষ কার্যকর শেষ সময়ের মধ্যে পার্থক্য। উদাহরণস্বরূপ, প্রথম দিকের কাজ সমাপ্তির জন্য চেষ্টা এবং অনুকূল করার জন্য ব্যবহারকারীরা সেই পরিমাণকে প্রতি ঘন্টা ব্যয় নির্ধারণ করতে পারেন। এই ব্যয়টি অবশ্যই Shipment.penalty_cost মতো একই ইউনিটে থাকতে হবে en

duration_distance_matrices[]

DurationDistanceMatrix

মডেলটিতে ব্যবহৃত সময়কাল এবং দূরত্ব ম্যাট্রিকগুলি নির্দিষ্ট করে। যদি এই ক্ষেত্রটি খালি থাকে তবে গুগল ম্যাপস বা জিওডেসিক দূরত্বগুলি পরিবর্তে ব্যবহার করা হবে, use_geodesic_distances ক্ষেত্রের মানের উপর নির্ভর করে। যদি এটি খালি না থাকে তবে use_geodesic_distances সত্য হতে পারে না এবং duration_distance_matrix_src_tags বা duration_distance_matrix_dst_tags খালি থাকতে পারে না।

ব্যবহারের উদাহরণ:

  • দুটি অবস্থান রয়েছে: লোকা এবং লোকব।
  • 1 যানবাহন লোকায় তার রুট শুরু করে এবং এটি লোকায় শেষ করে।
  • 1 পিকআপ ভিজিট ভিজিট রিকোয়েস্ট এলওবিটিতে।
model {
  vehicles { start_tags: "locA"  end_tags: "locA" }
  shipments { pickups { tags: "locB" } }
  duration_distance_matrix_src_tags: "locA"
  duration_distance_matrix_src_tags: "locB"
  duration_distance_matrix_dst_tags: "locA"
  duration_distance_matrix_dst_tags: "locB"
  duration_distance_matrices {
    rows {  # from: locA
      durations { seconds: 0 }   meters: 0    # to: locA
      durations { seconds: 100 } meters: 1000 # to: locB
    }
    rows {  # from: locB
      durations { seconds: 102 } meters: 990 # to: locA
      durations { seconds: 0 }   meters: 0   # to: locB
    }
  }
}
  • এখানে তিনটি অবস্থান রয়েছে: লোকা, লোকেবি এবং লোকসি।
  • 1 যানবাহন লোকায় তার রুট শুরু করে এবং এটি লকবিতে শেষ করে, ম্যাট্রিক্স "ফাস্ট" ব্যবহার করে।
  • 1 যানবাহনটি লকব -এ তার রুটটি শুরু করে এবং এটি ম্যাট্রিক্স "স্লো" ব্যবহার করে লকবিতে শেষ করে।
  • 1 যানবাহন লকব এ তার রুটটি শুরু করে এবং এটি লকবিতে শেষ করে, ম্যাট্রিক্স "ফাস্ট" ব্যবহার করে।
  • 1 পিকআপ ভিজিট ভিজিট রিকোয়েস্ট এলওসিসি।
model {
  vehicles { start_tags: "locA" end_tags: "locB" start_tags: "fast" }
  vehicles { start_tags: "locB" end_tags: "locB" start_tags: "slow" }
  vehicles { start_tags: "locB" end_tags: "locB" start_tags: "fast" }
  shipments { pickups { tags: "locC" } }
  duration_distance_matrix_src_tags: "locA"
  duration_distance_matrix_src_tags: "locB"
  duration_distance_matrix_src_tags: "locC"
  duration_distance_matrix_dst_tags: "locB"
  duration_distance_matrix_dst_tags: "locC"
  duration_distance_matrices {
    vehicle_start_tag: "fast"
    rows {  # from: locA
      durations { seconds: 1000 } meters: 2000 # to: locB
      durations { seconds: 600 }  meters: 1000 # to: locC
    }
    rows {  # from: locB
      durations { seconds: 0 }   meters: 0    # to: locB
      durations { seconds: 700 } meters: 1200 # to: locC
    }
    rows {  # from: locC
      durations { seconds: 702 } meters: 1190 # to: locB
      durations { seconds: 0 }   meters: 0    # to: locC
    }
  }
  duration_distance_matrices {
    vehicle_start_tag: "slow"
    rows {  # from: locA
      durations { seconds: 1800 } meters: 2001 # to: locB
      durations { seconds: 900 }  meters: 1002 # to: locC
    }
    rows {  # from: locB
      durations { seconds: 0 }    meters: 0    # to: locB
      durations { seconds: 1000 } meters: 1202 # to: locC
    }
    rows {  # from: locC
      durations { seconds: 1001 } meters: 1195 # to: locB
      durations { seconds: 0 }    meters: 0    # to: locC
    }
  }
}
duration_distance_matrix_src_tags[]

string

সময়কাল এবং দূরত্বের ম্যাট্রিকগুলির উত্সগুলি সংজ্ঞায়িত ট্যাগগুলি; duration_distance_matrices(i).rows(j) ট্যাগ duration_distance_matrix_src_tags(j) এর সাথে পরিদর্শন থেকে সময়কাল এবং দূরত্বগুলি ম্যাট্রিক্স I এর অন্যান্য পরিদর্শনগুলিতে সংজ্ঞায়িত করে।

ট্যাগগুলি VisitRequest.tags বা Vehicle.start_tags সাথে সম্পর্কিত। প্রদত্ত VisitRequest বা Vehicle অবশ্যই এই ক্ষেত্রে ঠিক একটি ট্যাগের সাথে মেলে। নোট করুন যে কোনও Vehicle উত্স, গন্তব্য এবং ম্যাট্রিক্স ট্যাগ একই হতে পারে; একইভাবে একটি VisitRequest উত্স এবং গন্তব্য ট্যাগগুলি একই হতে পারে। সমস্ত ট্যাগ অবশ্যই আলাদা হতে হবে এবং খালি স্ট্রিং হতে পারে না। যদি এই ক্ষেত্রটি খালি না থাকে তবে duration_distance_matrices খালি থাকা উচিত নয়।

duration_distance_matrix_dst_tags[]

string

সময়কাল এবং দূরত্বের ম্যাট্রিকগুলির গন্তব্যগুলি সংজ্ঞায়িত ট্যাগগুলি; duration_distance_matrices(i).rows(j).durations(k) duration_distance_matrices(i).rows(j).meters(k)) (রেস। duration_distance_matrix_src_tags(j) (আই)। duration_distance_matrix_src_tags(j) ট্যাগ duration_distance_matrix_dst_tags(k) এর সাথে ম্যাট্রিক্স I এর সাথে দেখা করতে।

ট্যাগগুলি VisitRequest.tags বা Vehicle.start_tags সাথে সম্পর্কিত। প্রদত্ত VisitRequest বা Vehicle অবশ্যই এই ক্ষেত্রে ঠিক একটি ট্যাগের সাথে মেলে। নোট করুন যে কোনও Vehicle উত্স, গন্তব্য এবং ম্যাট্রিক্স ট্যাগ একই হতে পারে; একইভাবে একটি VisitRequest উত্স এবং গন্তব্য ট্যাগগুলি একই হতে পারে। সমস্ত ট্যাগ অবশ্যই আলাদা হতে হবে এবং খালি স্ট্রিং হতে পারে না। যদি এই ক্ষেত্রটি খালি না থাকে তবে duration_distance_matrices খালি থাকা উচিত নয়।

transition_attributes[]

TransitionAttributes

মডেলটিতে রূপান্তর বৈশিষ্ট্য যুক্ত করা হয়েছে।

shipment_type_incompatibilities[]

ShipmentTypeIncompatibility

বেমানান শিপমেন্ট_ টাইপগুলির সেটগুলি ( ShipmentTypeIncompatibility দেখুন)।

shipment_type_requirements[]

ShipmentTypeRequirement

shipment_type প্রয়োজনীয়তার সেটগুলি ( ShipmentTypeRequirement দেখুন)।

precedence_rules[]

PrecedenceRule

অগ্রাধিকার বিধিগুলির সেট যা অবশ্যই মডেলটিতে প্রয়োগ করা উচিত।

max_active_vehicles

int32

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

সময়কাল ডিস্ট্যান্টসেম্যাট্রিক্স

ভিজিট এবং যানবাহন শুরু করার অবস্থানগুলি এবং যানবাহন শেষের অবস্থানগুলি থেকে একটি সময়কাল এবং দূরত্বের ম্যাট্রিক্স নির্দিষ্ট করে।

ক্ষেত্র
rows[]

Row

সময়কাল এবং দূরত্বের ম্যাট্রিক্সের সারিগুলি নির্দিষ্ট করে। এটি অবশ্যই ShipmentModel.duration_distance_matrix_src_tags হিসাবে অনেক উপাদান থাকতে হবে DD

vehicle_start_tag

string

এই সময়কাল এবং দূরত্বের ম্যাট্রিক্স প্রয়োগ করে কোন যানবাহনগুলি সংজ্ঞায়িত করে ট্যাগ। যদি খালি হয় তবে এটি সমস্ত যানবাহনের ক্ষেত্রে প্রযোজ্য এবং কেবল একটি একক ম্যাট্রিক্স থাকতে পারে।

প্রতিটি যানবাহন শুরু করতে হবে ঠিক একটি ম্যাট্রিক্সের সাথে মেলে, অর্থাত্ তাদের start_tags ক্ষেত্রগুলির মধ্যে একটি অবশ্যই একটি ম্যাট্রিক্সের vehicle_start_tag সাথে মিলবে (এবং কেবলমাত্র সেই ম্যাট্রিক্সের)।

সমস্ত ম্যাট্রিক্সের অবশ্যই একটি আলাদা vehicle_start_tag থাকতে হবে।

সারি

সময়কাল এবং দূরত্বের ম্যাট্রিক্সের একটি সারি নির্দিষ্ট করে।

ক্ষেত্র
durations[]

Duration

একটি প্রদত্ত সারির জন্য সময়কাল মান। এটি অবশ্যই ShipmentModel.duration_distance_matrix_dst_tags হিসাবে অনেকগুলি উপাদান থাকতে হবে DD ডিউরেশন_ডিস্ট্যান্স_ম্যাট্রিক্স_ডিস্ট_ট্যাগগুলি।

meters[]

double

একটি প্রদত্ত সারির জন্য দূরত্বের মান। যদি কোনও ব্যয় বা সীমাবদ্ধতা মডেলটির দূরত্বগুলি উল্লেখ করে তবে এটি খালি রেখে দেওয়া যেতে পারে; অন্যথায় এটির durations মতো অনেকগুলি উপাদান থাকতে হবে।

পূর্ববর্তী

দুটি ইভেন্টের মধ্যে একটি অগ্রাধিকার নিয়ম (প্রতিটি ইভেন্ট হ'ল পিকআপ বা একটি চালানের বিতরণ): "দ্বিতীয়" ইভেন্টটি "প্রথম" শুরু হওয়ার পরে কমপক্ষে offset_duration শুরু করতে হবে।

বেশ কয়েকটি অগ্রাধিকার একই (বা সম্পর্কিত) ইভেন্টগুলিকে উল্লেখ করতে পারে, যেমন, "বি এর পিকআপ একটি সরবরাহের পরে ঘটে" এবং "সি এর পিকআপ বি পিকআপের পরে ঘটে"।

তদ্ব্যতীত, উভয় চালান সম্পাদন করা হয় এবং অন্যথায় উপেক্ষা করা হয় কেবল তখনই প্রযোজ্য প্রযোজ্য।

ক্ষেত্র
first_is_delivery

bool

"প্রথম" ইভেন্টটি যদি বিতরণ হয় তা নির্দেশ করে।

second_is_delivery

bool

"দ্বিতীয়" ইভেন্টটি যদি ডেলিভারি হয় তা নির্দেশ করে।

offset_duration

Duration

"প্রথম" এবং "দ্বিতীয়" ইভেন্টের মধ্যে অফসেট। এটা নেতিবাচক হতে পারে.

first_index

int32

"প্রথম" ইভেন্টের চালান সূচক। এই ক্ষেত্র নির্দিষ্ট করা আবশ্যক.

second_index

int32

"দ্বিতীয়" ইভেন্টের চালান সূচক। এই ক্ষেত্র নির্দিষ্ট করা আবশ্যক.

শিপমেন্ট রুট

একটি গাড়ির রুটটি সময়ের অক্ষের সাথে পচে যেতে পারে, এর মতো (আমরা ধরে নিই যে এন ভিজিট রয়েছে):

  |            |            |          |       |  T[2], |        |      |
  | Transition |  Visit #0  |          |       |  V[2], |        |      |
  |     #0     |    aka     |   T[1]   |  V[1] |  ...   | V[n-1] | T[n] |
  |  aka T[0]  |    V[0]    |          |       | V[n-2],|        |      |
  |            |            |          |       | T[n-1] |        |      |
  ^            ^            ^          ^       ^        ^        ^      ^
vehicle    V[0].start   V[0].end     V[1].   V[1].    V[n].    V[n]. vehicle
 start     (arrival)   (departure)   start   end      start    end     end

নোট করুন যে আমরা এর মধ্যে একটি পার্থক্য তৈরি করি:

  • "সময়োপযোগী ইভেন্টগুলি", যেমন যানবাহন শুরু এবং শেষ এবং প্রতিটি ভিজিটের শুরু এবং শেষ (ওরফে আগমন এবং প্রস্থান)। তারা একটি নির্দিষ্ট দ্বিতীয় সময়ে ঘটে।
  • "সময় অন্তর", যেমন ভিজিট নিজেরাই এবং দর্শনগুলির মধ্যে রূপান্তর। যদিও সময়ের ব্যবধানগুলি কখনও কখনও শূন্য সময়কাল থাকতে পারে, অর্থাত্ একই সেকেন্ডে শুরু এবং শেষ হয়, তাদের প্রায়শই ইতিবাচক সময়কাল থাকে।

অপরিবর্তনীয়:

  • যদি এন ভিজিট থাকে তবে এন+1 ট্রানজিশন রয়েছে।
  • একটি দর্শন সর্বদা এটির (একই সূচক) এবং এর পরে একটি ট্রানজিশন (সূচক + 1) এর আগে একটি রূপান্তর দ্বারা বেষ্টিত থাকে।
  • যানবাহন শুরু সর্বদা স্থানান্তর #0 দ্বারা অনুসরণ করা হয়।
  • গাড়ির শেষটি সর্বদা #এন ট্রানজিশনের আগে থাকে।

জুম ইন, এখানে একটি Transition এবং Visit চলাকালীন যা ঘটে তা এখানে:

---+-------------------------------------+-----------------------------+-->
   |           TRANSITION[i]             |           VISIT[i]          |
   |                                     |                             |
   |  * TRAVEL: the vehicle moves from   |      PERFORM the visit:     |
   |    VISIT[i-1].departure_location to |                             |
   |    VISIT[i].arrival_location, which |  * Spend some time:         |
   |    takes a given travel duration    |    the "visit duration".    |
   |    and distance                     |                             |
   |                                     |  * Load or unload           |
   |  * BREAKS: the driver may have      |    some quantities from the |
   |    breaks (e.g. lunch break).       |    vehicle: the "demand".   |
   |                                     |                             |
   |  * WAIT: the driver/vehicle does    |                             |
   |    nothing. This can happen for     |                             |
   |    many reasons, for example when   |                             |
   |    the vehicle reaches the next     |                             |
   |    event's destination before the   |                             |
   |    start of its time window         |                             |
   |                                     |                             |
   |  * DELAY: *right before* the next   |                             |
   |    arrival. E.g. the vehicle and/or |                             |
   |    driver spends time unloading.    |                             |
   |                                     |                             |
---+-------------------------------------+-----------------------------+-->
   ^                                     ^                             ^
V[i-1].end                           V[i].start                    V[i].end

শেষ অবধি, এখানে কীভাবে ভ্রমণ, বিরতি, বিলম্ব এবং অপেক্ষা করার সময়টি কোনও পরিবর্তনের সময় সাজানো যেতে পারে।

  • তারা ওভারল্যাপ না.
  • বিলম্বটি অনন্য এবং পরবর্তী দর্শন (বা যানবাহনের শেষ) এর ঠিক আগে অবশ্যই একটি স্বচ্ছ সময় হতে হবে। সুতরাং, এর শুরু এবং শেষ সময়টি জানতে বিলম্বের সময়কালটি জানতে যথেষ্ট।
  • বিরতিগুলি স্বচ্ছ, অ-ওভারল্যাপিং সময়কাল। প্রতিক্রিয়া প্রতিটি বিরতির শুরু সময় এবং সময়কাল নির্দিষ্ট করে।
  • ভ্রমণ এবং অপেক্ষা "প্রিম্পেমেবল": এই সংক্রমণের সময় এগুলি বেশ কয়েকবার বাধা দেওয়া যেতে পারে। ক্লায়েন্টরা ধরে নিতে পারেন যে ভ্রমণ "যত তাড়াতাড়ি সম্ভব" ঘটে এবং "অপেক্ষা করুন" বাকি সময়টি পূরণ করে।

একটি (জটিল) উদাহরণ:

                               TRANSITION[i]
--++-----+-----------------------------------------------------------++-->
  ||     |       |           |       |           |         |         ||
  ||  T  |   B   |     T     |       |     B     |         |    D    ||
  ||  r  |   r   |     r     |   W   |     r     |    W    |    e    ||
  ||  a  |   e   |     a     |   a   |     e     |    a    |    l    ||
  ||  v  |   a   |     v     |   i   |     a     |    i    |    a    ||
  ||  e  |   k   |     e     |   t   |     k     |    t    |    y    ||
  ||  l  |       |     l     |       |           |         |         ||
  ||     |       |           |       |           |         |         ||
--++-----------------------------------------------------------------++-->
ক্ষেত্র
vehicle_index

int32

সোর্স ShipmentModel এর সূচক দ্বারা চিহ্নিত রুটটি সম্পাদনকারী যানবাহন।

vehicle_label

string

এই রুটটি সম্পাদনকারী গাড়ির লেবেল, ShipmentModel.vehicles(vehicle_index).label , যদি নির্দিষ্ট করা হয়।

vehicle_start_time

Timestamp

যে সময় যানটি তার রুট শুরু করে।

vehicle_end_time

Timestamp

যানবাহনটি তার রুটটি শেষ করে।

visits[]

Visit

কোনও রুটের প্রতিনিধিত্বকারী ভিজিটের ক্রম ক্রম। ভিজিট [i] রুটে আই-থে ভিজিট। যদি এই ক্ষেত্রটি খালি থাকে তবে যানটিকে অব্যবহৃত হিসাবে বিবেচনা করা হয়।

transitions[]

Transition

রুটের জন্য ট্রানজিশনের তালিকা অর্ডার করা।

has_traffic_infeasibilities

bool

যখন OptimizeToursRequest.consider_road_traffic সত্যে সেট করা হয়, এই ক্ষেত্রটি ইঙ্গিত দেয় যে রুটের সময়গুলিতে অসঙ্গতিগুলি ট্র্যাফিক-ভিত্তিক ভ্রমণ সময়কাল অনুমান ব্যবহার করে পূর্বাভাস দেওয়া হয়। প্রথম দেখার আগে, বা শেষ পরিদর্শন করার পরে ভিজিট এবং যানবাহনের সময় উইন্ডোগুলি সন্তুষ্ট করার সময় ট্র্যাফিক-সমন্বিত ভ্রমণ, বিলম্ব এবং ভিজিটের মধ্যে বিরতি শেষ করার জন্য পর্যাপ্ত সময় থাকতে পারে। যেমন,

  start_time(previous_visit) + duration(previous_visit) +
  travel_duration(previous_visit, next_visit) > start_time(next_visit)

ট্র্যাফিকের কারণে ট্র্যাভেল টাইম travel_duration(previous_visit, next_visit) এর বর্ধিত প্রাক্কলনের কারণে তার বর্তমান সময়ের উইন্ডোর চেয়ে পরবর্তী সময়টি সম্ভবত পরবর্তী সময়ে ঘটবে। এছাড়াও, ভ্রমণের সময় প্রাক্কলন বৃদ্ধির কারণে এবং সময় উইন্ডো বিধিনিষেধগুলি ভিজিট বা ভাঙার কারণে একটি বিরতি একটি ভিজিটের সাথে ওভারল্যাপ করতে বাধ্য হতে পারে।

route_polyline

EncodedPolyline

রুটের এনকোডেড পললাইন উপস্থাপনা। এই ক্ষেত্রটি কেবল তখনই পপুলেশন করা হয় যদি OptimizeToursRequest.populate_polylines সত্যে সেট করা থাকে।

breaks[]

Break

এই রুটটি সম্পাদনকারী যানবাহনের জন্য নির্ধারিত বিরতি। breaks সিকোয়েন্সটি সময় অন্তরকে উপস্থাপন করে, প্রতিটি সংশ্লিষ্ট start_time এবং দীর্ঘস্থায়ী duration সেকেন্ডে শুরু হয়।

metrics

AggregatedMetrics

এই রুটের জন্য সময়কাল, দূরত্ব এবং লোড মেট্রিকগুলি। প্রসঙ্গের উপর নির্ভর করে সমস্ত ShipmentRoute.transitions বা ShipmentRoute.visits মাধ্যমে AggregatedMetrics ক্ষেত্রগুলি সংক্ষিপ্ত করা হয়।

route_costs

map<string, double>

রুটের ব্যয়, ব্যয় সম্পর্কিত অনুরোধ ক্ষেত্রগুলি দ্বারা ভেঙে। কীগুলি হ'ল প্রোটো পাথ, ইনপুট অপ্টিমাইজটোর্স রিকোয়েস্টের সাথে সম্পর্কিত, যেমন "মডেল.শিপমেন্টস.পিকআপস.কোস্ট", এবং মানগুলি পুরো রুটের সাথে একত্রিত করা ব্যয় ক্ষেত্রের দ্বারা উত্পাদিত মোট ব্যয়। অন্য কথায়, ব্যয়গুলি ["মডেল.শিপমেন্টস.পিকআপস.কস্ট"] রুটে সমস্ত পিকআপ ব্যয়ের যোগফল। মডেলটিতে সংজ্ঞায়িত সমস্ত ব্যয়গুলি এখানে ট্রানজিশনঅ্যাট্রিবিউটগুলির সাথে সম্পর্কিত ব্যয় ব্যতীত বিশদভাবে প্রতিবেদন করা হয়েছে যা কেবলমাত্র 2022/01 হিসাবে সমষ্টিগত উপায়ে রিপোর্ট করা হয়েছে।

route_total_cost

double

রুটের মোট ব্যয়। ব্যয় মানচিত্রে সমস্ত ব্যয়ের যোগফল।

বিরতি

বিরতি কার্যকর করার প্রতিনিধিত্বকারী ডেটা।

ক্ষেত্র
start_time

Timestamp

বিরতির শুরু সময়।

duration

Duration

বিরতির সময়কাল।

এনকোডেডপোলাইন

একটি পললাইনের এনকোডেড উপস্থাপনা। পললাইন এনকোডিং সম্পর্কিত আরও তথ্য এখানে পাওয়া যাবে: https://developers.google.com/maps/docamentation/utiviles/polylinealgorithm https://dewoogle.com/maps/docarctiction/javasprict/reference/geometry#encoding

ক্ষেত্র
points

string

পললাইনের এনকোডেড পয়েন্টগুলি উপস্থাপন করে স্ট্রিং।

উত্তরণ

রুটে দুটি ইভেন্টের মধ্যে রূপান্তর। ShipmentRoute বিবরণ দেখুন।

যদি গাড়ির কোনও start_location এবং/অথবা end_location না থাকে তবে সংশ্লিষ্ট ট্র্যাভেল মেট্রিকগুলি 0 হয়।

ক্ষেত্র
travel_duration

Duration

এই রূপান্তরকালে ভ্রমণের সময়কাল।

travel_distance_meters

double

রূপান্তর চলাকালীন দূরত্ব ভ্রমণ।

traffic_info_unavailable

bool

যখন ট্র্যাফিকের জন্য OptimizeToursRequest.consider_road_traffic মাধ্যমে অনুরোধ করা হয় এবং ট্র্যাফিকের তথ্য কোনও Transition জন্য পুনরুদ্ধার করা যায় না, এই বুলিয়ানটি সত্যে সেট করা আছে। এটি অস্থায়ী হতে পারে (রিয়েলটাইম ট্র্যাফিক সার্ভারগুলিতে বিরল হিচাপ) বা স্থায়ী (এই অবস্থানের জন্য কোনও ডেটা নেই)।

delay_duration

Duration

এই রূপান্তরটিতে প্রয়োগ করা বিলম্বের সময়কালের যোগফল। যদি কোনও হয় তবে বিলম্বটি পরবর্তী ইভেন্টের (ভিজিট বা যানবাহন শেষ) ঠিক আগে delay_duration সেকেন্ডের শুরু হয়। TransitionAttributes.delay দেখুন।

break_duration

Duration

এই রূপান্তরকালে বিরতিগুলির সময়কালের যোগফল, যদি থাকে। প্রতিটি বিরতির শুরুর সময় এবং সময়কাল সম্পর্কে বিশদগুলি ShipmentRoute.breaks সংরক্ষণ করা হয়।

wait_duration

Duration

এই রূপান্তরকালে অপেক্ষা করতে সময় ব্যয়। অপেক্ষা করার সময়কাল নিষ্ক্রিয় সময়ের সাথে মিলে যায় এবং বিরতির সময় অন্তর্ভুক্ত করে না। এছাড়াও নোট করুন যে এই অপেক্ষার সময়টি বেশ কয়েকটি অ-স্বচ্ছল ব্যবধানে বিভক্ত হতে পারে।

total_duration

Duration

সুবিধার জন্য সরবরাহ করা রূপান্তরটির মোট সময়কাল। এটি সমান:

  • পরবর্তী ভিজিট start_time (বা vehicle_end_time যদি এটি সর্বশেষ রূপান্তর হয়) - এই ট্রানজিশনের start_time ;
  • যদি ShipmentRoute.has_traffic_infeasibilities মিথ্যা হয় তবে নিম্নলিখিতটি অতিরিক্তভাবে ধরে রয়েছে: `মোট_ডারেশন = ট্র্যাভেল_ডিউরেশন + বিলম্ব_করণের জন্য
  • ব্রেক_ডারেশন + ওয়েট_ডিউরেশনু `
start_time

Timestamp

এই রূপান্তর শুরু সময়।

route_polyline

EncodedPolyline

ট্রানজিশনের সময় অনুসরণ করা রুটের এনকোডেড পললাইন উপস্থাপনা। এই ক্ষেত্রটি কেবল তখনই পপুলেটেড হয় যদি populate_transition_polylines সত্যে সেট করা থাকে।

vehicle_loads

map<string, VehicleLoad >

এই ট্রানজিশনের সময় যানবাহন লোড হয়, প্রতিটি ধরণের জন্য যা এই গাড়ির Vehicle.load_limits প্রদর্শিত হয় Shipment.load_demands

প্রথম স্থানান্তরের সময় লোডগুলি হ'ল যানবাহনের রুটের প্রারম্ভিক লোড। তারপরে, প্রতিটি দেখার পরে, ভিজিটটি পিকআপ বা ডেলিভারি ছিল কিনা তার উপর নির্ভর করে ভিজিটের load_demands পরবর্তী ট্রানজিশনের লোডগুলি পেতে যুক্ত বা বিয়োগ করা হয়।

যানবাহন লোড

একটি প্রদত্ত প্রকারের জন্য রুট বরাবর কিছু সময়ে গাড়ির প্রকৃত লোড রিপোর্ট করে ( Transition.vehicle_loads দেখুন)।

ক্ষেত্র
amount

int64

প্রদত্ত প্রকারের জন্য গাড়ির উপর লোডের পরিমাণ। লোডের একক সাধারণত প্রকার দ্বারা নির্দেশিত হয়। Transition.vehicle_loads দেখুন।

ভিজিট করুন

একটি রুট চলাকালীন একটি দর্শন করা হয়েছিল। এই ভিজিট একটি পিকআপ বা Shipment সরবরাহের সাথে মিলে যায়।

ক্ষেত্র
shipment_index

int32

উত্স ShipmentModel shipments ক্ষেত্রের সূচক।

is_pickup

bool

যদি সত্য হয় তবে দর্শনটি Shipment পিকআপের সাথে মিলে যায়। অন্যথায়, এটি একটি প্রসবের সাথে মিলে যায়।

visit_request_index

int32

Shipment পিকআপ বা বিতরণ ক্ষেত্রে উভয়ই VisitRequest সূচক (দেখুন is_pickup )।

start_time

Timestamp

সময় যেখানে দর্শন শুরু হয়। নোট করুন যে যানটি ভিজিটের স্থানে এর চেয়ে আগে আসতে পারে। সময়গুলি ShipmentModel সাথে সামঞ্জস্যপূর্ণ।

load_demands

map<string, Load >

চালানের যোগফল এবং ভিজিট অনুরোধ load_demands হিসাবে মোট ভিজিট লোড চাহিদা। ভিজিট ডেলিভারি হলে মানগুলি নেতিবাচক। Transition.loads মতো একই ধরণের জন্য দাবিগুলি রিপোর্ট করা হয় Load লোড (এই ক্ষেত্রটি দেখুন)।

detour

Duration

ভিজিটের আগে রুটে শিপমেন্টগুলি পরিদর্শন করার কারণে এবং সময় উইন্ডোজ দ্বারা প্ররোচিত সম্ভাব্য অপেক্ষার সময়টিতে অতিরিক্ত ডিটোর সময়। যদি ভিজিটটি ডেলিভারি হয় তবে ডিটোরটি সংশ্লিষ্ট পিকআপ ভিজিট থেকে গণনা করা হয় এবং এর সমান:

start_time(delivery) - start_time(pickup)
- (duration(pickup) + travel duration from the pickup location
to the delivery location).

অন্যথায়, এটি যানবাহন start_location থেকে গণনা করা হয় এবং এর সমান:

start_time - vehicle_start_time - travel duration from
the vehicle's `start_location` to the visit.
shipment_label

string

সংশ্লিষ্ট Shipment.label অনুলিপি.লাবেল, Shipment নির্দিষ্ট করা থাকলে।

visit_label

string

সংশ্লিষ্ট VisitRequest.label অনুলিপি, যদি VisitRequest নির্দিষ্ট করা হয়।

শিপমেন্ট টাইপিংকম্প্যাটিবিলিটি

তাদের চালান_ টাইপের উপর নির্ভর করে চালানের মধ্যে অসঙ্গতিগুলি নির্দিষ্ট করে। একই রুটে বেমানান শিপমেন্টের উপস্থিতি অসঙ্গতি মোডের ভিত্তিতে সীমাবদ্ধ।

ক্ষেত্র
types[]

string

বেমানান ধরণের তালিকা। তালিকাভুক্তদের মধ্যে বিভিন্ন shipment_types দুটি চালান "বেমানান"।

incompatibility_mode

IncompatibilityMode

মোডটি অসম্পূর্ণতার জন্য প্রয়োগ করা হয়েছে।

অসঙ্গতিমোড

কীভাবে বেমানান শিপমেন্টের উপস্থিতি একই রুটে সীমাবদ্ধ রয়েছে তা সংজ্ঞায়িত মোডগুলি।

Enums
INCOMPATIBILITY_MODE_UNSPECIFIED অনির্ধারিত অসঙ্গতি মোড। এই মানটি কখনই ব্যবহার করা উচিত নয়।
NOT_PERFORMED_BY_SAME_VEHICLE এই মোডে, বেমানান ধরণের দুটি শিপমেন্ট কখনই একই যানবাহন ভাগ করতে পারে না।
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY

NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY অসম্পূর্ণতা মোডের সাথে বেমানান ধরণের দুটি শিপমেন্টের জন্য:

  • যদি উভয়ই কেবল পিকআপ হয় (কোনও বিতরণ নেই) বা কেবল বিতরণ (কোনও পিকআপ নেই), তারা একই যানবাহনটি মোটেই ভাগ করতে পারে না।
  • যদি শিপমেন্টগুলির মধ্যে একটির ডেলিভারি থাকে এবং অন্যটি একটি পিকআপ থাকে তবে দুটি শিপমেন্ট একই গাড়িটি ভাগ করতে পারে যদি পূর্ববর্তী চালানটি পরবর্তীটি বাছাইয়ের আগে সরবরাহ করা হয়।

শিপমেন্ট টাইপেয়ারকায়ারমেন্ট

তাদের চালান_ টাইপের উপর ভিত্তি করে চালানের মধ্যে প্রয়োজনীয়তা নির্দিষ্ট করে। প্রয়োজনীয়তার স্পেসিফিকেশনগুলি প্রয়োজনীয়তা মোড দ্বারা সংজ্ঞায়িত করা হয়।

ক্ষেত্র
required_shipment_type_alternatives[]

string

dependent_shipment_types টাইপস দ্বারা প্রয়োজনীয় বিকল্প চালানের ধরণের তালিকা।

dependent_shipment_types[]

string

dependent_shipment_types টাইপস ফিল্ডে কোনও ধরণের সহ সমস্ত শিপমেন্টের জন্য একই রুটে দেখার জন্য required_shipment_type_alternatives কমপক্ষে একটি চালানের প্রয়োজন।

দ্রষ্টব্য: প্রয়োজনীয়তার চেইনগুলি যেমন একটি shipment_type নিজের উপর নির্ভর করে তা অনুমোদিত নয়।

requirement_mode

RequirementMode

প্রয়োজনীয়তার জন্য মোড প্রয়োগ করা হয়েছে।

প্রয়োজনীয়মোড

কোনও রুটে নির্ভরশীল চালানের উপস্থিতি সংজ্ঞায়িত মোডগুলি।

Enums
REQUIREMENT_MODE_UNSPECIFIED অনির্ধারিত প্রয়োজনীয়তা মোড। এই মানটি কখনই ব্যবহার করা উচিত নয়।
PERFORMED_BY_SAME_VEHICLE এই মোডে, সমস্ত "নির্ভরশীল" শিপমেন্ট অবশ্যই তাদের "প্রয়োজনীয়" শিপমেন্টগুলির মধ্যে কমপক্ষে একটি হিসাবে একই যানবাহন ভাগ করে নিতে হবে।
IN_SAME_VEHICLE_AT_PICKUP_TIME

IN_SAME_VEHICLE_AT_PICKUP_TIME মোডের সাথে, সমস্ত "নির্ভরশীল" চালানের পিকআপের সময় তাদের গাড়ীতে কমপক্ষে একটি "প্রয়োজনীয়" চালান থাকা দরকার।

একটি "নির্ভরশীল" চালানের পিকআপের অবশ্যই অবশ্যই থাকতে হবে:

  • একটি ডেলিভারি-কেবলমাত্র "প্রয়োজনীয়" চালানটি পরে রুটে বিতরণ করা হয়, বা
  • একটি "প্রয়োজনীয়" চালান তার আগে রুটে উঠেছে এবং যদি "প্রয়োজনীয়" চালানের একটি বিতরণ থাকে তবে এই বিতরণটি অবশ্যই "নির্ভরশীল" চালানের পিকআপের পরে সম্পাদন করতে হবে।
IN_SAME_VEHICLE_AT_DELIVERY_TIME আগের মতোই, "নির্ভরশীল" চালানের ব্যতীত তাদের সরবরাহের সময় তাদের গাড়ীতে একটি "প্রয়োজনীয়" চালান থাকা দরকার।

স্কিপশিপমেন্ট

একটি সমাধানে অপরিবর্তিত শিপমেন্টের বিশদ নির্দিষ্ট করে। তুচ্ছ মামলার জন্য এবং/অথবা যদি আমরা এড়িয়ে যাওয়ার কারণটি সনাক্ত করতে সক্ষম হই তবে আমরা এখানে কারণটি প্রতিবেদন করি।

ক্ষেত্র
index

int32

সূচকটি সোর্স ShipmentModel চালানের সূচকের সাথে মিলে যায়।

label

string

সংশ্লিষ্ট Shipment.label অনুলিপি.লাবেল, Shipment নির্দিষ্ট করা থাকলে।

reasons[]

Reason

কেন চালানটি এড়িয়ে গেছে তা ব্যাখ্যা করে এমন একটি কারণগুলির একটি তালিকা। উপরোক্ত Reason দেখুন।

কারণ

চালানটি কেন এড়িয়ে গেছে তা যদি আমরা ব্যাখ্যা করতে পারি তবে কারণগুলি এখানে তালিকাভুক্ত করা হবে। যদি সমস্ত যানবাহনের জন্য কারণ একই না হয় তবে reason 1 টিরও বেশি উপাদান থাকবে। একটি এড়িয়ে যাওয়া চালানের নকল কারণ থাকতে পারে না, যেমন সমস্ত ক্ষেত্র একই থাকে example_vehicle_index । উদাহরণ:

reasons {
  code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
  example_vehicle_index: 1
  example_exceeded_capacity_type: "Apples"
}
reasons {
  code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
  example_vehicle_index: 3
  example_exceeded_capacity_type: "Pears"
}
reasons {
  code: CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT
  example_vehicle_index: 1
}

এড়িয়ে যাওয়া চালানটি সমস্ত যানবাহনের সাথে বেমানান। কারণগুলি সমস্ত যানবাহনের জন্য আলাদা হতে পারে তবে কমপক্ষে একটি গাড়ির "আপেল" ক্ষমতা ছাড়িয়ে যাবে (যানবাহন 1 সহ), কমপক্ষে একটি গাড়ির "নাশপাতি" ক্ষমতা ছাড়িয়ে যাবে (যানবাহন 3 সহ) এবং কমপক্ষে একটি গাড়ির দূরত্বের সীমা থাকবে অতিক্রম করুন (যানবাহন 1 সহ)।

ক্ষেত্র
code

Code

কোডের মন্তব্যগুলি দেখুন।

example_exceeded_capacity_type

string

যদি কারণ কোডটি DEMAND_EXCEEDS_VEHICLE_CAPACITY থাকে তবে একটি ক্ষমতার ধরণের নথি যা ছাড়িয়ে যায়।

example_vehicle_index

int32

যদি কারণটি চালান-যানবাহন অসঙ্গতির সাথে সম্পর্কিত হয় তবে এই ক্ষেত্রটি একটি প্রাসঙ্গিক গাড়ির সূচক সরবরাহ করে।

কোড

কোড কারণ টাইপ সনাক্তকরণ। এখানে অর্ডার অর্থহীন। বিশেষত, এটি উভয়ই প্রয়োগ করা হলে সমাধানের ক্ষেত্রে অন্য কোনও কারণ উপস্থিত হবে কিনা তার কোনও ইঙ্গিত দেয় না।

Enums
CODE_UNSPECIFIED এটি কখনই ব্যবহার করা উচিত নয়। যদি আমরা কোনও চালানটি এড়িয়ে যায় তা যদি আমরা বুঝতে না পারি তবে আমরা কেবল খালি কারণগুলির একটি খালি সেট ফিরিয়ে দেব।
NO_VEHICLE মডেলটিতে কোনও যানবাহন নেই যা সমস্ত চালানকে অপ্রয়োজনীয় করে তোলে।
DEMAND_EXCEEDS_VEHICLE_CAPACITY চালানের চাহিদা কিছু ক্ষমতার ধরণের জন্য একটি গাড়ির সক্ষমতা ছাড়িয়ে যায়, যার মধ্যে একটি example_exceeded_capacity_type
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT

এই চালানটি সম্পাদনের জন্য প্রয়োজনীয় সর্বনিম্ন দূরত্ব, অর্থাত্ গাড়ির start_location থেকে চালানের পিকআপ এবং/অথবা ডেলিভারির অবস্থানগুলিতে এবং গাড়ির শেষ স্থানে গাড়ির route_distance_limit ছাড়িয়ে যায়।

নোট করুন যে এই গণনার জন্য আমরা জিওডেসিক দূরত্ব ব্যবহার করি।

CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT

ভ্রমণের সময়, অপেক্ষা করার সময় এবং পরিষেবার সময় সহ এই চালানটি সম্পাদনের জন্য প্রয়োজনীয় সর্বনিম্ন সময় গাড়ির route_duration_limit ছাড়িয়ে যায়।

দ্রষ্টব্য: ভ্রমণের সময়টি সেরা ক্ষেত্রে দৃশ্যে গণনা করা হয়, যথা জিওডেসিক দূরত্ব x 36 মি/এস (প্রায় 130 কিমি/ঘন্টা) হিসাবে।

CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT উপরের মতো একই তবে আমরা কেবল ন্যূনতম ভ্রমণের সময় এবং গাড়ির travel_duration_limit তুলনা করি।
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS যানবাহনটি এই চালানটি সেরা-ক্ষেত্রে দৃশ্যে সম্পাদন করতে পারে না (দেখুন CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT সময় গণনার জন্য) যদি এটি তার প্রথম দিকের সময়ে শুরু হয়: মোট সময়টি তার সর্বশেষ শেষ সময়ের পরে গাড়িটি শেষ করে দেবে।
VEHICLE_NOT_ALLOWED চালানের allowed_vehicle_indices ক্ষেত্রগুলি খালি নয় এবং এই যানটি এর সাথে সম্পর্কিত নয়।

টাইম উইন্ডো

টাইম উইন্ডোজ কোনও ইভেন্টের সময়কে সীমাবদ্ধ করে, যেমন দেখার সময় আগমনের সময়, বা কোনও গাড়ির শুরু এবং শেষ সময়।

হার্ড টাইম উইন্ডো সীমানা, start_time এবং end_time , ইভেন্টের প্রাথমিকতম এবং সর্বশেষ সময়টি প্রয়োগ করে, যেমন যে start_time <= event_time <= end_time । সফট টাইম উইন্ডো লোয়ার বাউন্ড, soft_start_time , soft_start_time বা তার পরে ঘটনার জন্য একটি পছন্দ প্রকাশ করে যা সফট_স্টার্ট_টাইম ইভেন্টটি হওয়ার আগে কতক্ষণ আগে আনুপাতিক ব্যয় করে। সফট টাইম উইন্ডো উপরের আবদ্ধ, soft_end_time , soft_end_time আগে বা তার আগে ঘটনার জন্য একটি অগ্রাধিকার প্রকাশ করে যা soft_end_time ইভেন্টটি ঘটে তার কতক্ষণের পরে সমানুপাতিক ব্যয় করে। start_time , end_time , soft_start_time এবং soft_end_time বিশ্বব্যাপী সময়সীমার মধ্যে হওয়া উচিত ( ShipmentModel.global_start_time এবং ShipmentModel.global_end_time দেখুন) এবং সম্মান করা উচিত:

  0 <= `start_time` <= `soft_start_time` <= `end_time` and
  0 <= `start_time` <= `soft_end_time` <= `end_time`.
ক্ষেত্র
start_time

Timestamp

হার্ড টাইম উইন্ডো শুরু করার সময়। যদি অনির্ধারিত হয় তবে এটি ShipmentModel.global_start_time সেট করা হবে।

end_time

Timestamp

হার্ড টাইম উইন্ডো শেষ সময়। যদি অনির্ধারিত হয় তবে এটি ShipmentModel.global_end_time সেট করা হবে।

soft_start_time

Timestamp

সময় উইন্ডোর নরম শুরুর সময়।

soft_end_time

Timestamp

সময় উইন্ডোর নরম শেষ সময়।

cost_per_hour_before_soft_start_time

double

মডেলটিতে অন্যান্য ব্যয়গুলিতে প্রতি ঘন্টা ব্যয় যুক্ত করা হয় যদি ইভেন্টটি সফট_স্টার্ট_টাইমের আগে ঘটে থাকে তবে গণনা করা হয়:

   max(0, soft_start_time - t.seconds)
                          * cost_per_hour_before_soft_start_time / 3600,
t being the time of the event.

এই ব্যয়টি অবশ্যই ইতিবাচক হতে হবে এবং সফট_স্টার্ট_টাইম সেট করা থাকলে ক্ষেত্রটি কেবল সেট করা যেতে পারে।

cost_per_hour_after_soft_end_time

double

মডেলটিতে অন্যান্য ব্যয়গুলিতে প্রতি ঘন্টা ব্যয় যুক্ত করা হয় যদি ইভেন্টটি soft_end_time পরে ঘটে থাকে, হিসাবে গণনা করা হয়:

   max(0, t.seconds - soft_end_time.seconds)
                    * cost_per_hour_after_soft_end_time / 3600,
t being the time of the event.

এই ব্যয়টি অবশ্যই ইতিবাচক হতে হবে এবং ক্ষেত্রটি কেবল তখনই সেট করা যেতে পারে যদি soft_end_time সেট করা থাকে।

ট্রানজিশনঅ্যাট্রিবিউটস

কোনও রুটে টানা দুটি পরিদর্শনগুলির মধ্যে ট্রানজিশনের বৈশিষ্ট্যগুলি নির্দিষ্ট করে। বেশ কয়েকটি TransitionAttributes একই রূপান্তরটিতে প্রযোজ্য হতে পারে: সেক্ষেত্রে সমস্ত অতিরিক্ত ব্যয় যুক্ত হয় এবং কঠোর সীমাবদ্ধতা বা সীমাবদ্ধতা প্রযোজ্য (প্রাকৃতিক "এবং" শব্দার্থবিজ্ঞান অনুসরণ করে) প্রযোজ্য।

ক্ষেত্র
src_tag

string

এই বৈশিষ্ট্যগুলি প্রযোজ্য (src-> ডিএসটি) ট্রানজিশনের সেট সংজ্ঞায়িত ট্যাগগুলি।

একটি উত্স ভিজিট বা যানবাহন শুরু হয় যদি তার VisitRequest.tags বা Vehicle.start_tags হয় src_tag থাকে বা excluded_src_tag থাকে না (এই দুটি ক্ষেত্রের মধ্যে কোনটি খালি খালি রয়েছে তার উপর নির্ভর করে)।

excluded_src_tag

string

src_tag দেখুন। ঠিক একটি src_tag এবং excluded_src_tag মধ্যে একটি অবশ্যই খালি হতে হবে।

dst_tag

string

একটি গন্তব্য পরিদর্শন বা যানবাহন শেষের সাথে মেলে যদি এটি VisitRequest.tags বা Vehicle.end_tags হয় dst_tag থাকে বা excluded_dst_tag থাকে না (এই দুটি ক্ষেত্রের মধ্যে কোনটি খালি খালি রয়েছে তার উপর নির্ভর করে)।

excluded_dst_tag

string

dst_tag দেখুন। ঠিক dst_tag এর একটি এবং excluded_dst_tag অবশ্যই খালি খালি হতে হবে।

cost

double

এই রূপান্তর সম্পাদনের জন্য একটি ব্যয় নির্দিষ্ট করে। এটি মডেলের অন্যান্য সমস্ত ব্যয়ের মতো একই ইউনিটে রয়েছে এবং এটি নেতিবাচক হতে হবে না। এটি অন্যান্য সমস্ত বিদ্যমান ব্যয়ের শীর্ষে প্রয়োগ করা হয়।

cost_per_kilometer

double

এই রূপান্তরটি সম্পাদন করার সময় ভ্রমণ করা দূরত্বে প্রয়োগ করা প্রতি কিলোমিটারের জন্য একটি ব্যয় নির্দিষ্ট করে। এটি যে কোনও Vehicle.cost_per_kilometer যুক্ত করে ost

distance_limit

DistanceLimit

এই রূপান্তরটি সম্পাদন করার সময় ভ্রমণ করা দূরত্বের একটি সীমা নির্দিষ্ট করে।

2021/06 হিসাবে, কেবল নরম সীমা সমর্থিত।

delay

Duration

এই রূপান্তরটি সম্পাদন করার সময় ব্যয় করা একটি বিলম্ব নির্দিষ্ট করে।

এই বিলম্বটি সর্বদা উত্স ভিজিট শেষ করার পরে এবং গন্তব্য দর্শন শুরু করার আগে ঘটে।

যানবাহন

চালানের সমস্যায় একটি যানবাহন মডেল। একটি চালানের সমস্যা সমাধান করা এই যানবাহনের জন্য start_location থেকে শুরু করে একটি রুট তৈরি করবে end_location একটি রুট ভিজিটের ক্রম ( ShipmentRoute দেখুন)।

ক্ষেত্র
display_name

string

গাড়ির ব্যবহারকারী-সংজ্ঞায়িত ডিসপ্লে নাম। এটি 63 টি অক্ষর দীর্ঘ হতে পারে এবং ইউটিএফ -8 অক্ষর ব্যবহার করতে পারে।

travel_mode

TravelMode

ভ্রমণ মোড যা যানবাহন এবং এর গতি দ্বারা ব্যবহারযোগ্য রাস্তাগুলিকে প্রভাবিত করে। travel_duration_multiple দেখুন।

start_location

LatLng

ভৌগলিক অবস্থান যেখানে কোনও চালান বাছাইয়ের আগে যানবাহন শুরু হয়। যদি নির্দিষ্ট না করা হয় তবে গাড়িটি তার প্রথম পিকআপে শুরু হয়। যদি চালানের মডেলটির সময়কাল এবং দূরত্বের ম্যাট্রিক থাকে তবে start_location অবশ্যই নির্দিষ্ট করা উচিত নয়।

start_waypoint

Waypoint

কোনও ভৌগলিক অবস্থানের প্রতিনিধিত্ব করে যেখানে কোনও চালান বাছাইয়ের আগে যানবাহন শুরু হয় এমন একটি ভৌগলিক অবস্থানের প্রতিনিধিত্ব করে। যদি start_waypoint বা start_location নির্দিষ্ট না করা হয় তবে গাড়িটি তার প্রথম পিকআপ থেকে শুরু হয়। যদি চালানের মডেলটির সময়কাল এবং দূরত্বের ম্যাট্রিক থাকে তবে start_waypoint নির্দিষ্ট করা উচিত নয়।

end_location

LatLng

ভৌগলিক অবস্থান যেখানে যানটি VisitRequest পরে শেষ হওয়ার পরে শেষ হয়। যদি নির্দিষ্ট না করা হয় তবে গাড়ির ShipmentRoute শেষ যখন এটি তার শেষ VisitRequest সম্পূর্ণ করে তখন অবিলম্বে শেষ হয়। যদি চালানের মডেলটির সময়কাল এবং দূরত্বের ম্যাট্রিক থাকে তবে end_location অবশ্যই নির্দিষ্ট করা উচিত নয়।

end_waypoint

Waypoint

ওয়ে পয়েন্টটি এমন একটি ভৌগলিক অবস্থানের প্রতিনিধিত্ব করে যেখানে গাড়িটি তার শেষ VisitRequest শেষ করার পরে শেষ হয়। যদি end_waypoint বা end_location নির্দিষ্ট না করা হয় তবে গাড়ির ShipmentRoute তার শেষ VisitRequest সম্পূর্ণ করার সাথে সাথেই শেষ হয়। যদি চালানের মডেলটির সময়কাল এবং দূরত্বের ম্যাট্রিক থাকে তবে end_waypoint নির্দিষ্ট করা উচিত নয়।

start_tags[]

string

গাড়ির রুটের শুরুতে সংযুক্ত ট্যাগগুলি নির্দিষ্ট করে।

খালি বা সদৃশ স্ট্রিং অনুমোদিত নয়।

end_tags[]

string

গাড়ির রুটের শেষের সাথে সংযুক্ত ট্যাগগুলি নির্দিষ্ট করে।

খালি বা সদৃশ স্ট্রিং অনুমোদিত নয়।

start_time_windows[]

TimeWindow

সময় উইন্ডোজ যার সময় যানবাহনটি তার শুরু করার অবস্থানটি ছেড়ে যেতে পারে। এগুলি অবশ্যই বিশ্বব্যাপী সময়সীমার মধ্যে থাকতে হবে ( ShipmentModel.global_* ক্ষেত্রগুলি দেখুন)। যদি অনির্ধারিত হয় তবে সেই বিশ্বব্যাপী সময়সীমা ছাড়াও কোনও সীমাবদ্ধতা নেই।

একই পুনরাবৃত্তি ক্ষেত্রের সাথে সম্পর্কিত টাইম উইন্ডোজগুলি অবশ্যই বিরক্ত হতে হবে, অর্থাত্ কোনও সময় উইন্ডো অন্যটির সাথে বা অন্য সংলগ্ন হতে পারে না এবং সেগুলি অবশ্যই কালানুক্রমিক ক্রমে থাকতে হবে।

cost_per_hour_after_soft_end_time এবং soft_end_time কেবল তখনই সেট করা যেতে পারে যদি কোনও একক সময় উইন্ডো থাকে।

end_time_windows[]

TimeWindow

সময় উইন্ডোজ যার সময় যানবাহনটি তার শেষ স্থানে আসতে পারে। এগুলি অবশ্যই বিশ্বব্যাপী সময়সীমার মধ্যে থাকতে হবে ( ShipmentModel.global_* ক্ষেত্রগুলি দেখুন)। যদি অনির্ধারিত হয় তবে সেই বিশ্বব্যাপী সময়সীমা ছাড়াও কোনও সীমাবদ্ধতা নেই।

একই পুনরাবৃত্তি ক্ষেত্রের সাথে সম্পর্কিত টাইম উইন্ডোজগুলি অবশ্যই বিরক্ত হতে হবে, অর্থাত্ কোনও সময় উইন্ডো অন্যটির সাথে বা অন্য সংলগ্ন হতে পারে না এবং সেগুলি অবশ্যই কালানুক্রমিক ক্রমে থাকতে হবে।

cost_per_hour_after_soft_end_time এবং soft_end_time কেবল তখনই সেট করা যেতে পারে যদি কোনও একক সময় উইন্ডো থাকে।

unloading_policy

UnloadingPolicy

যানবাহনে প্রয়োগ করা নীতি আনলোডিং।

load_limits

map<string, LoadLimit >

গাড়ির সক্ষমতা (ওজন, ভলিউম, # উদাহরণস্বরূপ প্যালেটগুলির #)। মানচিত্রের কীগুলি হ'ল লোডের ধরণের শনাক্তকারী, Shipment.load_demands কীগুলির সাথে সামঞ্জস্যপূর্ণ Load লোড_ডেম্যান্ডস ক্ষেত্র। যদি কোনও প্রদত্ত কী এই মানচিত্র থেকে অনুপস্থিত থাকে তবে সংশ্লিষ্ট ক্ষমতাটি সীমাহীন হিসাবে বিবেচিত হয়।

cost_per_hour

double

যানবাহন ব্যয়: সমস্ত ব্যয় যুক্ত হয় এবং অবশ্যই Shipment.penalty_cost মতো একই ইউনিটে থাকতে হবে en

গাড়ির রুটের প্রতি ঘন্টা ব্যয়। This cost is applied to the total time taken by the route, and includes travel time, waiting time, and visit time. Using cost_per_hour instead of just cost_per_traveled_hour may result in additional latency.

cost_per_traveled_hour

double

Cost per traveled hour of the vehicle route. This cost is applied only to travel time taken by the route (ie, that reported in ShipmentRoute.transitions ), and excludes waiting time and visit time.

cost_per_kilometer

double

Cost per kilometer of the vehicle route. This cost is applied to the distance reported in the ShipmentRoute.transitions and does not apply to any distance implicitly traveled from the arrival_location to the departure_location of a single VisitRequest .

fixed_cost

double

Fixed cost applied if this vehicle is used to handle a shipment.

used_if_route_is_empty

bool

This field only applies to vehicles when their route does not serve any shipments. It indicates if the vehicle should be considered as used or not in this case.

If true, the vehicle goes from its start to its end location even if it doesn't serve any shipments, and time and distance costs resulting from its start --> end travel are taken into account.

Otherwise, it doesn't travel from its start to its end location, and no break_rule or delay (from TransitionAttributes ) are scheduled for this vehicle. In this case, the vehicle's ShipmentRoute doesn't contain any information except for the vehicle index and label.

route_duration_limit

DurationLimit

Limit applied to the total duration of the vehicle's route. In a given OptimizeToursResponse , the route duration of a vehicle is the difference between its vehicle_end_time and vehicle_start_time .

travel_duration_limit

DurationLimit

Limit applied to the travel duration of the vehicle's route. In a given OptimizeToursResponse , the route travel duration is the sum of all its transitions.travel_duration .

route_distance_limit

DistanceLimit

Limit applied to the total distance of the vehicle's route. In a given OptimizeToursResponse , the route distance is the sum of all its transitions.travel_distance_meters .

extra_visit_duration_for_visit_type

map<string, Duration >

Specifies a map from visit_types strings to durations. The duration is time in addition to VisitRequest.duration to be taken at visits with the specified visit_types . This extra visit duration adds cost if cost_per_hour is specified. Keys (ie visit_types ) cannot be empty strings.

If a visit request has multiple types, a duration will be added for each type in the map.

break_rule

BreakRule

Describes the break schedule to be enforced on this vehicle. If empty, no breaks will be scheduled for this vehicle.

label

string

Specifies a label for this vehicle. This label is reported in the response as the vehicle_label of the corresponding ShipmentRoute .

ignore

bool

If true, used_if_route_is_empty must be false, and this vehicle will remain unused.

If a shipment is performed by an ignored vehicle in injected_first_solution_routes , it is skipped in the first solution but is free to be performed in the response.

If a shipment is performed by an ignored vehicle in injected_solution_constraint and any related pickup/delivery is constrained to remain on the vehicle (ie, not relaxed to level RELAX_ALL_AFTER_THRESHOLD ), it is skipped in the response. If a shipment has a non-empty allowed_vehicle_indices field and all of the allowed vehicles are ignored, it is skipped in the response.

travel_duration_multiple

double

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 cost_per_hour or cost_per_traveled_hour are specified. This must be in the range [0.001, 1000.0]. If unset, the vehicle is standard, and this multiple is considered 1.0.

WARNING: Travel times will be rounded to the nearest second after this multiple is applied but before performing any numerical operations, thus, a small multiple may result in a loss of precision.

See also extra_visit_duration_for_visit_type below.

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.

ক্ষেত্র
max_duration

Duration

A hard limit constraining the duration to be at most max_duration.

soft_max_duration

Duration

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, soft_max_duration must be nonnegative. If max_duration is also defined, soft_max_duration must be less than max_duration.

quadratic_soft_max_duration

Duration

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, quadratic_soft_max_duration must be nonnegative. If max_duration is also defined, quadratic_soft_max_duration must be less than max_duration , and the difference must be no larger than one day:

max_duration - quadratic_soft_max_duration <= 86400 seconds

cost_per_hour_after_soft_max

double

Cost per hour incurred if the soft_max_duration threshold is violated. The additional cost is 0 if the duration is under the threshold, otherwise the cost depends on the duration as follows:

  cost_per_hour_after_soft_max * (duration - soft_max_duration)

The cost must be nonnegative.

cost_per_square_hour_after_quadratic_soft_max

double

Cost per square hour incurred if the quadratic_soft_max_duration threshold is violated.

The additional cost is 0 if the duration is under the threshold, otherwise the cost depends on the duration as follows:

  cost_per_square_hour_after_quadratic_soft_max *
  (duration - quadratic_soft_max_duration)^2

The cost must be nonnegative.

LoadLimit

Defines a load limit applying to a vehicle, eg "this truck may only carry up to 3500 kg". See load_limits .

ক্ষেত্র
soft_max_load

int64

A soft limit of the load. See cost_per_unit_above_soft_max .

cost_per_unit_above_soft_max

double

If the load ever exceeds soft_max_load along this vehicle's route, the following cost penalty applies (only once per vehicle): (load - soft_max_load ) * cost_per_unit_above_soft_max . All costs add up and must be in the same unit as Shipment.penalty_cost .

start_load_interval

Interval

The acceptable load interval of the vehicle at the start of the route.

end_load_interval

Interval

The acceptable load interval of the vehicle at the end of the route.

max_load

int64

The maximum acceptable amount of load.

ব্যবধান

Interval of acceptable load amounts.

ক্ষেত্র
min

int64

A minimum acceptable load. Must be ≥ 0. If they're both specified, min must be ≤ max .

max

int64

A maximum acceptable load. Must be ≥ 0. If unspecified, the maximum load is unrestricted by this message. If they're both specified, min must be ≤ max .

ট্রাভেলমোড

Travel modes which can be used by vehicles.

These should be a subset of the Google Maps Platform Routes Preferred API travel modes, see: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode .

Enums
TRAVEL_MODE_UNSPECIFIED Unspecified travel mode, equivalent to DRIVING .
DRIVING Travel mode corresponding to driving directions (car, ...).
WALKING Travel mode corresponding to walking directions.

UnloadingPolicy

Policy on how a vehicle can be unloaded. Applies only to shipments having both a pickup and a delivery.

Other shipments are free to occur anywhere on the route independent of unloading_policy .

Enums
UNLOADING_POLICY_UNSPECIFIED Unspecified unloading policy; deliveries must just occur after their corresponding pickups.
LAST_IN_FIRST_OUT Deliveries must occur in reverse order of pickups
FIRST_IN_FIRST_OUT Deliveries must occur in the same order as pickups

ওয়েপয়েন্ট

একটি ওয়েপয়েন্ট এনক্যাপসুলেট করে। Waypoints mark arrival and departure locations of VisitRequests, and start and end locations of Vehicles.

ক্ষেত্র
side_of_road

bool

ঐচ্ছিক। ইঙ্গিত করে যে এই ওয়েপয়েন্টের অবস্থানটি রাস্তার একটি নির্দিষ্ট পাশে গাড়ি থামানোর জন্য একটি পছন্দকে বোঝানো হয়েছে৷ আপনি যখন এই মানটি সেট করবেন, তখন রুটটি লোকেশনের মধ্য দিয়ে যাবে যাতে গাড়িটি রাস্তার পাশে থামতে পারে যে অবস্থানটি রাস্তার মাঝখানের দিকে পক্ষপাতদুষ্ট। This option doesn't work for the 'WALKING' travel mode.

ইউনিয়ন ক্ষেত্রের location_type । একটি অবস্থানের প্রতিনিধিত্ব করার বিভিন্ন উপায়। location_type নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
location

Location

একটি ঐচ্ছিক শিরোনাম সহ ভৌগলিক স্থানাঙ্ক ব্যবহার করে নির্দিষ্ট করা একটি বিন্দু৷

place_id

string

ওয়েপয়েন্টের সাথে যুক্ত POI প্লেস আইডি।