ShipmentModel

একটি চালান মডেলে চালানের একটি সেট থাকে যা যানবাহনের একটি সেট দ্বারা সঞ্চালিত হতে হবে, সামগ্রিক খরচ কমিয়ে, যার সমষ্টি:

  • যানবাহন রুট করার খরচ (মোট সময় প্রতি খরচের যোগফল, ভ্রমণের সময় প্রতি খরচ, এবং সমস্ত যানবাহনের উপর নির্দিষ্ট খরচ)।
  • অকার্যকর চালান জরিমানা.
  • চালানের বিশ্বব্যাপী সময়কালের খরচ
JSON প্রতিনিধিত্ব
{
  "shipments": [
    {
      object (Shipment)
    }
  ],
  "vehicles": [
    {
      object (Vehicle)
    }
  ],
  "globalStartTime": string,
  "globalEndTime": string,
  "globalDurationCostPerHour": number,
  "durationDistanceMatrices": [
    {
      object (DurationDistanceMatrix)
    }
  ],
  "durationDistanceMatrixSrcTags": [
    string
  ],
  "durationDistanceMatrixDstTags": [
    string
  ],
  "transitionAttributes": [
    {
      object (TransitionAttributes)
    }
  ],
  "shipmentTypeIncompatibilities": [
    {
      object (ShipmentTypeIncompatibility)
    }
  ],
  "shipmentTypeRequirements": [
    {
      object (ShipmentTypeRequirement)
    }
  ],
  "precedenceRules": [
    {
      object (PrecedenceRule)
    }
  ],
  "maxActiveVehicles": integer
}
ক্ষেত্র
shipments[]

object ( Shipment )

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

vehicles[]

object ( Vehicle )

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

globalStartTime

string ( Timestamp format)

মডেলের বিশ্বব্যাপী শুরু এবং শেষ সময়: এই পরিসরের বাইরে কোনো সময় বৈধ বলে বিবেচিত হবে না৷

মডেলের সময়কাল অবশ্যই এক বছরের কম হতে হবে, অর্থাৎ globalEndTime এবং globalStartTime একে অপরের থেকে 31536000 সেকেন্ডের মধ্যে হতে হবে।

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

RFC3339 UTC "জুলু" ফর্ম্যাটে একটি টাইমস্ট্যাম্প, ন্যানোসেকেন্ড রেজোলিউশন এবং নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা। উদাহরণ: "2014-10-02T15:01:23Z" এবং "2014-10-02T15:01:23.045123456Z"

globalEndTime

string ( Timestamp format)

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

RFC3339 UTC "জুলু" ফর্ম্যাটে একটি টাইমস্ট্যাম্প, ন্যানোসেকেন্ড রেজোলিউশন এবং নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা। উদাহরণ: "2014-10-02T15:01:23Z" এবং "2014-10-02T15:01:23.045123456Z"

globalDurationCostPerHour

number

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

durationDistanceMatrices[]

object ( DurationDistanceMatrix )

মডেলে ব্যবহৃত সময়কাল এবং দূরত্ব ম্যাট্রিক্স নির্দিষ্ট করে। যদি এই ক্ষেত্রটি খালি থাকে, তবে Google মানচিত্র বা জিওডেসিক দূরত্ব ব্যবহার করা হবে, useGeodesicDistances ফিল্ডের মানের উপর নির্ভর করে। এটি খালি না হলে, useGeodesicDistances সত্য হতে পারে না এবং durationDistanceMatrixSrcTags বা durationDistanceMatrixDstTags খালি হতে পারে না।

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

  • দুটি অবস্থান আছে: locA এবং locB।
  • 1টি গাড়ি locA তে তার রুট শুরু করে এবং locA এ শেষ করে৷
  • locB এ 1 পিকআপ ভিজিট অনুরোধ।
model {
  vehicles { startTags: "locA"  endTags: "locA" }
  shipments { pickups { tags: "locB" } }
  durationDistanceMatrixSrcTags: "locA"
  durationDistanceMatrixSrcTags: "locB"
  durationDistanceMatrixDstTags: "locA"
  durationDistanceMatrixDstTags: "locB"
  durationDistanceMatrices {
    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
    }
  }
}
  • তিনটি অবস্থান আছে: locA, locB এবং locC।
  • ম্যাট্রিক্স "দ্রুত" ব্যবহার করে 1টি গাড়ি locA-তে তার রুট শুরু করে এবং locB-এ শেষ করে।
  • ম্যাট্রিক্স "স্লো" ব্যবহার করে 1টি গাড়ি locB-তে তার রুট শুরু করে এবং locB-এ শেষ করে।
  • ম্যাট্রিক্স "দ্রুত" ব্যবহার করে 1টি গাড়ি locB-তে তার রুট শুরু করে এবং locB-এ শেষ করে।
  • locC এ 1 পিকআপ ভিজিট করার অনুরোধ।
