- تمثيل JSON
- الشحن
- VisitRequest
- LatLng
- نقطة الطريق
- الموقع الجغرافي
- TimeWindow
- مركبة
- TravelMode
- UnloadingPolicy
- LoadLimit
- الفاصل
- DurationLimit
- DistanceLimit
- BreakRule
- BreakRequest
- FrequencyConstraint
- DurationDistanceMatrix
- الصف
- TransitionAttributes
- ShipmentTypeIncompatibility
- IncompatibilityMode
- ShipmentTypeRequirement
- RequirementMode
- PrecedenceRule
يحتوي نموذج الشحنة على مجموعة من الشحنات التي يجب إجراؤها بواسطة مجموعة من المركبات، مع تقليل التكلفة الإجمالية، وهي مجموع:
- تكلفة توجيه المركبات (مجموع التكلفة لكل الوقت الإجمالي والتكلفة لكل مدة الرحلة والتكلفة الثابتة على جميع المركبات).
- عقوبات الشحن غير المُنفَّذة.
- تكلفة المدة العالمية للشحنات
تمثيل JSON |
---|
{ "shipments": [ { object ( |
الحقول | |
---|---|
shipments[] |
مجموعة الشحنات التي يجب إجراؤها في النموذج |
vehicles[] |
مجموعة من المركبات التي يمكن استخدامها لإجراء الزيارات |
globalStartTime |
وقت البدء والانتهاء العام للنموذج: لا يمكن اعتبار الوقت خارج هذا النطاق صالحًا. يجب أن تكون الفترة الزمنية للنموذج أقل من سنة، أي يجب أن تكون الفترة الزمنية بين عند استخدام حقول طابع زمني بتنسيق RFC3339 حسب التوقيت العالمي المنسَّق (UTC) "زولو" بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
globalEndTime |
في حال ترك السياسة بدون ضبط، سيتم استخدام يوم 1 كانون الثاني (يناير) 1971 (أي الثواني: 31536000، nanos: 0) وفقًا بالتوقيت العالمي المنسّق (UTC) كإعداد تلقائي. طابع زمني بتنسيق RFC3339 حسب التوقيت العالمي المنسَّق (UTC) "زولو" بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
globalDurationCostPerHour |
"المدة الشاملة" من الخطة الإجمالية هو الفرق بين أقرب وقت بدء فعلي وآخر وقت انتهاء فعال لجميع المركبات. ويمكن للمستخدمين تحديد تكلفة في الساعة لهذه الكمية لمحاولة تحسين الأداء من أجل إكمال أقرب مهمة مثلاً. يجب أن تكون هذه التكلفة بالوحدة نفسها التي تستخدمها |
durationDistanceMatrices[] |
لتحديد مصفوفات المدة والمسافة المستخدمة في النموذج. إذا كان هذا الحقل فارغًا، سيتم استخدام "خرائط Google" أو المسافات الجيوديسية بدلاً من ذلك، استنادًا إلى قيمة الحقل أمثلة على استخدام هذه الكلمة في جملة:
|
durationDistanceMatrixSrcTags[] |
علامات تحدد مصادر مصفوفات المدة والمسافة تحدِّد تتوافق العلامات مع |
durationDistanceMatrixDstTags[] |
علامات تحدد وجهات مصفوفات المدة والمسافة تتوافق العلامات مع |
transitionAttributes[] |
تمت إضافة سمات النقل إلى النموذج. |
shipmentTypeIncompatibilities[] |
مجموعات أنواع الشحن غير المتوافقة (راجِع |
shipmentTypeRequirements[] |
مجموعات متطلبات |
precedenceRules[] |
مجموعة من قواعد الأسبقية التي يجب تطبيقها في النموذج. |
maxActiveVehicles |
تفرض قيودًا على الحد الأقصى لعدد المركبات النشطة. تكون المركبة نشطة إذا كان مسارها يتيح شحنة واحدة على الأقل. ويمكن استخدام ذلك للحد من عدد المسارات في حالة وجود سائقين أقل من المركبات في حالة وجود أسطول من المركبات غير متجانس. سيختار التحسين بعد ذلك أفضل مجموعة فرعية من المركبات لاستخدامها. يجب أن تكون إيجابيًا تمامًا. |
الشحن
شحن سلعة واحدة، من إحدى عمليات الاستلام إلى إحدى عمليات التسليم لكي يتم اعتبار الشحنة على أنّها نفذت، يجب أن يزور أي مركبة فريدة أحد مواقع الاستلام الخاصة بها (وتقليل السعة الاحتياطية وفقًا لذلك)، ثم زيارة أحد مواقع التسليم في وقت لاحق (وبالتالي إعادة زيادة السعة الاحتياطية وفقًا لذلك).
تمثيل JSON |
---|
{ "displayName": string, "pickups": [ { object ( |
الحقول | |
---|---|
displayName |
تشير هذه السمة إلى الاسم المعروض للشحن الذي يحدّده المستخدم. ويمكن أن يصل طوله إلى 63 حرفًا، ويمكن أن يستخدم أحرف UTF-8. |
pickups[] |
مجموعة بدائل الاستلام المرتبطة بالشحن في حال عدم تحديد قيمة السمة، لن تحتاج المركبة إلى زيارة الموقع الجغرافي المرتبط بعمليات التسليم. |
deliveries[] |
مجموعة بدائل التسليم المرتبطة بالشحن في حال عدم تحديده، لن تحتاج المركبة إلا إلى زيارة الموقع الجغرافي حيث سيتم الاستلام. |
loadDemands |
تحميل الطلبات من الشحنة (مثل الوزن والحجم وعدد المنصات النقّالة وغيرها) يجب أن تكون المفاتيح في الخريطة عبارة عن معرّفات تصف نوع التحميل المقابل، ومن الأفضل أن تشمل أيضًا الوحدات. على سبيل المثال: "weight_kg" و"volume_gallons" و"pallet_count" وما إلى ذلك. إذا لم يظهر مفتاح معيَّن على الخريطة، سيتم اعتبار التحميل المقابل فارغًا. عنصر يحتوي على قائمة بأزواج |
allowedVehicleIndices[] |
مجموعة المركبات التي يمكنها تنفيذ هذه الشحنة وإذا كانت فارغة، قد تتمكّن جميع المركبات من أدائها. يتم توفير المركبات من خلال الفهرس في قائمة " |
costsPerVehicle[] |
تحدد التكلفة التي يتم تكبدها عند تسليم هذه الشحنة من قبل كل مركبة. في حال تحديده، يجب أن يتضمن أيًّا مما يلي:
ويجب أن تكون هذه التكاليف في الوحدة نفسها مثل |
costsPerVehicleIndices[] |
مؤشرات المركبات التي تنطبق عليها السمة |
pickupToDeliveryAbsoluteDetourLimit |
تحدّد هذه السمة الحد الأقصى لوقت الانتقال المطلق مقارنةً بأقصر مسار بدءًا من استلام الطلب إلى التسليم. وفي حال تحديدها، يجب أن تكون قيمة غير سالبة، وأن تحتوي الشحنة على استلام الطلبات وتوصيلها على الأقل. على سبيل المثال، يجب ألا تكون أقصر وقت ممكن للانتقال مباشرةً من خيار الاستلام المحدّد إلى خيار التسليم المحدَّد. بعد ذلك، يفرض ضبط
في حال تحديد الحدود النسبية والمطلقة على الشحنة نفسها، يتم استخدام الحدّ الأكثر تقييدًا لكل زوج من المنتجات لاستلام الطلب أو توصيله. اعتبارًا من 2017/2010، لا تتوفّر الإحالات الناجحة إلا عندما لا تعتمد مُدد السفر على المركبات. مدة بالثواني مكونة من تسعة أرقام كسور كحد أقصى وتنتهي بالأرقام " |
pickupToDeliveryTimeLimit |
تحدّد المدة القصوى للمدة من بداية الاستلام إلى بداية تسليم الشحنة. وفي حال تحديدها، يجب أن تكون قيمة غير سالبة، وأن تحتوي الشحنة على استلام الطلبات وتوصيلها على الأقل. ولا تعتمد هذه الطريقة على البدائل التي يتم اختيارها لاستلام الطلبات وتوصيلها، ولا تعتمد على سرعة المركبة. يمكن تحديد ذلك جنبًا إلى جنب مع الحد الأقصى لقيود التحويل: سيراعي الحل كلتا المواصفتين. مدة بالثواني مكونة من تسعة أرقام كسور كحد أقصى وتنتهي بالأرقام " |
shipmentType |
سلسلة غير فارغة تحدد "النوع" لهذه الشحنة. يمكن استخدام هذه الميزة لتحديد حالات عدم التوافق أو المتطلبات بين تختلف عن قيمة |
label |
تحدّد هذه السمة تصنيفًا لهذه الشحنة. تم الإبلاغ عن هذا التصنيف في الرد في |
ignore |
إذا كانت القيمة هي "صحيح"، يمكنك تخطّي عملية الشحن هذه وعدم تطبيق سمة يؤدي تجاهل الشحنة إلى حدوث خطأ في عملية التحقّق عند توفّر أي يُسمح بتجاهل الشحنة التي يتم تنفيذها في |
penaltyCost |
وفي حال عدم اكتمال الشحنة، تُضاف هذه العقوبة إلى التكلفة الإجمالية للمسارات. تعتبر الشحنة مكتملة إذا تمت زيارة أحد بدائل الاستلام والتوصيل. يمكن التعبير عن التكلفة بنفس الوحدة المستخدمة في جميع الحقول الأخرى المتعلقة بالتكلفة في النموذج ويجب أن تكون موجبة. مهم: إذا لم يتم تحديد هذه العقوبة، فستُعتبر لانهائية، أي يجب أن تكتمل عملية الشحن. |
pickupToDeliveryRelativeDetourLimit |
تحدّد هذه السمة الحد الأقصى لمدة التنقّل النسبية مقارنةً بأقصر مسار بدءًا من استلام الطلب إلى التسليم. وفي حال تحديدها، يجب أن تكون قيمة غير سالبة، وأن تحتوي الشحنة على استلام الطلبات وتوصيلها على الأقل. على سبيل المثال، يجب ألا تكون أقصر وقت ممكن للانتقال مباشرةً من خيار الاستلام المحدّد إلى خيار التسليم المحدَّد. بعد ذلك، يفرض ضبط
في حال تحديد الحدود النسبية والمطلقة على الشحنة نفسها، يتم استخدام الحدّ الأكثر تقييدًا لكل زوج من المنتجات لاستلام الطلب أو توصيله. اعتبارًا من 2017/2010، لا تتوفّر الإحالات الناجحة إلا عندما لا تعتمد مُدد السفر على المركبات. |
VisitRequest
طلب زيارة يمكن إنجازها بمركبة
تمثيل JSON |
---|
{ "arrivalLocation": { object ( |
الحقول | |
---|---|
arrivalLocation |
تشير هذه السمة إلى الموقع الجغرافي الذي تصل إليه المركبة عند إجراء |
arrivalWaypoint |
نقطة الطريق التي تصل إليها المركبة عند إجراء |
departureLocation |
تشير هذه السمة إلى الموقع الجغرافي الذي تغادر فيه المركبة بعد إكمال |
departureWaypoint |
تمثّل هذه السمة نقطة الطريق التي تغادر فيها المركبة بعد إكمال |
tags[] |
تحدِّد هذه السياسة العلامات المرفقة بطلب الزيارة. لا يُسمح بالسلاسل الفارغة أو المكرّرة. |
timeWindows[] |
الفترات الزمنية التي تفرض قيودًا على وقت الوصول في الزيارة يُرجى العِلم أنّه قد تغادر مركبة خارج نطاق وقت الوصول، أي ليس من الضروري إدخال وقت الوصول والمدة داخل الإطار الزمني. يمكن أن يؤدي ذلك إلى "وقت الانتظار" إذا وصلت المركبة قبل يعني عدم توفّر يجب أن تكون الفترات الزمنية منفصلة، بمعنى ألا تتداخل أي فترة زمنية مع نافذة أخرى أو تكون بجانبها، ويجب أن تكون بترتيب متزايد. لا يمكن ضبط |
duration |
مدة الزيارة، أي الوقت الذي تقضيه بالمركبة بين الوصول والمغادرة (ستتم إضافتها إلى وقت الانتظار المحتمل، ويمكنك الاطّلاع على مدة بالثواني مكونة من تسعة أرقام كسور كحد أقصى وتنتهي بالأرقام " |
cost |
تكلفة خدمة طلب الزيارة هذا على مسار المركبة يمكن استخدام هذه الطريقة لدفع تكاليف مختلفة لكلّ عملية استلام أو تسليم بديلة لشحنة. يجب أن تكون هذه التكلفة في الوحدة نفسها التي تشملها السمة |
loadDemands |
تحميل طلبات طلب الزيارة هذا هذا الأمر تمامًا مثل حقل عنصر يحتوي على قائمة بأزواج |
visitTypes[] |
تحدّد هذه السمة أنواع الزيارة. ويمكن استخدام ذلك لتخصيص الوقت الإضافي اللازم لإتمام هذه الزيارة في مركبة (اطّلع على يمكن أن يظهر النوع مرة واحدة فقط. |
label |
تُحدِّد تصنيفًا لهذا |
LatLng
كائن يمثّل زوجًا من خط العرض/الطول ويتم التعبير عن ذلك في صورة زوج من الزوجين لتمثيل درجات الطول والعرض والدرجات. يجب أن يتوافق هذا العنصر مع معيار WGS84 ما لم يُذكر خلاف ذلك. يجب أن تكون القيم ضمن النطاقات التي تمت تسويتها.
تمثيل JSON |
---|
{ "latitude": number, "longitude": number } |
الحقول | |
---|---|
latitude |
خط العرض بالدرجات. يجب أن يكون في النطاق [ -90.0، +90.0]. |
longitude |
خط الطول بالدرجات. يجب أن يكون في النطاق [ -180.0، +180.0]. |
النقطة الوسيطة
يتم تغليف نقطة وسيطة. تشير نقاط الطرق إلى مواقع وصول ومغادرة طلبات الزيارات، ومواقع بدء المركبات ونهايتها.
تمثيل JSON |
---|
{ "sideOfRoad": boolean, // Union field |
الحقول | |
---|---|
sideOfRoad |
اختياريّ. يشير إلى أن موقع نقطة الطريق هذه يعني أن يكون لها تفضيل للمركبة لتوقف عند جانب معين من الطريق. عند تعيين هذه القيمة، يمر المسار عبر الموقع بحيث يمكن للمركبة التوقف في جانب الطريق الذي يتحيز الموقع نحوه من وسط الطريق. لا يصلح هذا الخيار لطريقة "التنزّه". وضع السفر. |
حقل الاتحاد location_type . الطرق المختلفة لتمثيل الموقع الجغرافي. يمكن أن يكون location_type واحدًا فقط مما يلي: |
|
location |
نقطة يتم تحديدها باستخدام الإحداثيات الجغرافية، بما في ذلك عنوان اختياري. |
placeId |
رقم تعريف مكان نقطة الاهتمام المرتبط بالنقطة الوسيطة. |
الموقع الجغرافي
يتم تضمين موقع جغرافي (نقطة جغرافية وعنوان اختياري).
تمثيل JSON |
---|
{
"latLng": {
object ( |
الحقول | |
---|---|
latLng |
الإحداثيات الجغرافية للنقطة الوسيطة. |
heading |
عنوان البوصلة المرتبط باتجاه تدفق حركة المرور. تُستخدَم هذه القيمة لتحديد جانب الطريق لاستخدامه في استلام الطلبات وتوصيلها. يمكن أن تتراوح قيم العناوين من 0 إلى 360، حيث يحدد 0 عنوانًا للشمال و90 عنوانًا للشرق المستحق، وما إلى ذلك. |
TimeWindow
تفرض الفترات الزمنية قيودًا على وقت الحدث، مثل وقت الوصول في إحدى الزيارات، أو وقت بدء مركبة معيّنة وانتهائها.
تفرض حدود الفترة الزمنية الصعبة، startTime
وendTime
، الموعد الأقدم والأخير للحدث، مثل startTime <= event_time <=
endTime
. يُعرب عن الحد الأدنى لفترة زمنية مبدئية، softStartTime
، عن تفضيله لوقوع الحدث في softStartTime
أو بعده من خلال تحمُّل تكلفة متناسبة مع المدة التي تسبق softStartTime بوقت وقوع الحدث. يُعرِّف الحد الأقصى لفترة زمنية مبدئية، softEndTime
، عن تفضيله لوقوع الحدث في softEndTime
أو قبله من خلال تحمُّل تكلفة متناسبة مع المدة بعد softEndTime
وقوع الحدث. يجب أن تقع الحدود الزمنية startTime
وendTime
وsoftStartTime
وsoftEndTime
ضمن الحدود الزمنية العالمية (يمكنك الاطّلاع على ShipmentModel.global_start_time
وShipmentModel.global_end_time
) ويجب الالتزام بما يلي:
0 <= `startTime` <= `softStartTime` <= `endTime` and
0 <= `startTime` <= `softEndTime` <= `endTime`.
تمثيل JSON |
---|
{ "startTime": string, "endTime": string, "softStartTime": string, "softEndTime": string, "costPerHourBeforeSoftStartTime": number, "costPerHourAfterSoftEndTime": number } |
الحقول | |
---|---|
startTime |
وقت بدء فترة الوقت الصعب. أمّا في حال عدم تحديده، فسيتم ضبطه على طابع زمني بتنسيق RFC3339 حسب التوقيت العالمي المنسَّق (UTC) "زولو" بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
endTime |
وقت انتهاء نافذة الوقت الصعب. أمّا في حال عدم تحديده، فسيتم ضبطه على طابع زمني بتنسيق RFC3339 حسب التوقيت العالمي المنسَّق (UTC) "زولو" بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
softStartTime |
تمثّل هذه السمة وقت البدء البسيط للإطار الزمني. طابع زمني بتنسيق RFC3339 حسب التوقيت العالمي المنسَّق (UTC) "زولو" بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
softEndTime |
وقت الانتهاء البسيط للنافذة الزمنية. طابع زمني بتنسيق RFC3339 حسب التوقيت العالمي المنسَّق (UTC) "زولو" بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
costPerHourBeforeSoftStartTime |
التكلفة في الساعة المُضافة إلى التكاليف الأخرى في النموذج في حال وقوع الحدث قبل softStartTime، ويتم احتسابها على النحو التالي:
ويجب أن تكون هذه التكلفة موجبة، ولا يمكن ضبط الحقل إلا في حال ضبط سمة softStartTime. |
costPerHourAfterSoftEndTime |
تكلفة في الساعة مضافة إلى التكاليف الأخرى في النموذج إذا وقع الحدث بعد
ويجب أن تكون هذه التكلفة موجبة، ولا يمكن ضبط الحقل إلا في حال ضبط السمة |
مركبة
تصمم مركبة في مشكلة شحن. سيؤدي حلّ مشكلة الشحن إلى إنشاء مسار لهذه المركبة يبدأ من startLocation
وينتهي في endLocation
. المسار هو سلسلة من الزيارات (راجِع ShipmentRoute
).
تمثيل JSON |
---|
{ "displayName": string, "travelMode": enum ( |
الحقول | |
---|---|
displayName |
تمثّل هذه السمة الاسم المعروض للمركبة الذي يحدّده المستخدم. ويمكن أن يصل طوله إلى 63 حرفًا، ويمكن أن يستخدم أحرف UTF-8. |
travelMode |
وضع السفر الذي يؤثر على الطرق التي يمكن استخدامها للمركبة وسرعتها يمكنك الاطّلاع أيضًا على |
startLocation |
الموقع الجغرافي الذي تبدأ فيه المركبة قبل استلام أي شحنات وفي حال عدم تحديده، ستبدأ المركبة عند أول عملية نقل. إذا كان نموذج الشحن يتضمّن مصفوفات المدة والمسافة، يجب عدم تحديد السمة |
startWaypoint |
تمثّل هذه السمة موقعًا جغرافيًا تبدأ فيه المركبة قبل استلام أي شحنات. إذا لم يتم تحديد |
endLocation |
الموقع الجغرافي الذي تنتهي فيه المركبة بعد إكمال آخر |
endWaypoint |
تمثّل نقطة الطريق موقعًا جغرافيًا تنتهي فيه المركبة بعد إكمال آخر |
startTags[] |
تحدّد هذه السمة العلامات المرفقة ببداية مسار المركبة. لا يُسمح بالسلاسل الفارغة أو المكرّرة. |
endTags[] |
تحدّد هذه السمة العلامات المرفقة بنهاية مسار المركبة. لا يُسمح بالسلاسل الفارغة أو المكرّرة. |
startTimeWindows[] |
الفترات الزمنية التي قد تغادر خلالها المركبة موقع البدء. ويجب أن تكون ضمن الحدود الزمنية العالمية (راجِع يجب أن تكون الفترات الزمنية التي تنتمي إلى الحقل المتكرّر نفسه منفصلة، أي لا يمكن أن تتداخل أي فترة زمنية مع حقل آخر أو تكون مجاورة له، ويجب أن تكون مرتَّبة حسب التسلسل الزمني. لا يمكن ضبط |
endTimeWindows[] |
الفترات الزمنية التي قد تصل خلالها المركبة إلى موقعها النهائي. ويجب أن تكون ضمن الحدود الزمنية العالمية (راجِع يجب أن تكون الفترات الزمنية التي تنتمي إلى الحقل المتكرّر نفسه منفصلة، أي لا يمكن أن تتداخل أي فترة زمنية مع حقل آخر أو تكون مجاورة له، ويجب أن تكون مرتَّبة حسب التسلسل الزمني. لا يمكن ضبط |
unloadingPolicy |
يتم فرض سياسة إلغاء التحميل على المركبة. |
loadLimits |
سعة المركبة (مثل الوزن والحجم وعدد المنصّات النقّالة) المفاتيح الموجودة في الخريطة هي المعرّفات الخاصة بنوع التحميل، والمتوافقة مع مفاتيح الحقل عنصر يحتوي على قائمة بأزواج |
costPerHour |
تكاليف المركبة: يجب إضافة كل التكاليف إلى الوحدة نفسها مع التكلفة لكل ساعة لمسار المركبة. ويتم تطبيق هذه التكلفة على إجمالي الوقت الذي يقطعه المسار، وتشمل مدة الرحلة ومدّة الانتظار ووقت الزيارة. قد يؤدي استخدام |
costPerTraveledHour |
التكلفة لكل ساعة يتم قطعها لمسار المركبة. لا يتم تطبيق هذه التكلفة إلا على مدة السفر التي يسلكها المسار (أي التي تم الإبلاغ عنها في شهر |
costPerKilometer |
التكلفة لكل كيلومتر من مسار المركبة. يتم تطبيق هذه التكلفة على المسافة المبلّغ عنها في |
fixedCost |
يتم تطبيق تكلفة ثابتة في حال استخدام هذه المركبة لمعالجة شحنة. |
usedIfRouteIsEmpty |
ينطبق هذا الحقل على المركبات فقط عندما لا يوفّر مسارها أي شحنات. يشير هذا العمود إلى ما إذا كان يجب اعتبار المركبة مستعمَلة أم لا في هذه الحالة. إذا كان صحيحًا، تنتقل المركبة من موقع بدايتها إلى موقعها النهائي حتى لو لم تكن تخدم أي شحنات، وتكاليف الوقت والمسافة الناتجة من بدايتها --> يتم أخذ رحلة النهاية في الاعتبار. وبخلاف ذلك، لن تنتقل هذه الرحلة من موقع البداية إلى موقعها الجغرافي، ولم يتم تحديد موعد لقضاء |
routeDurationLimit |
يتم تطبيق هذا الحدّ على إجمالي مدة مسار المركبة. في |
travelDurationLimit |
يتم تطبيق هذا الحدّ على مدة التنقّل لمسار المركبة. في |
routeDistanceLimit |
يتم تطبيق هذا الحدّ على المسافة الإجمالية لمسار المركبة. في |
extraVisitDurationForVisitType |
تحدِّد هذه السياسة خريطة من سلاسل trafficTypes إلى المُدد. المدة هي الوقت بالإضافة إلى إذا كان طلب الزيارة عدة أنواع، ستتم إضافة مدة لكل نوع في الخريطة. عنصر يحتوي على قائمة بأزواج |
breakRule |
تصف هذه السمة الجدول الزمني للفاصل الإعلاني الذي سيتم فرضه على هذه المركبة. إذا كانت هذه القيمة فارغة، لن يتم ضبط أي فترات استراحة لهذه المركبة. |
label |
تُحدِّد تصنيفًا لهذه المركبة. يتم الإبلاغ عن هذا التصنيف في الرد على أنّه |
ignore |
إذا كانت القيمة هي "صحيح"، يجب أن تكون قيمة السمة إذا تم تنفيذ الشحنة من خلال مركبة تم تجاهلها في إذا تم تسليم الشحنة من خلال مركبة تم تجاهلها في |
travelDurationMultiple |
تُحدِّد عامل ضرب يمكن استخدامه لزيادة أو تقليل مُدد السفر لهذه المركبة. على سبيل المثال، يعني ضبط ذلك على 2.0 أن هذه المركبة تكون أبطأ ولديها مدة تنقّل ضعف الوقت اللازم للمركبات العادية. ولا تؤثر هذه القيمة المتعددة في مُدد الزيارات. ويؤثر ذلك في التكلفة في حال تحديد تحذير: سيتم تقريب مدد الانتقال إلى أقرب ثانية بعد تطبيق هذه المضاعفة ولكن قبل إجراء أي عمليات رقمية، وبالتالي، قد يؤدي المضاعف الصغير إلى فقدان الدقة. يمكنك أيضًا الاطّلاع على |
TravelMode
وسائل النقل التي يمكن للمركبات استخدامها
ويجب أن تكون هذه مجموعة فرعية من أوضاع السفر المفضَّلة في واجهة برمجة التطبيقات لتطبيق مسارات المسارات في "خرائط Google"، ويمكنك الاطّلاع على الرابط التالي: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode.
عمليات التعداد | |
---|---|
TRAVEL_MODE_UNSPECIFIED |
وضع سفر غير محدَّد، يعادل DRIVING . |
DRIVING |
وضع السفر المناسب لاتجاهات القيادة (السيارة، ...) |
WALKING |
وضع السفر المناسب لاتجاهات المشي |
UnloadingPolicy
سياسة حول طريقة تفريغ تحميل المركبة ولا يسري هذا العرض إلا على الشحنات التي تشمل استلام الطلبات وتوصيلها.
يمكن إجراء شحنات أخرى في أي مكان على المسار بشكل مستقل عن unloadingPolicy
.
عمليات التعداد | |
---|---|
UNLOADING_POLICY_UNSPECIFIED |
سياسة إلغاء تحميل غير محدّدة يجب أن تحدث عمليات التسليم بعد عمليات الاستلام المقابلة لها فقط. |
LAST_IN_FIRST_OUT |
يجب أن يتم التسليم بترتيب عكسي لاستلام الطلب. |
FIRST_IN_FIRST_OUT |
يجب أن يتم تسليم الطلبات بنفس ترتيب استلام الطلب. |
LoadLimit
يحدد حد الحمولة الذي ينطبق على مركبة، على سبيل المثال: "يمكن لهذه الشاحنة حمل ما يصل إلى 3500 كلغ كحد أقصى". يمكنك الاطّلاع على loadLimits
.
تمثيل JSON |
---|
{ "softMaxLoad": string, "costPerUnitAboveSoftMax": number, "startLoadInterval": { object ( |
الحقول | |
---|---|
softMaxLoad |
حد أدنى بسيط للتحميل. يمكنك الاطّلاع على |
costPerUnitAboveSoftMax |
إذا تجاوز الحمولة |
startLoadInterval |
فاصل التحميل المقبول للمركبة في بداية المسار |
endLoadInterval |
فاصل التحميل المقبول للمركبة في نهاية المسار |
maxLoad |
الحد الأقصى المسموح به لحجم التحميل. |
الفاصل
فاصل كميات التحميل المقبولة
تمثيل JSON |
---|
{ "min": string, "max": string } |
الحقول | |
---|---|
min |
تمثّل هذه السمة الحد الأدنى للتحميل المقبول. يجب أن تكون القيمة ≥ 0. في حال تحديدهما، يجب أن تكون قيمة |
max |
الحد الأقصى المقبول يجب أن تكون القيمة ≥ 0. وفي حال عدم تحديد ذلك، لن يتم تقييد الحد الأقصى للتحميل من خلال هذه الرسالة. في حال تحديدهما، يجب أن تكون قيمة |
DurationLimit
حد أقصى يحدد مدة قصوى لمسار مركبة. يمكن أن يكون صلبًا أو ناعمًا.
عند تحديد حقل حدّ أدنى، يجب تعريف كلّ من الحدّ الأقصى البسيط والتكلفة المرتبطة به معًا.
تمثيل JSON |
---|
{ "maxDuration": string, "softMaxDuration": string, "quadraticSoftMaxDuration": string, "costPerHourAfterSoftMax": number, "costPerSquareHourAfterQuadraticSoftMax": number } |
الحقول | |
---|---|
maxDuration |
حد صارم يقيد المدة لتكون maxDuration على الأكثر. مدة بالثواني مكونة من تسعة أرقام كسور كحد أقصى وتنتهي بالأرقام " |
softMaxDuration |
لا يفرض الحدّ الأقصى للمدة أي حدّ أقصى للمدة، ولكن عند انتهاك المسار يؤدي إلى فرض تكلفة على المسار. وتضيف هذه التكلفة إلى التكاليف الأخرى المحددة في النموذج بالوحدة نفسها. يجب أن تكون السمة مدة بالثواني مكونة من تسعة أرقام كسور كحد أقصى وتنتهي بالأرقام " |
quadraticSoftMaxDuration |
لا يفرض الحدّ الأقصى للمدة أي حدّ أقصى للمدة، ولكن عند مخالفة المسار، يتحمّل تكلفة مسار تربيعي في تلك المدة. وتضيف هذه التكلفة إلى التكاليف الأخرى المحددة في النموذج بالوحدة نفسها. يجب أن تكون السمة
مدة بالثواني مكونة من تسعة أرقام كسور كحد أقصى وتنتهي بالأرقام " |
costPerHourAfterSoftMax |
تكلفة الساعة المفروضة في حال انتهاك الحدّ الأدنى الذي يبلغ
يجب أن تكون التكلفة قيمة غير سالبة. |
costPerSquareHourAfterQuadraticSoftMax |
التكلفة لكل ساعة مربّعة يتم تكبدها في حال مخالفة الحدّ الأدنى الذي يبلغ وتكون التكلفة الإضافية 0 إذا كانت المدة أقل من الحد الأدنى، وإلّا تعتمد التكلفة على المدة على النحو التالي:
يجب أن تكون التكلفة قيمة غير سالبة. |
DistanceLimit
حد يحدد أقصى مسافة يمكن قطعها. يمكن أن يكون صلبًا أو ناعمًا.
إذا تم تحديد حدّ أدنى، يجب تحديد كلّ من softMaxMeters
وcostPerKilometerAboveSoftMax
وعدم استخدام قيم غير سالبة.
تمثيل JSON |
---|
{ "maxMeters": string, "softMaxMeters": string, "costPerKilometerAboveSoftMax": number } |
الحقول | |
---|---|
maxMeters |
حد صارم يقيد المسافة لتكون maxMeters. يجب أن يكون الحد قيمة غير سالبة. |
softMaxMeters |
عند تطبيق حدّ أدنى للمسافة، لا يفرض الحدّ الأقصى المسموح به للمسافة المقطوعة، ولكن عند مخالفة السياسة، نفرض تكلفة إضافية مقابل تكاليف أخرى محدّدة في النموذج بالوحدة نفسها. إذا تم تحديد softMaxMeters، يجب أن تكون أقل من maxMeters ويجب أن تكون قيمة غير سالبة. |
costPerKilometerAboveSoftMax |
التكلفة لكل كيلومتر يتم تكبده إذا كانت المسافة تزيد عن الحد الأقصى
يجب أن تكون التكلفة قيمة غير سالبة. |
BreakRule
قواعد لإنشاء استراحة زمنية للمركبة (مثل استراحات الغداء) الاستراحة هي فترة زمنية متجاورة تظل خلالها المركبة غير نشطة في مكانها الحالي ولا يمكن إجراء أي زيارة فيها. قد يحدث استراحة:
- أثناء السفر بين زيارتين (ويشمل ذلك الوقت قبل الزيارة أو بعدها مباشرة، ولكن ليس في منتصف الزيارة)، وفي هذه الحالة، يمتد وقت النقل المقابل بين الزيارات
- أو قبل بدء تشغيل المركبة (قد لا تبدأ المركبة في منتصف الاستراحة)، وفي هذه الحالة لا يؤثر ذلك في وقت بدء المركبة.
- أو بعد انتهاء المركبة (كما هو الحال، مع وقت انتهاء المركبة).
تمثيل JSON |
---|
{ "breakRequests": [ { object ( |
الحقول | |
---|---|
breakRequests[] |
سلسلة الفواصل اطّلِع على رسالة " |
frequencyConstraints[] |
قد تنطبق عدة أنواع من |
BreakRequest
ويجب معرفة تسلسل الفواصل الإعلانية (أي أرقامها وترتيبها) التي تنطبق على كل مركبة مسبقًا. وتحدِّد قيم BreakRequest
المتكرّرة هذا التسلسل بالترتيب الذي يجب أن تحدث به. قد تتداخل الفترات الزمنية (earliestStartTime
/ latestStartTime
)، ولكن يجب أن تكون متوافقة مع الطلب (تم وضع علامة في هذا المربّع).
تمثيل JSON |
---|
{ "earliestStartTime": string, "latestStartTime": string, "minDuration": string } |
الحقول | |
---|---|
earliestStartTime |
مطلوب. الحد الأدنى (شامل) في بداية الفاصل. طابع زمني بتنسيق RFC3339 حسب التوقيت العالمي المنسَّق (UTC) "زولو" بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
latestStartTime |
مطلوب. الحد الأقصى (شامل) في بداية الفاصل. طابع زمني بتنسيق RFC3339 حسب التوقيت العالمي المنسَّق (UTC) "زولو" بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
minDuration |
مطلوب. تمثّل هذه السمة الحد الأدنى لمدة الفاصل. يجب أن تكون موجبة. مدة بالثواني مكونة من تسعة أرقام كسور كحد أقصى وتنتهي بالأرقام " |
FrequencyConstraint
يمكن أيضًا فرض قيود على وتيرة الفواصل الإعلانية المحدّدة أعلاه ومدتها، وذلك من خلال فرض حدّ أدنى لمعدّل تكرار الفواصل الإعلانية، مثلاً "يجب توفير استراحة لمدة ساعة واحدة على الأقل كل 12 ساعة". بافتراض أنّه يمكن تفسير ذلك على أنّه "خلال أي فترة زمنية منزلقة بمدة 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 |
مطلوب. الحد الأدنى لمدة الفاصل الإعلاني لهذا القيد غير سلبي. يمكنك الاطّلاع على وصف مدة بالثواني مكونة من تسعة أرقام كسور كحد أقصى وتنتهي بالأرقام " |
maxInterBreakDuration |
مطلوب. أقصى مدى مسموح به لأي فاصل زمني في المسار لا يتضمن استراحة جزئية على الأقل لمدة مدة بالثواني مكونة من تسعة أرقام كسور كحد أقصى وتنتهي بالأرقام " |
DurationDistanceMatrix
تحدّد هذه السياسة مصفوفة المدّة والمسافة من المواقع الجغرافية لبدء زيارة المركبات والمواقع الجغرافية للمركبات والمواقع الجغرافية للمركبات والزيارة.
تمثيل JSON |
---|
{
"rows": [
{
object ( |
الحقول | |
---|---|
rows[] |
تُستخدَم لتحديد صفوف مصفوفة المدة والمسافة. يجب أن يحتوي على عدد العناصر نفسه مثل |
vehicleStartTag |
علامة تحدّد المركبات التي تنطبق عليها مصفوفة المدة والمسافة. وإذا كانت فارغة، فإن ذلك ينطبق على جميع المركبات، ولا يمكن أن يكون هناك أكثر من مصفوفة واحدة. يجب أن تتطابق جميع مرات بدء مركبة مع مصفوفة واحدة بالضبط، أي يجب أن يتطابق حقل واحد بالضبط من حقول يجب أن يكون لكل المصفوفات |
الصف
تحدّد هذه السمة صفًا من مصفوفة المدة والمسافة.
تمثيل JSON |
---|
{ "durations": [ string ], "meters": [ number ] } |
الحقول | |
---|---|
durations[] |
قيم المدة لصف معيّن يجب أن يحتوي على عدد العناصر نفسه مثل مدة بالثواني مكونة من تسعة أرقام كسور كحد أقصى وتنتهي بالأرقام " |
meters[] |
قيم المسافة لصف معين. وإذا لم تكن هناك تكاليف أو قيود تشير إلى المسافات في النموذج، فيمكن ترك هذه المسافات فارغة؛ وبخلاف ذلك، يجب أن يحتوي على عدد العناصر نفسه مثل |
TransitionAttributes
تُحدِّد سمات الانتقالات بين زيارتَين متتاليتَين على أحد المسارات. قد يتم تطبيق العديد من TransitionAttributes
على عملية النقل نفسها: في هذه الحالة، تتراكم كل التكاليف الإضافية ويتم تطبيق القيد أو الحد الأكثر صرامة (مع اتّباع دلالات "AND" الطبيعية).
تمثيل JSON |
---|
{
"srcTag": string,
"excludedSrcTag": string,
"dstTag": string,
"excludedDstTag": string,
"cost": number,
"costPerKilometer": number,
"distanceLimit": {
object ( |
الحقول | |
---|---|
srcTag |
العلامات التي تعرِّف مجموعة الانتقالات (src->dst) التي تنطبق عليها هذه السمات. تتطابق زيارة المصدر أو بدء المركبة إذا كانت |
excludedSrcTag |
يمكنك الاطّلاع على |
dstTag |
تتطابق زيارة الوجهة أو نهاية المركبة إذا كانت |
excludedDstTag |
يمكنك الاطّلاع على |
cost |
تُستخدَم لتحديد تكلفة تنفيذ عملية النقل هذه. ويكون هذا في نفس الوحدة مثل جميع التكاليف الأخرى في النموذج ويجب ألا يكون سالبًا. ويتم تطبيقه على جميع التكاليف الحالية الأخرى. |
costPerKilometer |
تحدّد التكلفة لكل كيلومتر المطبّقة على المسافة التي تم قطعها أثناء إجراء هذا الانتقال. ويضيف ما يصل إلى أي |
distanceLimit |
تحدد حدًا للمسافة التي تم قطعها أثناء إجراء هذا الانتقال. اعتبارًا من 2021/6، سيتم السماح بالحدود المسموح بها فقط. |
delay |
تحدد هذه السياسة التأخير الذي يحدث عند إجراء عملية النقل هذه. ويحدث هذا التأخير دائمًا بعد الانتهاء من زيارة المصدر وقبل بدء زيارة الوجهة. مدة بالثواني مكونة من تسعة أرقام كسور كحد أقصى وتنتهي بالأرقام " |
ShipmentTypeIncompatibility
تحدّد هذه السمة حالات عدم التوافق بين الشحنات حسب نوع الشحنة. يتم تقييد ظهور الشحنات غير المتوافقة على المسار نفسه استنادًا إلى وضع عدم التوافق.
تمثيل JSON |
---|
{
"types": [
string
],
"incompatibilityMode": enum ( |
الحقول | |
---|---|
types[] |
قائمة الأنواع غير المتوافقة. هناك شحنتان " |
incompatibilityMode |
الوضع الذي تم تطبيقه على عدم التوافق. |
IncompatibilityMode
الأوضاع التي تحدّد كيفية تقييد ظهور الشحنات غير المتوافقة على المسار نفسه
عمليات التعداد | |
---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
وضع عدم توافق غير محدَّد. يجب عدم استخدام هذه القيمة مطلقًا. |
NOT_PERFORMED_BY_SAME_VEHICLE |
في هذا الوضع، لا يمكن أبدًا لشحنتَين غير متوافقتَين أن تتشاركا المركبة نفسها. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
في عمليتَي شحن بأنواع غير متوافقة مع وضع عدم التوافق "
|
ShipmentTypeRequirement
تحدّد هذه السمة المتطلبات بين عمليات الشحن استنادًا إلى سمة "ShippingType". يتم تحديد تفاصيل المطلب حسب وضع المتطلبات.
تمثيل JSON |
---|
{
"requiredShipmentTypeAlternatives": [
string
],
"dependentShipmentTypes": [
string
],
"requirementMode": enum ( |
الحقول | |
---|---|
requiredShipmentTypeAlternatives[] |
تتضمّن هذه السمة قائمة بأنواع الشحن البديلة المطلوبة بموجب سياسة " |
dependentShipmentTypes[] |
يجب الانتقال إلى المسار نفسه للاطّلاع على كل الشحنات من النوع ملاحظة: لا يُسمَح باستخدام سلاسل المتطلبات التي تعتمد عليها |
requirementMode |
تم تطبيق الوضع على الشرط. |
RequirementMode
الأوضاع التي تحدد مظهر الشحنات التابعة على المسار.
عمليات التعداد | |
---|---|
REQUIREMENT_MODE_UNSPECIFIED |
وضع المتطلبات غير محدَّد. يجب عدم استخدام هذه القيمة مطلقًا. |
PERFORMED_BY_SAME_VEHICLE |
في هذا الوضع، تكون جميع "التابعة" يجب أن تتشارك الشحنات المركبة نفسها مع مركبة واحدة على الأقل "مطلوبة". الشحنات. |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
باستخدام الوضع نموذج "تابع" لذلك، يجب أن يكون للاستلام:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
كما في السابق، باستثناء "التابعة" يجب أن تكون للشحنات "مطلوبة" الشحنة في سيارته في وقت التسليم. |
PrecedenceRule
قاعدة الأسبقية بين حدثَين (كلّ حدث هو استلام الشحنة أو تسليمها): "الثانية" يجب أن يبدأ الحدث لمدة offsetDuration
على الأقل بعد "الأول" بدأت.
ويمكن أن تشير الأسبقية المتعددة إلى الأحداث نفسها (أو ذات الصلة)، على سبيل المثال: "يتم استلام الطلب (ب) بعد تسليم الطلب (أ)" و"يحدث استلام C بعد استلام B".
بالإضافة إلى ذلك، لا تسري الأسبقية إلا عند تنفيذ الشحنتين ويتم تجاهلهما.
تمثيل JSON |
---|
{ "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer } |
الحقول | |
---|---|
firstIsDelivery |
يشير إلى ما إذا كان "الأول" الحدث هو عملية تسليم. |
secondIsDelivery |
يشير إلى ما إذا كانت "الثانية" الحدث هو عملية تسليم. |
offsetDuration |
الفارق بين "الأول" و"ثاني" فعالية. يمكن أن تكون سالبة. مدة بالثواني مكونة من تسعة أرقام كسور كحد أقصى وتنتهي بالأرقام " |
firstIndex |
فهرس الشحن "الأول" فعالية. يجب تحديد هذا الحقل. |
secondIndex |
فهرس الشحن "للثانية" فعالية. يجب تحديد هذا الحقل. |