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 ক্ষেত্রগুলি সম্বলিত একটি OptimizeToursResponse প্রদান করে, যা সামগ্রিক খরচ কমিয়ে যানবাহনের দ্বারা সঞ্চালিত রুটের একটি সেট।

ব্যবহারকারী ভোট operations.get করতে পারেন।

যদি LRO done ক্ষেত্রটি মিথ্যা হয়, তাহলে অন্তত একটি অনুরোধ এখনও প্রক্রিয়া করা হচ্ছে। অন্যান্য অনুরোধগুলি সফলভাবে সম্পন্ন হতে পারে এবং তাদের ফলাফল ক্লাউড স্টোরেজে উপলব্ধ।

যদি LRO এর done ক্ষেত্রটি সত্য হয়, তাহলে সমস্ত অনুরোধ প্রক্রিয়া করা হয়েছে। যেকোনো সফলভাবে প্রক্রিয়াকৃত অনুরোধের ফলাফল ক্লাউড স্টোরেজে পাওয়া যাবে। ব্যর্থ হওয়া যেকোনো অনুরোধের ফলাফল ক্লাউড স্টোরেজে পাওয়া যাবে না। যদি LRO এর error ক্ষেত্রটি সেট করা থাকে, তাহলে এতে ব্যর্থ অনুরোধগুলির একটি থেকে ত্রুটি রয়েছে৷

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

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

  • https://www.googleapis.com/auth/cloud-platform
আইএএম অনুমতি

parent রিসোর্সে নিম্নলিখিত IAM অনুমতির প্রয়োজন:

  • routeoptimization.operations.create

আরও তথ্যের জন্য, IAM ডকুমেন্টেশন দেখুন।

অপটিমাইজ ট্যুরস

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
আইএএম অনুমতি

parent রিসোর্সে নিম্নলিখিত IAM অনুমতির প্রয়োজন:

  • routeoptimization.locations.use

আরও তথ্যের জন্য, IAM ডকুমেন্টেশন দেখুন।

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

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_below_soft_max

double

প্রতি কিলোমিটার খরচ, সূত্র সহ soft_max_meters পর্যন্ত বৃদ্ধি পাচ্ছে:

  min(distance_meters, soft_max_meters) / 1000.0 *
  cost_per_kilometer_below_soft_max.

এই খরচ route_distance_limit সমর্থিত নয়।

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 , Transition.travel_duration Visit.start_time এবং vehicle_end_time ; 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 মডেলটি সমাধান করুন। [OptimizeToursResponse.validation_errors][google.cloud.optimization.v1.OptimizeToursResponse.validation_errors]-এ সতর্কতা জারি করা হতে পারে।
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 বার্তাটির জন্য "একাধিক ত্রুটি" ব্যাখ্যাটি দেখুন৷ ত্রুটির পরিবর্তে, এটি DEFAULT_SOLVE হল solving_mode ক্ষেত্রে সতর্কতা অন্তর্ভুক্ত করবে।

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 ) জোড়া দেওয়ার জন্য একটি প্রদত্ত (অবৈধ) অনুরোধের কারণ হতে পারে কারণ নতুন ত্রুটিটি পুরানোটিকে লুকিয়ে রেখেছে৷ উদাহরণস্বরূপ, "একাধিক ত্রুটি" দেখুন।

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 ক্লাউড স্টোরেজ অবস্থান।

রুট মডিফায়ার

যানবাহনের রুট গণনা করার সময় সন্তুষ্ট করার জন্য ঐচ্ছিক অবস্থার একটি সেট এনক্যাপসুলেট করে। এটি Google Maps Platform Routes Preferred API-এর RouteModifiers এর মতোই; দেখুন: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers

ক্ষেত্র
avoid_tolls

bool

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

avoid_highways

bool

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

avoid_ferries

bool

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

avoid_indoor

bool

ঐচ্ছিক। যুক্তিসঙ্গত হলে বাড়ির ভিতরে নেভিগেট করা এড়াতে হবে কিনা তা নির্দিষ্ট করে৷ ইনডোর নেভিগেশন নেই এমন রুটগুলিতে অগ্রাধিকার দেওয়া হবে। শুধুমাত্র WALKING ট্রাভেল মোডে প্রযোজ্য।

চালান

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