model {
  vehicles { startTags: "locA" endTags: "locB" startTags: "fast" }
  vehicles { startTags: "locB" endTags: "locB" startTags: "slow" }
  vehicles { startTags: "locB" endTags: "locB" startTags: "fast" }
  shipments { pickups { tags: "locC" } }
  durationDistanceMatrixSrcTags: "locA"
  durationDistanceMatrixSrcTags: "locB"
  durationDistanceMatrixSrcTags: "locC"
  durationDistanceMatrixDstTags: "locB"
  durationDistanceMatrixDstTags: "locC"
  durationDistanceMatrices {
    vehicleStartTag: "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
    }
  }
  durationDistanceMatrices {
    vehicleStartTag: "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
    }
  }
}
durationDistanceMatrixSrcTags[]

string

ট্যাগগুলি সময়কাল এবং দূরত্ব ম্যাট্রিক্সের উত্স সংজ্ঞায়িত করে; durationDistanceMatrices(i).rows(j) ট্যাগ durationDistanceMatrixSrcTags(j) সহ ম্যাট্রিক্স i-তে অন্যান্য ভিজিট পর্যন্ত সময়কাল এবং দূরত্ব নির্ধারণ করে।

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

durationDistanceMatrixDstTags[]

string

সময়কাল এবং দূরত্ব ম্যাট্রিক্সের গন্তব্য সংজ্ঞায়িত ট্যাগ; durationDistanceMatrices(i).rows(j).durations(k) (resp. durationDistanceMatrices(i).rows(j).meters(k)) ট্যাগ durationDistanceMatrixSrcTags(j) সহ পরিদর্শন থেকে ভ্রমণের সময়কাল (অনুশীলন দূরত্ব) সংজ্ঞায়িত করে durationDistanceMatrixSrcTags(j) ম্যাট্রিক্সে ট্যাগ durationDistanceMatrixDstTags(k) সহ ভিজিট করতে i.

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

transitionAttributes[]

object ( TransitionAttributes )

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

shipmentTypeIncompatibilities[]

object ( ShipmentTypeIncompatibility )

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

shipmentTypeRequirements[]

object ( ShipmentTypeRequirement )

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

precedenceRules[]

object ( PrecedenceRule )

অগ্রাধিকার বিধিগুলির সেট যা মডেলে প্রয়োগ করা আবশ্যক৷

maxActiveVehicles

integer

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

জাহাজে প্রেরিত কাজ

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

JSON প্রতিনিধিত্ব
{
  "displayName": string,
  "pickups": [
    {
      object (VisitRequest)
    }
  ],
  "deliveries": [
    {
      object (VisitRequest)
    }
  ],
  "loadDemands": {
    string: {
      object (Load)
    },
    ...
  },
  "allowedVehicleIndices": [
    integer
  ],
  "costsPerVehicle": [
    number
  ],
  "costsPerVehicleIndices": [
    integer
  ],
  "pickupToDeliveryAbsoluteDetourLimit": string,
  "pickupToDeliveryTimeLimit": string,
  "shipmentType": string,
  "label": string,
  "ignore": boolean,
  "penaltyCost": number,
  "pickupToDeliveryRelativeDetourLimit": number
}
ক্ষেত্র
displayName

string

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

pickups[]

object ( VisitRequest )

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

deliveries[]

object ( VisitRequest )

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

loadDemands

map (key: string, value: object ( Load ))

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

"key": value জোড়া। উদাহরণ: { "name": "wrench", "mass": "1.3kg", "count": "3" }

allowedVehicleIndices[]

integer

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

costsPerVehicle[]

number

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

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

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

costsPerVehicleIndices[]

integer

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

pickupToDeliveryAbsoluteDetourLimit

string ( Duration format)

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

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

startTime(delivery) - startTime(pickup) <=
t + pickupToDeliveryAbsoluteDetourLimit

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

নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা সহ সেকেন্ডে একটি সময়কাল, ' s ' দিয়ে শেষ হয়৷ উদাহরণ: "3.5s"

pickupToDeliveryTimeLimit

string ( Duration format)

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

নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা সহ সেকেন্ডে একটি সময়কাল, ' s ' দিয়ে শেষ হয়৷ উদাহরণ: "3.5s"

shipmentType

string

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

visitTypes থেকে আলাদা যা একটি একক ভিজিটের জন্য নির্দিষ্ট করা হয়েছে: একই চালানের সাথে সম্পর্কিত সমস্ত পিকআপ/ডেলিভারি একই shipmentType শেয়ার করে।

label

string

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

ignore

boolean

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

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

