SkippedShipment

تُحدِّد تفاصيل الشحنات غير المنفَّذة في أحد الحلول. في الحالات البسيطة و/أو إذا تمكّنا من تحديد سبب التخطّي، سنُبلغ عن السبب هنا.

تمثيل JSON
{
  "index": integer,
  "label": string,
  "reasons": [
    {
      object (Reason)
    }
  ],
  "penaltyCost": number,
  "estimatedIncompatibleVehicleRatio": number
}
الحقول
index

integer

يتطابق الفهرس مع فهرس الشحنة في المصدر ShipmentModel.

label

string

نسخة من Shipment.label المقابلة، إذا تم تحديدها في Shipment

reasons[]

object (Reason)

قائمة بالأسباب التي توضّح سبب تخطّي الشحنة راجِع التعليق أعلاه Reason. إذا لم نتمكّن من معرفة سبب تخطّي شحنة معيّنة، لن يتم ضبط الأسباب.

penaltyCost

number

هذه نسخة من Shipment.penalty_cost، وهي مضمّنة هنا لتسهيل معرفة مدى خطورة الشحنة التي تم تخطّيها.

تجريبي: قد يتغيّر سلوك هذا الحقل أو وجوده في المستقبل.

estimatedIncompatibleVehicleRatio

number

النسبة المقدَّرة للمركبات التي لا يمكنها تنفيذ هذه الشحنة لسبب واحد على الأقل من الأسباب الواردة أدناه ملاحظة: لا يتم ملء هذا الحقل إلا عندما تكون الأسباب تتعلّق بمركبة.

تجريبي: قد يتغيّر سلوك هذا الحقل أو وجوده في المستقبل.

السبب

إذا تمكّنا من توضيح سبب تخطّي الشحنة، سيتم إدراج الأسباب هنا. إذا لم يكن السبب متطابقًا لجميع المركبات، سيتضمّن reason أكثر من عنصر واحد. لا يمكن أن تتضمّن الشحنة التي تم تخطّيها أسبابًا مكرّرة، أي أن تكون جميع الحقول متطابقة باستثناء exampleVehicleIndex. مثال:

reasons {
  code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
  exampleVehicleIndex: 1
  exampleExceededCapacityType: "Apples"
}
reasons {
  code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
  exampleVehicleIndex: 3
  exampleExceededCapacityType: "Pears"
}
reasons {
  code: CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT
  exampleVehicleIndex: 1
}

لا تتوافق الشحنة التي تم تخطّيها مع جميع المركبات. قد تختلف الأسباب لجميع المركبات، ولكن سيتم تجاوز سعة "التفاح" في مركبة واحدة على الأقل (بما في ذلك المركبة 1)، وسيتم تجاوز سعة "الكمثرى" في مركبة واحدة على الأقل (بما في ذلك المركبة 3)، وسيتم تجاوز الحد الأقصى للمسافة في مركبة واحدة على الأقل (بما في ذلك المركبة 1).

تمثيل JSON
{
  "code": enum (Code),
  "exampleVehicleIndices": [
    integer
  ],
  "exampleExceededCapacityType": string,
  "exampleVehicleIndex": integer
}
الحقول
code

enum (Code)

راجِع التعليقات في الرمز البرمجي.

exampleVehicleIndices[]

integer

كما هو الحال في exampleVehicleIndex، إلا أنّنا نقدّم قائمة بمركبات متعددة تم التعرّف عليها. يُرجى العِلم أنّ هذه القائمة ليست شاملة بالضرورة. لا يتم ملء هذا الحقل إلا إذا كانت قيمة [fill_example_vehicle_indices_in_skipped_reasons][] صحيحة.

تجريبي: قد يتغيّر سلوك هذا الحقل أو وجوده في المستقبل.

exampleExceededCapacityType

string

إذا كان رمز السبب هو DEMAND_EXCEEDS_VEHICLE_CAPACITY، يُرجى توثيق نوع سعة واحد تم تجاوزه.