ক্ষেত্র
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 Shipment.load_demands মতো 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

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

শিপমেন্ট রুট

একটি যানবাহনের রুট সময় অক্ষ বরাবর পচনশীল হতে পারে, এভাবে (আমরা অনুমান করি সেখানে n ভিজিট আছে):

  |            |            |          |       |  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

মনে রাখবেন যে আমরা এর মধ্যে পার্থক্য করি:

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

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

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

জুম ইন, একটি 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

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

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

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

                               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] হল রুটের 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

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

route_costs

map<string, double>

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

route_total_cost

double

রুটের মোট খরচ। খরচ ম্যাপে সমস্ত খরচের যোগফল।

বিরতি

একটি বিরতির সম্পাদন প্রতিনিধিত্বকারী ডেটা।

ক্ষেত্র
start_time

Timestamp

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

duration

Duration

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

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

একটি পলিলাইনের এনকোড করা উপস্থাপনা। পলিলাইন এনকোডিং সম্পর্কে আরও তথ্য এখানে পাওয়া যাবে: https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/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 সত্যে সেট করা থাকে।

route_token

string

শুধুমাত্র আউটপুট। একটি অস্বচ্ছ টোকেন যা নেভিগেশনের সময় রুটটি পুনর্গঠন করতে নেভিগেশন SDK- তে পাস করা যেতে পারে এবং, পুনরায় রুট করার ক্ষেত্রে, রুটটি তৈরি করার সময় আসল উদ্দেশ্যকে সম্মান করে। এই টোকেনটিকে একটি অস্বচ্ছ ব্লব হিসাবে বিবেচনা করুন। অনুরোধ জুড়ে এর মান তুলনা করবেন না কারণ পরিষেবাটি ঠিক একই রুট ফিরিয়ে দিলেও এর মান পরিবর্তিত হতে পারে। এই ক্ষেত্রটি কেবল তখনই পপুলেটেড হয় যদি 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 (এই ক্ষেত্রটি দেখুন) হিসাবে একই ধরণের জন্য চাহিদাগুলি রিপোর্ট করা হয়।

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` <= `end_time` and
  0 <= `start_time` <= `soft_start_time` and
  0 <= `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

distance_limit

DistanceLimit

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

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

delay

Duration

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

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

যানবাহন

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

ক্ষেত্র
display_name

string

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

travel_mode

TravelMode

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

route_modifiers

RouteModifiers

সন্তুষ্ট করার জন্য শর্তগুলির একটি সেট যা প্রদত্ত যানবাহনের জন্য রুটগুলি গণনা করা হয় তা প্রভাবিত করে।

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 ক্ষেত্র। যদি কোনও প্রদত্ত কী এই মানচিত্র থেকে অনুপস্থিত থাকে তবে সংশ্লিষ্ট ক্ষমতাটি সীমাহীন হিসাবে বিবেচিত হয়।

cost_per_hour

double

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

গাড়ির রুটের প্রতি ঘন্টা ব্যয়। এই ব্যয়টি রুটের দ্বারা নেওয়া মোট সময়ের জন্য প্রয়োগ করা হয় এবং এতে ভ্রমণের সময়, অপেক্ষার সময় এবং দেখার সময় অন্তর্ভুক্ত থাকে। কেবল cost_per_traveled_hour এর পরিবর্তে cost_per_hour ব্যবহার করার ফলে অতিরিক্ত বিলম্ব হতে পারে।

cost_per_traveled_hour

double

গাড়ির রুটের ভ্রমণ ঘন্টা প্রতি ব্যয়। এই ব্যয়টি কেবল রুট দ্বারা গৃহীত ভ্রমণের সময় প্রয়োগ করা হয় (অর্থাত্ ShipmentRoute.transitions রিপোর্ট করা হয়েছে), এবং অপেক্ষার সময় এবং দেখার সময় বাদ দেয়।

cost_per_kilometer

double

গাড়ির রুটের প্রতি কিলোমিটার খরচ। এই ব্যয়টি ShipmentRoute.transitions রিপোর্ট করা দূরত্বের জন্য প্রয়োগ করা হয় এবং ট্রান্সিশনগুলিতে এবং কোনও একক VisitRequest departure_location arrival_location থেকে স্পষ্টভাবে ভ্রমণ করা কোনও দূরত্বে প্রযোজ্য নয়।