একটি চালান উপেক্ষা করা যা injectedFirstSolutionRoutes বা injectedSolutionConstraint এ সম্পাদিত হয় অনুমোদিত; সমাধানকারী পারফর্মিং রুট থেকে সম্পর্কিত পিকআপ/ডেলিভারি ভিজিটগুলি সরিয়ে দেয়। precedenceRules যে উল্লেখ উপেক্ষা করা চালানগুলিকেও উপেক্ষা করা হবে৷

penaltyCost

number

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

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

pickupToDeliveryRelativeDetourLimit

number

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

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

startTime(delivery) - startTime(pickup) <=
std::ceil(t * (1.0 + pickupToDeliveryRelativeDetourLimit))

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

ভিজিট রিকোয়েস্ট

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

JSON প্রতিনিধিত্ব
{
  "arrivalLocation": {
    object (LatLng)
  },
  "arrivalWaypoint": {
    object (Waypoint)
  },
  "departureLocation": {
    object (LatLng)
  },
  "departureWaypoint": {
    object (Waypoint)
  },
  "tags": [
    string
  ],
  "timeWindows": [
    {
      object (TimeWindow)
    }
  ],
  "duration": string,
  "cost": number,
  "loadDemands": {
    string: {
      object (Load)
    },
    ...
  },
  "visitTypes": [
    string
  ],
  "label": string
}
ক্ষেত্র
arrivalLocation

object ( LatLng )

এই VisitRequest সম্পাদন করার সময় গাড়িটি যেখানে আসে সেই ভৌগলিক অবস্থান। চালান মডেলের সময়কাল দূরত্ব ম্যাট্রিক্স থাকলে, arrivalLocation নির্দিষ্ট করা উচিত নয়।

arrivalWaypoint

object ( Waypoint )

এই VisitRequest সম্পাদন করার সময় গাড়িটি যে ওয়েপয়েন্টে আসে। চালান মডেলের সময়কাল দূরত্ব ম্যাট্রিক্স থাকলে, arrivalWaypoint অবশ্যই নির্দিষ্ট করা যাবে না।

departureLocation

object ( LatLng )

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

departureWaypoint

object ( Waypoint )

এই VisitRequest সম্পূর্ণ করার পর গাড়িটি যে ওয়েপয়েন্টে চলে যায়। বাদ দেওয়া যেতে পারে যদি এটি arrivalWaypoint এর মতো হয়। শিপমেন্ট মডেলের সময়কাল দূরত্ব ম্যাট্রিক্স থাকলে, departureWaypoint অবশ্যই নির্দিষ্ট করা যাবে না।

tags[]

string

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

timeWindows[]

object ( TimeWindow )

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

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

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

costPerHourAfterSoftEndTime এবং softEndTime শুধুমাত্র একটি একক সময় উইন্ডো থাকলে সেট করা যেতে পারে।

duration

string ( Duration format)

পরিদর্শনের সময়কাল, অর্থাৎ আগমন এবং প্রস্থানের মধ্যে গাড়ির দ্বারা ব্যয় করা সময় (সম্ভাব্য অপেক্ষার সময় যোগ করতে হবে; timeWindows দেখুন উইন্ডোজ)।

নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা সহ সেকেন্ডে একটি সময়কাল, ' s ' দিয়ে শেষ হয়৷ উদাহরণ: "3.5s"

cost

number

একটি যানবাহন রুটে এই পরিদর্শন অনুরোধ পরিষেবার খরচ. এটি প্রতিটি বিকল্প পিকআপ বা চালানের ডেলিভারির জন্য বিভিন্ন খরচ দিতে ব্যবহার করা যেতে পারে। এই খরচ Shipment.penalty_cost হিসাবে একই ইউনিটে হতে হবে এবং ঋণাত্মক হতে হবে না।

loadDemands

map (key: string, value: object ( Load ))

এই ভিজিট অনুরোধ লোড চাহিদা. এটি Shipment.load_demands ফিল্ডের মতই, এটি সম্পূর্ণ Shipment পরিবর্তে শুধুমাত্র এই VisitRequest এ প্রযোজ্য। এখানে তালিকাভুক্ত চাহিদাগুলি Shipment.load_demands এ তালিকাভুক্ত চাহিদাগুলির সাথে যোগ করা হয়েছে।

"key": value জোড়া। উদাহরণ: { "name": "wrench", "mass": "1.3kg", "count": "3" }

visitTypes[]

string

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

একটি প্রকার শুধুমাত্র একবার প্রদর্শিত হতে পারে।

label

string

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

LatLng

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

JSON প্রতিনিধিত্ব
{
  "latitude": number,
  "longitude": number
}
ক্ষেত্র
latitude

number

