- تمثيل 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 "Zulu" وبدقة تصل إلى نانوثانية وما يصل إلى تسعة أرقام كسور. أمثلة: |
globalEndTime |
في حال ترك السياسة بدون ضبط، سيتم استخدام يوم 1 كانون الثاني (يناير) 1971 (أي الثواني: 31536000، nanos: 0) وفقًا بالتوقيت العالمي المنسّق (UTC) كإعداد تلقائي. طابع زمني بتنسيق RFC3339 UTC "Zulu"، بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
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، لا تتوفّر الالتفافات إلا عندما لا تعتمد مدد التنقّل على المركبات. المدة بالثواني مع ما يصل إلى تسعة أرقام كسور، وتنتهي بـ " |
pickupToDeliveryTimeLimit |
تحدِّد هذه السمة الحد الأقصى لمدة عملية الشحن من بداية الاستلام إلى بدء التسليم. في حال تحديده، يجب أن يكون موجبًا، ويجب أن تحتوي الشحنة على عملية استلام وتسليم واحدة على الأقل. ولا تعتمد هذه الطريقة على البدائل التي يتم اختيارها لاستلام الطلبات وتوصيلها، ولا تعتمد على سرعة المركبة. يمكن تحديد ذلك جنبًا إلى جنب مع الحد الأقصى لقيود التحويل: سيراعي الحل كلتا المواصفتين. مدة بالثواني تضم تسعة أرقام كسور كحد أقصى وتنتهي بـ " |
shipmentType |
سلسلة غير فارغة تحدّد "النوع" لهذه الشحنة يمكن استخدام هذه الميزة لتحديد حالات عدم التوافق أو المتطلبات بين يختلف عن |
label |
تحدّد هذه السمة تصنيفًا لهذه الشحنة. يتم تسجيل هذا التصنيف في الردّ في |
ignore |
إذا كانت القيمة هي "صحيح"، يمكنك تخطّي عملية الشحن هذه وعدم تطبيق سمة يؤدي تجاهل شحنة إلى حدوث خطأ في التحقّق عند توفّر أي يُسمح بتجاهل الشحنة التي يتم تنفيذها في |
penaltyCost |
في حال عدم اكتمال الشحنة، تتم إضافة هذه الغرامة إلى التكلفة الإجمالية للمسارات. تعتبر الشحنة مكتملة إذا تمت زيارة أحد بدائل الاستلام والتوصيل. يمكن التعبير عن التكلفة بنفس الوحدة المستخدمة في جميع الحقول الأخرى المتعلقة بالتكلفة في النموذج ويجب أن تكون موجبة. مهم: إذا لم يتم تحديد هذه العقوبة، فستُعتبر لانهائية، أي يجب أن تكتمل عملية الشحن. |
pickupToDeliveryRelativeDetourLimit |
تحدّد هذه السمة الحد الأقصى لمدة التنقّل النسبية مقارنةً بأقصر مسار بدءًا من استلام الطلب إلى التسليم. في حال تحديده، يجب أن يكون موجبًا، ويجب أن تحتوي الشحنة على عملية استلام وتسليم واحدة على الأقل. على سبيل المثال، لنفترض أنّ t هو أقصر وقت يستغرقه الانتقال من خيار استلام الطلب المحدّد مباشرةً إلى خيار التسليم المحدّد. بعد ذلك، يفرض ضبط
في حال تحديد الحدود النسبية والمطلقة في الشحنة نفسها، يتم استخدام الحد الأكثر تقييدًا لكل زوج من عمليات الاستلام/التسليم المحتملة. اعتبارًا من 2017/2010، لا تتوفّر الإحالات الناجحة إلا عندما لا تعتمد مُدد السفر على المركبات. |
VisitRequest
طلب زيارة يمكن إجراؤها بواسطة مركبة: لها موقع جغرافي (أو موقعان، راجِع المعلومات أدناه)، وأوقات افتتاح وإغلاق ممثّلة بنوافذ زمنية، ومدة الخدمة (الوقت الذي تقضيه المركبة بعد وصولها لجمع السلع أو تسليمها).
تمثيل JSON |
---|
{ "arrivalLocation": { object ( |
الحقول | |
---|---|
arrivalLocation |
الموقع الجغرافي الذي تصل إليه المركبة عند تنفيذ هذا |
arrivalWaypoint |
نقطة الطريق التي تصل إليها المركبة عند تنفيذ هذه |
departureLocation |
الموقع الجغرافي الذي تغادر منه المركبة بعد إكمال هذا |
departureWaypoint |
تمثّل هذه السمة نقطة الطريق التي تغادر فيها المركبة بعد إكمال |
tags[] |
تحدِّد هذه السياسة العلامات المرفقة بطلب الزيارة. لا يُسمح باستخدام سلاسل فارغة أو مكرّرة. |
timeWindows[] |
الفترات الزمنية التي تحدّ من وقت الوصول في إحدى الزيارات يُرجى العِلم أنّه قد تغادر المركبة خارج فترة وقت الوصول، أي أنّ وقت الوصول + المدة لا يجب أن يكونا ضمن فترة زمنية. وقد يؤدي ذلك إلى الانتظار إذا وصلت المركبة قبل يعني عدم توفّر يجب أن تكون الفترات الزمنية غير متداخلة، أي أنّه يجب ألّا تتداخل أي فترة زمنية مع أخرى أو تكون مجاورة لها، ويجب أن تكون بترتيب متزايد. لا يمكن ضبط |
duration |
مدة الزيارة، أي الوقت الذي تقضيه بالمركبة بين الوصول والمغادرة (ستتم إضافتها إلى وقت الانتظار المحتمل، ويمكنك الاطّلاع على المدة بالثواني مع ما يصل إلى تسعة أرقام كسور، وتنتهي بـ " |
cost |
تكلفة خدمة طلب الزيارة هذا على مسار مركبة. ويمكن استخدامها لدفع تكاليف مختلفة لكل عملية استلام أو تسليم بديلة للشحنة. يجب أن تكون هذه التكلفة بالوحدة نفسها المستخدَمة في |
loadDemands |
تحميل متطلبات طلب الزيارة هذا يشبه هذا الحقل حقل عنصر يحتوي على قائمة بأزواج |
visitTypes[] |
تحدّد هذه السمة أنواع الزيارة. ويمكن استخدام ذلك لتخصيص الوقت الإضافي اللازم لإتمام هذه الزيارة في مركبة (اطّلع على يمكن أن يظهر النوع مرة واحدة فقط. |
label |
تُحدِّد تصنيفًا لهذا |
avoidUTurns |
لتحديد ما إذا كان يجب تجنب الانعطافات للخلف في مسارات القيادة في هذا الموقع. نبذل قصارى جهدنا لتجنّب الانعطاف إلى الخلف، ولكن لا يمكننا ضمان تجنّبه تمامًا. هذه ميزة تجريبية وسلوكها عرضة للتغيير. |
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` <= `endTime` and
0 <= `startTime` <= `softStartTime` and
0 <= `softEndTime` <= `endTime`.
تمثيل JSON |
---|
{ "startTime": string, "endTime": string, "softStartTime": string, "softEndTime": string, "costPerHourBeforeSoftStartTime": number, "costPerHourAfterSoftEndTime": number } |
الحقول | |
---|---|
startTime |
وقت بدء فترة الوقت الصعب. إذا لم يتم تحديدها، سيتم ضبطها على طابع زمني بتنسيق RFC3339 UTC "Zulu"، بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
endTime |
وقت انتهاء الفترة الزمنية الصارمة أمّا في حال عدم تحديده، فسيتم ضبطه على طابع زمني بتنسيق RFC3339 UTC "Zulu"، بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
softStartTime |
تمثّل هذه السمة وقت البدء البسيط للإطار الزمني. يجب أن يكون طابعًا زمنيًا بالتنسيق RFC3339 UTC "Zulu" وبدقة تصل إلى نانوثانية وما يصل إلى تسعة أرقام كسور. أمثلة: |
softEndTime |
وقت الانتهاء البسيط للنافذة الزمنية. طابع زمني بتنسيق RFC3339 UTC "Zulu"، بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
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 |
تحدِّد خريطة من سلاسل visitTypes إلى المدّات. المدة هي الوقت بالإضافة إلى إذا كان طلب الزيارة يتضمّن أنواعًا متعدّدة، ستتم إضافة مدة لكل نوع في الخريطة. عنصر يحتوي على قائمة بأزواج |
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
تحدد هذه السمة حد الحمولة الذي ينطبق على المركبة، على سبيل المثال "يمكن لهذه الشاحنة أن تحمل حتى 3, 500 كلغ كحد أقصى". يمكنك الاطّلاع على 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 "Zulu" وبدقة تصل إلى نانوثانية وما يصل إلى تسعة أرقام كسور. أمثلة: |
latestStartTime |
مطلوب. الحد الأقصى (شامل) في بداية الفاصل. طابع زمني بتنسيق RFC3339 UTC "Zulu"، بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
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
على عملية النقل نفسها: في هذه الحالة، تُجمع كل التكاليف الإضافية ويتم تطبيق القيود أو الحدود الأكثر صرامة (وفقًا للدلالات الطبيعية لعبارة "و").
تمثيل 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
تُحدِّد حالات عدم التوافق بين الشحنات استنادًا إلى shipmentType. يتم تقييد ظهور الشحنات غير المتوافقة على المسار نفسه استنادًا إلى وضع عدم التوافق.
تمثيل 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
على الأقل من بدء الحدث "الأول".
ويمكن أن تشير الأسبقية المتعددة إلى الأحداث نفسها (أو ذات الصلة)، على سبيل المثال: "يتمّ استلام الطلب ب بعد تسليم الطلب أ" و"يتمّ استلام الطلب ب بعد استلامه".
بالإضافة إلى ذلك، لا تسري الأولويات إلا عند تنفيذ كلتا الشحنتَين ويتم تجاهلها بخلاف ذلك.
تمثيل JSON |
---|
{ "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer } |
الحقول | |
---|---|
firstIsDelivery |
يشير إلى ما إذا كان الحدث "الأول" هو عملية تسليم. |
secondIsDelivery |
يشير إلى ما إذا كان الحدث "الثاني" تسليمًا. |
offsetDuration |
المعادلة بين الحدث "الأول" و"الثاني". يمكن أن تكون سالبة. مدة بالثواني تضم تسعة أرقام كسور كحد أقصى وتنتهي بـ " |
firstIndex |
فهرس الشحن للحدث "الأول". يجب تحديد هذا الحقل. |
secondIndex |
فهرس الشحن للحدث "الثاني". يجب تحديد هذا الحقل. |