fixed_cost

double

যদি এই যানবাহন চালান পরিচালনা করতে ব্যবহৃত হয় তবে স্থির ব্যয় প্রয়োগ করা হয়।

used_if_route_is_empty

bool

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

যদি সত্য হয় তবে গাড়িটি তার শুরু থেকে শেষ স্থানে চলে যায় এমনকি যদি এটি কোনও চালান সরবরাহ না করে এবং সময় এবং দূরত্বের ব্যয় শুরু হওয়ার ফলে -> শেষ ভ্রমণকে বিবেচনায় নেওয়া হয়।

অন্যথায়, এটি তার শুরু থেকে শেষ স্থানে ভ্রমণ করে না, এবং এই গাড়ির জন্য কোনও break_rule বা বিলম্ব ( TransitionAttributes থেকে) নির্ধারিত নেই। এই ক্ষেত্রে, গাড়ির ShipmentRoute যানবাহন সূচক এবং লেবেল ব্যতীত কোনও তথ্য নেই।

route_duration_limit

DurationLimit

সীমাটি গাড়ির রুটের মোট সময়কাল প্রয়োগ করে। প্রদত্ত OptimizeToursResponse , কোনও গাড়ির রুটের সময়কাল হ'ল তার vehicle_end_time এবং vehicle_start_time মধ্যে পার্থক্য।

travel_duration_limit

DurationLimit

সীমাটি গাড়ির রুটের ভ্রমণের সময়কালে প্রয়োগ করা হয়। প্রদত্ত OptimizeToursResponse , রুট ভ্রমণের সময়কালটি তার সমস্ত transitions.travel_duration যোগফল।

route_distance_limit

DistanceLimit

সীমাটি গাড়ির রুটের মোট দূরত্বে প্রয়োগ করা হয়েছে। প্রদত্ত OptimizeToursResponse , রুটের দূরত্বটি তার সমস্ত transitions.travel_distance_meters যোগফল।

extra_visit_duration_for_visit_type

map<string, Duration >

ভিজিট_ টাইপস স্ট্রিং থেকে সময়সীমা পর্যন্ত একটি মানচিত্র নির্দিষ্ট করে। সময়কালটি VisitRequest.duration পাশাপাশি নির্দিষ্ট visit_types সাথে পরিদর্শন করার জন্য সময়টি। এই অতিরিক্ত ভিজিট সময়কাল cost_per_hour নির্দিষ্ট করা থাকলে ব্যয় যুক্ত করে। কীগুলি (অর্থাত্ visit_types ) খালি স্ট্রিং হতে পারে না।

যদি কোনও ভিজিট অনুরোধের একাধিক প্রকার থাকে তবে মানচিত্রে প্রতিটি ধরণের জন্য একটি সময়কাল যুক্ত করা হবে।

break_rule

BreakRule

এই গাড়িতে কার্যকর করার জন্য বিরতি শিডিউল বর্ণনা করে। যদি খালি হয় তবে এই গাড়ির জন্য কোনও বিরতি নির্ধারিত হবে না।

label

string

এই গাড়ির জন্য একটি লেবেল নির্দিষ্ট করে। এই লেবেলটি প্রতিক্রিয়াতে সম্পর্কিত ShipmentRoute vehicle_label হিসাবে রিপোর্ট করা হয়েছে।

ignore

bool

যদি সত্য হয় তবে used_if_route_is_empty অবশ্যই মিথ্যা হতে হবে এবং এই যানটি অব্যবহৃত থাকবে।

যদি কোনও চালানটি injected_first_solution_routes কোনও উপেক্ষা করা যানবাহন দ্বারা সঞ্চালিত হয় তবে এটি প্রথম সমাধানে এড়িয়ে যাওয়া হয় তবে প্রতিক্রিয়াতে সম্পাদন করা নিখরচায়।

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

travel_duration_multiple

double