ডিগ্রী অক্ষাংশ. এটি অবশ্যই [-90.0, +90.0] এর মধ্যে হতে হবে।

longitude

number

ডিগ্রী দ্রাঘিমাংশ. এটি অবশ্যই [-180.0, +180.0] পরিসরে হতে হবে।

ওয়েপয়েন্ট

একটি ওয়েপয়েন্ট এনক্যাপসুলেট করে। ওয়েপয়েন্টগুলি ভিজিট রিকোয়েস্টের আগমন এবং প্রস্থানের অবস্থানগুলি এবং যানবাহনের শুরু এবং শেষের অবস্থানগুলি চিহ্নিত করে৷

JSON প্রতিনিধিত্ব
{
  "sideOfRoad": boolean,

  // Union field location_type can be only one of the following:
  "location": {
    object (Location)
  },
  "placeId": string
  // End of list of possible types for union field location_type.
}
ক্ষেত্র
sideOfRoad

boolean

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

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

object ( Location )

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

placeId

string

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

অবস্থান

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

JSON প্রতিনিধিত্ব
{
  "latLng": {
    object (LatLng)
  },
  "heading": integer
}
ক্ষেত্র
latLng

object ( LatLng )

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

heading

integer

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

টাইম উইন্ডো

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

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

  0 <= `startTime` <= `softStartTime` <= `endTime` and
  0 <= `startTime` <= `softEndTime` <= `endTime`.
JSON প্রতিনিধিত্ব
{
  "startTime": string,
  "endTime": string,
  "softStartTime": string,
  "softEndTime": string,
  "costPerHourBeforeSoftStartTime": number,
  "costPerHourAfterSoftEndTime": number
}
ক্ষেত্র
startTime

string ( Timestamp format)

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

RFC3339 UTC "জুলু" ফর্ম্যাটে একটি টাইমস্ট্যাম্প, ন্যানোসেকেন্ড রেজোলিউশন এবং নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা। উদাহরণ: "2014-10-02T15:01:23Z" এবং "2014-10-02T15:01:23.045123456Z"

endTime

string ( Timestamp format)

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

RFC3339 UTC "জুলু" ফর্ম্যাটে একটি টাইমস্ট্যাম্প, ন্যানোসেকেন্ড রেজোলিউশন এবং নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা। উদাহরণ: "2014-10-02T15:01:23Z" এবং "2014-10-02T15:01:23.045123456Z"

softStartTime

string ( Timestamp format)

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

RFC3339 UTC "জুলু" ফর্ম্যাটে একটি টাইমস্ট্যাম্প, ন্যানোসেকেন্ড রেজোলিউশন এবং নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা। উদাহরণ: "2014-10-02T15:01:23Z" এবং "2014-10-02T15:01:23.045123456Z"

softEndTime

string ( Timestamp format)

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

RFC3339 UTC "জুলু" ফর্ম্যাটে একটি টাইমস্ট্যাম্প, ন্যানোসেকেন্ড রেজোলিউশন এবং নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা। উদাহরণ: "2014-10-02T15:01:23Z" এবং "2014-10-02T15:01:23.045123456Z"

costPerHourBeforeSoftStartTime

number

সফ্টস্টার্টটাইমের আগে ইভেন্টটি ঘটলে মডেলের অন্যান্য খরচের সাথে প্রতি ঘন্টায় একটি খরচ যোগ করা হয়, এই হিসাবে গণনা করা হয়:

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

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

costPerHourAfterSoftEndTime

number

softEndTime এর পরে ইভেন্টটি ঘটলে মডেলের অন্যান্য খরচের সাথে প্রতি ঘন্টায় একটি খরচ যোগ করা হয়, এইভাবে গণনা করা হয়:

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

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

যানবাহন

একটি চালানের সমস্যায় একটি গাড়িকে মডেল করে। একটি চালানের সমস্যা সমাধান করা এই গাড়ির জন্য startLocation থেকে শুরু করে endLocation এ শেষ হওয়া একটি রুট তৈরি করবে। একটি রুট হল পরিদর্শনের একটি ক্রম ( ShipmentRoute দেখুন)।