exampleVehicleIndex

integer

إذا كان السبب مرتبطًا بعدم توافق الشحنة مع المركبة، يقدّم هذا الحقل فهرسًا لمركبة واحدة ذات صلة.

الرمز

رمز يحدِّد نوع السبب لا معنى للترتيب هنا. على وجه الخصوص، لا يشير ذلك إلى ما إذا كان سبب معيّن سيظهر قبل سبب آخر في الحل، إذا كان كلاهما ينطبق.

عمليات التعداد
CODE_UNSPECIFIED ولا يُفترَض استخدام هذا الإجراء مطلقًا.
NO_VEHICLE لا تتوفّر مركبة في النموذج، ما يجعل جميع الشحنات غير قابلة للتنفيذ.
DEMAND_EXCEEDS_VEHICLE_CAPACITY يتجاوز الطلب على الشحنة سعة المركبة لبعض أنواع السعة، ومن بينها exampleExceededCapacityType.
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT

تتجاوز الحدّ الأدنى للمسافة اللازمة لتنفيذ هذه الشحنة، أي من startLocation للمركبة إلى مواقع استلام و/أو تسليم الشحنة وإلى الموقع النهائي للمركبة، routeDistanceLimit للمركبة.

يُرجى العلم أنّنا نستخدم المسافات الجيوديسية لإجراء هذا الحساب.

CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT

يتجاوز الحدّ الأدنى للوقت اللازم لتنفيذ هذه الشحنة، بما في ذلك وقت السفر ووقت الانتظار ووقت الخدمة، routeDurationLimit المركبة.

ملاحظة: يتم احتساب وقت التنقّل في أفضل السيناريوهات، أي المسافة الجيوديسية مضروبة في 36 مترًا في الثانية (130 كيلومترًا في الساعة تقريبًا).

CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT كما هو موضّح أعلاه، ولكننا نقارن فقط الحدّ الأدنى لوقت التنقّل وtravelDurationLimit المركبة.
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS لا يمكن للمركبة تنفيذ عملية الشحن هذه في أفضل السيناريوهات (راجِع CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT لمعرفة كيفية احتساب الوقت) إذا بدأت في أقرب وقت ممكن، لأنّ إجمالي الوقت سيجعل المركبة تنتهي بعد وقت الانتهاء النهائي.
VEHICLE_NOT_ALLOWED حقل allowedVehicleIndices في الشحنة ليس فارغًا وهذه المركبة لا تنتمي إليه.
VEHICLE_IGNORED

حقل ignore للمركبة صحيح.

تجريبي: قد يتغيّر سلوك هذا الحقل أو وجوده في المستقبل.

SHIPMENT_IGNORED

حقل ignore للشحنة صحيح.

تجريبي: قد يتغيّر سلوك هذا الحقل أو وجوده في المستقبل.

SKIPPED_IN_INJECTED_SOLUTION_CONSTRAINT

تم تخطّي الشحنة في injectedSolutionConstraint.

تجريبي: قد يتغيّر سلوك هذا الحقل أو وجوده في المستقبل.

VEHICLE_ROUTE_IS_FULLY_SEQUENCE_CONSTRAINED

لا تسمح إزالة القيود المفروضة على مسار المركبات المحدّدة في injectedSolutionConstraint بإدراج أي زيارة.

تجريبي: قد يتغيّر سلوك هذا الحقل أو وجوده في المستقبل.

ZERO_PENALTY_COST

لا يتم فرض أي تكلفة جزاء على الشحنة. على الرغم من أنّ هذا الخيار قد يكون مفيدًا كخيار نموذجي متقدّم، إلا أنّه قد يوضّح أيضًا بعد وقوع المشكلة سبب تخطّي شحنة معيّنة.

تجريبي: قد يتغيّر سلوك هذا الحقل أو وجوده في المستقبل.