এই গাড়ির ভ্রমণের সময় বাড়াতে বা হ্রাস করতে ব্যবহার করা যেতে পারে এমন একটি গুণক ফ্যাক্টর নির্দিষ্ট করে। উদাহরণস্বরূপ, এটি 2.0 এ সেট করার অর্থ এই যানটি ধীর এবং ভ্রমণের সময় রয়েছে যা তারা স্ট্যান্ডার্ড যানবাহনের জন্য দ্বিগুণ। এই একাধিক ভিজিট সময়কে প্রভাবিত করে না। এটি ব্যয়কে প্রভাবিত করে যদি cost_per_hour বা cost_per_traveled_hour নির্দিষ্ট করা থাকে। এটি অবশ্যই [0.001, 1000.0] এর মধ্যে থাকতে হবে। যদি আনসেট হয় তবে যানটি মানক এবং এই একাধিকটি 1.0 হিসাবে বিবেচিত হয়।

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

নীচে extra_visit_duration_for_visit_type টাইপও দেখুন।

সময়কাল limit

একটি যানবাহনের রুটের সর্বাধিক সময়কাল নির্ধারণের একটি সীমা। এটি শক্ত বা নরম হতে পারে।

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

ক্ষেত্র
max_duration

Duration

একটি হার্ড সীমা সর্বাধিক সর্বোচ্চ_করণের সময়কালকে সীমাবদ্ধ করে।

soft_max_duration

Duration

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

যদি সংজ্ঞায়িত করা হয় তবে soft_max_duration অবশ্যই অবিচ্ছিন্ন হতে হবে। যদি MAX_DURATION এছাড়াও সংজ্ঞায়িত করা হয় তবে soft_max_duration অবশ্যই সর্বোচ্চ_করণের চেয়ে কম হওয়া উচিত।

quadratic_soft_max_duration

Duration

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

যদি সংজ্ঞায়িত করা হয় তবে quadratic_soft_max_duration অবশ্যই অ -জ্ঞানমূলক হতে হবে। যদি max_duration এছাড়াও সংজ্ঞায়িত করা হয় তবে quadratic_soft_max_duration অবশ্যই max_duration চেয়ে কম হওয়া উচিত এবং পার্থক্যটি অবশ্যই এক দিনের চেয়ে বড় হতে হবে না:

max_duration - quadratic_soft_max_duration <= 86400 seconds

cost_per_hour_after_soft_max

double

soft_max_duration থ্রেশহোল্ড লঙ্ঘন করা হলে প্রতি ঘন্টা ব্যয় হয়। অতিরিক্ত ব্যয় 0 হয় যদি সময়কাল প্রান্তিকের অধীনে থাকে, অন্যথায় ব্যয়টি নিম্নরূপ সময়কালের উপর নির্ভর করে:

  cost_per_hour_after_soft_max * (duration - soft_max_duration)

ব্যয়টি অবশ্যই অবিচ্ছিন্ন হতে হবে।

cost_per_square_hour_after_quadratic_soft_max

double

quadratic_soft_max_duration থ্রেশহোল্ড লঙ্ঘন করা হলে প্রতি বর্গ ঘন্টা ব্যয় ব্যয় হয়।

অতিরিক্ত ব্যয় 0 হয় যদি সময়কাল প্রান্তিকের অধীনে থাকে, অন্যথায় ব্যয়টি নিম্নরূপ সময়কালের উপর নির্ভর করে:

  cost_per_square_hour_after_quadratic_soft_max *
  (duration - quadratic_soft_max_duration)^2

ব্যয়টি অবশ্যই অবিচ্ছিন্ন হতে হবে।

লোডলিমিট

কোনও যানবাহনে প্রয়োগ করার একটি লোড সীমা সংজ্ঞায়িত করে, যেমন "এই ট্রাকটি কেবল 3500 কেজি পর্যন্ত বহন করতে পারে"। load_limits দেখুন।

ক্ষেত্র
soft_max_load

int64

লোডের একটি নরম সীমা। 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 .

TravelMode

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

ওয়েপয়েন্ট

Encapsulates a waypoint. Waypoints mark arrival and departure locations of VisitRequests, and start and end locations of Vehicles.

ক্ষেত্র
side_of_road

bool

ঐচ্ছিক। Indicates that the location of this waypoint is meant to have a preference for the vehicle to stop at a particular side of road. When you set this value, the route will pass through the location so that the vehicle can stop at the side of road that the location is biased towards from the center of the road. This option doesn't work for the 'WALKING' travel mode.

Union field location_type . Different ways to represent a location. location_type can be only one of the following:
location

Location

A point specified using geographic coordinates, including an optional heading.

place_id

string

The POI Place ID associated with the waypoint.