JSON প্রতিনিধিত্ব
{
  "displayName": string,
  "travelMode": enum (TravelMode),
  "startLocation": {
    object (LatLng)
  },
  "startWaypoint": {
    object (Waypoint)
  },
  "endLocation": {
    object (LatLng)
  },
  "endWaypoint": {
    object (Waypoint)
  },
  "startTags": [
    string
  ],
  "endTags": [
    string
  ],
  "startTimeWindows": [
    {
      object (TimeWindow)
    }
  ],
  "endTimeWindows": [
    {
      object (TimeWindow)
    }
  ],
  "unloadingPolicy": enum (UnloadingPolicy),
  "loadLimits": {
    string: {
      object (LoadLimit)
    },
    ...
  },
  "costPerHour": number,
  "costPerTraveledHour": number,
  "costPerKilometer": number,
  "fixedCost": number,
  "usedIfRouteIsEmpty": boolean,
  "routeDurationLimit": {
    object (DurationLimit)
  },
  "travelDurationLimit": {
    object (DurationLimit)
  },
  "routeDistanceLimit": {
    object (DistanceLimit)
  },
  "extraVisitDurationForVisitType": {
    string: string,
    ...
  },
  "breakRule": {
    object (BreakRule)
  },
  "label": string,
  "ignore": boolean,
  "travelDurationMultiple": number
}
ক্ষেত্র
displayName

string

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

travelMode

enum ( TravelMode )

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

startLocation

object ( LatLng )

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

startWaypoint

object ( Waypoint )

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

endLocation

object ( LatLng )

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

endWaypoint

object ( Waypoint )

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

startTags[]

string

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

খালি বা ডুপ্লিকেট স্ট্রিং অনুমোদিত নয়।

endTags[]

string

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

খালি বা ডুপ্লিকেট স্ট্রিং অনুমোদিত নয়।

startTimeWindows[]

object ( TimeWindow )

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

একই পুনরাবৃত্ত ক্ষেত্রের অন্তর্গত টাইম উইন্ডোগুলি অবশ্যই বিচ্ছিন্ন হতে হবে, অর্থাৎ কোনও টাইম উইন্ডো অন্যটির সাথে ওভারল্যাপ বা সংলগ্ন হতে পারে না এবং সেগুলি অবশ্যই কালানুক্রমিক ক্রমে হতে হবে৷

costPerHourAfterSoftEndTime এবং softEndTime শুধুমাত্র একটি একক সময় উইন্ডো থাকলে সেট করা যেতে পারে।

endTimeWindows[]

object ( TimeWindow )

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

একই পুনরাবৃত্ত ক্ষেত্রের অন্তর্গত টাইম উইন্ডোগুলি অবশ্যই বিচ্ছিন্ন হতে হবে, অর্থাৎ কোনও টাইম উইন্ডো অন্যটির সাথে ওভারল্যাপ বা সংলগ্ন হতে পারে না এবং সেগুলি অবশ্যই কালানুক্রমিক ক্রমে হতে হবে৷

costPerHourAfterSoftEndTime এবং softEndTime শুধুমাত্র একটি একক সময় উইন্ডো থাকলে সেট করা যেতে পারে।

unloadingPolicy

enum ( UnloadingPolicy )

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

loadLimits

map (key: string, value: object ( LoadLimit ))

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

"key": value জোড়া। উদাহরণ: { "name": "wrench", "mass": "1.3kg", "count": "3" }

costPerHour

number

যানবাহনের খরচ: সমস্ত খরচ যোগ করা হবে এবং Shipment.penalty_cost হিসাবে একই ইউনিটে হতে হবে।

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

costPerTraveledHour

number

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

costPerKilometer

number

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

fixedCost

number

এই গাড়িটি চালান পরিচালনার জন্য ব্যবহার করা হলে নির্দিষ্ট খরচ প্রযোজ্য।

usedIfRouteIsEmpty

boolean

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

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

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

routeDurationLimit

object ( DurationLimit )

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

travelDurationLimit

object ( DurationLimit )

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

routeDistanceLimit

object ( DistanceLimit )

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

extraVisitDurationForVisitType

map (key: string, value: string ( Duration format))

visitTypes স্ট্রিং থেকে সময়কাল পর্যন্ত একটি মানচিত্র নির্দিষ্ট করে। সময়কাল হল VisitRequest.duration ছাড়াও নির্দিষ্ট visitTypes সহ ভিজিট করার সময়। এই অতিরিক্ত ভিজিট সময়কাল খরচ যোগ করে যদি costPerHour নির্দিষ্ট করা হয়। কী (যেমন visitTypes ) খালি স্ট্রিং হতে পারে না।

ভিজিট রিকোয়েস্টের একাধিক প্রকার থাকলে ম্যাপে প্রতিটি ধরনের জন্য একটি সময়কাল যোগ করা হবে।

"key": value জোড়া। উদাহরণ: { "name": "wrench", "mass": "1.3kg", "count": "3" }

breakRule

object ( BreakRule )

এই গাড়ির উপর প্রয়োগ করা বিরতির সময়সূচী বর্ণনা করে। খালি থাকলে, এই গাড়ির জন্য কোন বিরতি নির্ধারিত হবে না।

label

string

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

ignore

boolean

সত্য হলে, usedIfRouteIsEmpty অবশ্যই মিথ্যা হতে হবে এবং এই গাড়িটি অব্যবহৃত থাকবে।

যদি injectedFirstSolutionRoutes এ একটি উপেক্ষা করা যানবাহন দ্বারা একটি চালান সঞ্চালিত হয়, তবে এটি প্রথম সমাধানে এড়িয়ে যায় তবে প্রতিক্রিয়াতে এটি বিনামূল্যে সম্পাদন করা যায়।

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

travelDurationMultiple

number

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

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

এছাড়াও নিচে extraVisitDurationForVisitType দেখুন।

ট্রাভেলমোড

যানবাহন দ্বারা ব্যবহার করা যেতে পারে যা ভ্রমণ মোড.

এগুলি Google মানচিত্র প্ল্যাটফর্ম রুট পছন্দের API ভ্রমণ মোডগুলির একটি উপসেট হওয়া উচিত, দেখুন: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode

Enums
TRAVEL_MODE_UNSPECIFIED অনির্দিষ্ট ভ্রমণ মোড, DRIVING এর সমতুল্য।
DRIVING ড্রাইভিং দিকনির্দেশের সাথে সম্পর্কিত ভ্রমণ মোড (গাড়ি, ...)।
WALKING হাঁটার দিকনির্দেশের সাথে সম্পর্কিত ভ্রমণ মোড।

আনলোডিং নীতি

একটি যানবাহন কিভাবে আনলোড করা যেতে পারে তার নীতি। শুধুমাত্র একটি পিকআপ এবং একটি ডেলিভারি উভয়ই চালানের ক্ষেত্রে প্রযোজ্য৷

অন্যান্য চালানগুলি unloadingPolicy ব্যতীত রুটের যে কোনও জায়গায় বিনামূল্যে হতে পারে৷

Enums
UNLOADING_POLICY_UNSPECIFIED অনির্দিষ্ট আনলোডিং নীতি; ডেলিভারি শুধুমাত্র তাদের সংশ্লিষ্ট পিক আপ পরে ঘটতে হবে.
LAST_IN_FIRST_OUT ডেলিভারি পিকআপের বিপরীত ক্রমে ঘটতে হবে
FIRST_IN_FIRST_OUT ডেলিভারি পিকআপের মতো একই ক্রমে ঘটতে হবে

লোডসীমা

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

JSON প্রতিনিধিত্ব
{
  "softMaxLoad": string,
  "costPerUnitAboveSoftMax": number,
  "startLoadInterval": {
    object (Interval)
  },
  "endLoadInterval": {
    object (Interval)
  },
  "maxLoad": string
}
ক্ষেত্র
softMaxLoad

string ( int64 format)

লোড একটি নরম সীমা. costPerUnitAboveSoftMax দেখুন।

costPerUnitAboveSoftMax

number

যদি এই গাড়ির রুটে লোড কখনও softMaxLoad অতিক্রম করে, তাহলে নিম্নলিখিত খরচ জরিমানা প্রযোজ্য হবে (শুধুমাত্র গাড়ি প্রতি একবার): (লোড - softMaxLoad ) * costPerUnitAboveSoftMax । সমস্ত খরচ যোগ করা হবে এবং Shipment.penalty_cost হিসাবে একই ইউনিটে হতে হবে।

startLoadInterval

object ( Interval )

রুটের শুরুতে গাড়ির গ্রহণযোগ্য লোডের ব্যবধান।

endLoadInterval

object ( Interval )

রুটের শেষে গাড়ির গ্রহণযোগ্য লোডের ব্যবধান।

maxLoad

string ( int64 format)

লোড সর্বোচ্চ গ্রহণযোগ্য পরিমাণ.

অন্তর

গ্রহণযোগ্য লোড পরিমাণের ব্যবধান।

JSON প্রতিনিধিত্ব
{
  "min": string,
  "max": string
}
ক্ষেত্র
min

string ( int64 format)

একটি সর্বনিম্ন গ্রহণযোগ্য লোড. ≥ 0 হতে হবে। যদি তারা উভয়ই নির্দিষ্ট করে থাকে, min হতে হবে ≤ max

max

string ( int64 format)

একটি সর্বোচ্চ গ্রহণযোগ্য লোড. ≥ 0 হতে হবে। অনির্দিষ্ট থাকলে, এই বার্তা দ্বারা সর্বাধিক লোড সীমাবদ্ধ নয়। যদি তারা উভয়ই নির্দিষ্ট করে থাকে, min হতে হবে ≤ max

সময়সীমা

একটি গাড়ির রুটের সর্বাধিক সময়কাল সংজ্ঞায়িত একটি সীমা৷ এটা শক্ত বা নরম হতে পারে।

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

JSON প্রতিনিধিত্ব
{
  "maxDuration": string,
  "softMaxDuration": string,
  "quadraticSoftMaxDuration": string,
  "costPerHourAfterSoftMax": number,
  "costPerSquareHourAfterQuadraticSoftMax": number
}
ক্ষেত্র
maxDuration

string ( Duration format)

একটি কঠিন সীমা যা সময়কালকে সর্বোচ্চ সর্বোচ্চ সময়সীমা হতে বাধা দেয়।

নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা সহ সেকেন্ডে একটি সময়কাল, ' s ' দিয়ে শেষ হয়৷ উদাহরণ: "3.5s"

softMaxDuration

string ( Duration format)

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

যদি সংজ্ঞায়িত করা হয়, softMaxDuration অবশ্যই nonnegative হতে হবে। যদি maxDurationও সংজ্ঞায়িত করা হয়, softMaxDuration অবশ্যই maxDuration থেকে কম হতে হবে।

নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা সহ সেকেন্ডে একটি সময়কাল, ' s ' দিয়ে শেষ হয়৷ উদাহরণ: "3.5s"

quadraticSoftMaxDuration

string ( Duration format)

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

যদি সংজ্ঞায়িত করা হয়, quadraticSoftMaxDuration অবশ্যই নেতিবাচক হতে হবে। যদি maxDuration ও সংজ্ঞায়িত করা হয়, quadraticSoftMaxDuration অবশ্যই maxDuration থেকে কম হতে হবে এবং পার্থক্যটি অবশ্যই একদিনের বেশি হবে না:

maxDuration - quadraticSoftMaxDuration <= 86400 seconds

নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা সহ সেকেন্ডে একটি সময়কাল, ' s ' দিয়ে শেষ হয়৷ উদাহরণ: "3.5s"

costPerHourAfterSoftMax

number

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

  costPerHourAfterSoftMax * (duration - softMaxDuration)

খরচ nonnegative হতে হবে.

costPerSquareHourAfterQuadraticSoftMax

number

quadraticSoftMaxDuration থ্রেশহোল্ড লঙ্ঘন করা হলে প্রতি বর্গ ঘন্টা খরচ।

অতিরিক্ত খরচ হল 0 যদি সময়কাল থ্রেশহোল্ডের নিচে থাকে, অন্যথায় খরচ নিম্নরূপ সময়কালের উপর নির্ভর করে:

  costPerSquareHourAfterQuadraticSoftMax *
  (duration - quadraticSoftMaxDuration)^2

খরচ nonnegative হতে হবে.

দূরত্বসীমা

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

যদি একটি সফ্ট সীমা সংজ্ঞায়িত করা হয়, তাহলে softMaxMeters এবং costPerKilometerAboveSoftMax উভয়কেই সংজ্ঞায়িত করতে হবে এবং নেতিবাচক হতে হবে।

JSON প্রতিনিধিত্ব
{
  "maxMeters": string,
  "softMaxMeters": string,
  "costPerKilometerAboveSoftMax": number
}
ক্ষেত্র
maxMeters

string ( int64 format)

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

softMaxMeters

string ( int64 format)

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

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

costPerKilometerAboveSoftMax

number

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

  (distanceMeters - softMaxMeters) / 1000.0 *
  costPerKilometerAboveSoftMax.

খরচ nonnegative হতে হবে.

BreakRule

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

  • দুটি ভিজিটের মধ্যে ভ্রমণের সময় (যার মধ্যে একটি ভিজিটের আগে বা ঠিক পরে সময় থাকে, তবে ভিজিটের মাঝখানে নয়), এই ক্ষেত্রে এটি ভিজিটের মধ্যে সংশ্লিষ্ট ট্রানজিট সময়কে প্রসারিত করে,
  • বা যানবাহন শুরু হওয়ার আগে (একটি বিরতির মাঝখানে যানবাহন শুরু নাও হতে পারে), এই ক্ষেত্রে এটি গাড়ির শুরুর সময়কে প্রভাবিত করে না।
  • বা যানবাহন শেষ হওয়ার পরে (এভাবে, গাড়ির শেষ সময় সহ)।
JSON প্রতিনিধিত্ব
{
  "breakRequests": [
    {
      object (BreakRequest)
    }
  ],
  "frequencyConstraints": [
    {
      object (FrequencyConstraint)
    }
  ]
}
ক্ষেত্র
breakRequests[]

object ( BreakRequest )

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

frequencyConstraints[]

object ( FrequencyConstraint )

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

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

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

JSON প্রতিনিধিত্ব
{
  "earliestStartTime": string,
  "latestStartTime": string,
  "minDuration": string
}
ক্ষেত্র
earliestStartTime

string ( Timestamp format)

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

RFC3339 UTC "জুলু" ফর্ম্যাটে একটি টাইমস্ট্যাম্প, ন্যানোসেকেন্ড রেজোলিউশন এবং নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা। উদাহরণ: "2014-10-02T15:01:23Z" এবং "2014-10-02T15:01:23.045123456Z"

latestStartTime

string ( Timestamp format)

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

RFC3339 UTC "জুলু" ফর্ম্যাটে একটি টাইমস্ট্যাম্প, ন্যানোসেকেন্ড রেজোলিউশন এবং নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা। উদাহরণ: "2014-10-02T15:01:23Z" এবং "2014-10-02T15:01:23.045123456Z"

minDuration

string ( Duration format)

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

নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা সহ সেকেন্ডে একটি সময়কাল, ' s ' দিয়ে শেষ হয়৷ উদাহরণ: "3.5s"

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

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

{
   minBreakDuration { seconds: 3600 }         # 1 hour.
   maxInterBreakDuration { 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
JSON প্রতিনিধিত্ব
{
  "minBreakDuration": string,
  "maxInterBreakDuration": string
}
ক্ষেত্র
minBreakDuration

string ( Duration format)

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

নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা সহ সেকেন্ডে একটি সময়কাল, ' s ' দিয়ে শেষ হয়৷ উদাহরণ: "3.5s"

maxInterBreakDuration

string ( Duration format)

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

' s ' দিয়ে শেষ হওয়া নয়টি ভগ্নাংশের সংখ্যা সহ সেকেন্ডে একটি সময়কাল। উদাহরণ: "3.5s"

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

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

JSON প্রতিনিধিত্ব
{
  "rows": [
    {
      object (Row)
    }
  ],
  "vehicleStartTag": string
}
ক্ষেত্র
rows[]

object ( Row )

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

vehicleStartTag

string

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

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

সমস্ত ম্যাট্রিক্সের অবশ্যই একটি পৃথক vehicleStartTag অবশ্যই থাকতে হবে।

সারি

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

JSON প্রতিনিধিত্ব
{
  "durations": [
    string
  ],
  "meters": [
    number
  ]
}
ক্ষেত্র
durations[]

string ( Duration format)

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

' s ' দিয়ে শেষ হওয়া নয়টি ভগ্নাংশের সংখ্যা সহ সেকেন্ডে একটি সময়কাল। উদাহরণ: "3.5s"

meters[]

number

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

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

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

JSON প্রতিনিধিত্ব
{
  "srcTag": string,
  "excludedSrcTag": string,
  "dstTag": string,
  "excludedDstTag": string,
  "cost": number,
  "costPerKilometer": number,
  "distanceLimit": {
    object (DistanceLimit)
  },
  "delay": string
}
ক্ষেত্র
srcTag

string

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

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

excludedSrcTag

string

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

dstTag

string

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

excludedDstTag

string

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

cost

number

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

costPerKilometer

number

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

distanceLimit

object ( DistanceLimit )

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

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

delay

string ( Duration format)

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

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

' s ' দিয়ে শেষ হওয়া নয়টি ভগ্নাংশের সংখ্যা সহ সেকেন্ডে একটি সময়কাল। উদাহরণ: "3.5s"

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

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

JSON প্রতিনিধিত্ব
{
  "types": [
    string
  ],
  "incompatibilityMode": enum (IncompatibilityMode)
}
ক্ষেত্র
types[]

string

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

incompatibilityMode

enum ( IncompatibilityMode )

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

অসঙ্গতিমোড

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

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

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

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

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

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

JSON প্রতিনিধিত্ব
{
  "requiredShipmentTypeAlternatives": [
    string
  ],
  "dependentShipmentTypes": [
    string
  ],
  "requirementMode": enum (RequirementMode)
}
ক্ষেত্র
requiredShipmentTypeAlternatives[]

string

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

dependentShipmentTypes[]

string

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

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

requirementMode

enum ( 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 আগের মতোই, "নির্ভরশীল" চালানের ব্যতীত তাদের সরবরাহের সময় তাদের গাড়ীতে একটি "প্রয়োজনীয়" চালান থাকা দরকার।

পূর্ববর্তী

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

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

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

JSON প্রতিনিধিত্ব
{
  "firstIsDelivery": boolean,
  "secondIsDelivery": boolean,
  "offsetDuration": string,
  "firstIndex": integer,
  "secondIndex": integer
}
ক্ষেত্র
firstIsDelivery

boolean

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

secondIsDelivery

boolean

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

offsetDuration

string ( Duration format)

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

' s ' দিয়ে শেষ হওয়া নয়টি ভগ্নাংশের সংখ্যা সহ সেকেন্ডে একটি সময়কাল। উদাহরণ: "3.5s"

firstIndex

integer

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

secondIndex

integer

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