حلّ تم إدراجه في الطلب يتضمّن معلومات عن الزيارات التي يجب تقييدها وكيفية تقييدها
| تمثيل JSON |
|---|
{ "routes": [ { object ( |
| الحقول | |
|---|---|
routes[] |
مسارات الحلّ المطلوب إضافته قد يتم حذف بعض المسارات من الحل الأصلي. يجب أن تستوفي المسارات والشحنات التي تم تخطّيها افتراضات الصلاحية الأساسية المدرَجة في |
skippedShipments[] |
تم تخطّي شحنات الحلّ المطلوب إضافته. وقد يتم حذف بعضها من الحل الأصلي. الاطّلاع على حقل |
constraintRelaxations[] |
بالنسبة إلى صفر أو أكثر من مجموعات المركبات، تحدّد هذه السمة متى يتم تخفيف القيود ومقدار التخفيف. إذا كان هذا الحقل فارغًا، يتم فرض قيود كاملة على جميع مسارات المركبات غير الفارغة. |
ConstraintRelaxation
بالنسبة إلى مجموعة من المركبات، يحدّد هذا الحقل الحدّ الأدنى الذي سيتم عنده تخفيف القيود المفروضة على الزيارات ومستوى التخفيف. يجب تخطّي الشحنات المُدرَجة في الحقل skipped_shipment، أي لا يمكن تنفيذها.
| تمثيل JSON |
|---|
{
"relaxations": [
{
object ( |
| الحقول | |
|---|---|
relaxations[] |
جميع القيود التي سيتم تخفيفها على الزيارات في المسارات التي تتضمّن مركبات في |
vehicleIndices[] |
تحدّد هذه السمة فهارس المركبات التي ينطبق عليها قيد الزيارة يتم ربط فهرس المركبات بالطريقة نفسها كما في |
استرخاء
إذا كانت relaxations فارغة، يكون وقت البدء وتسلسل جميع الزيارات في routes مقيّدًا بالكامل ولا يمكن إدراج أو إضافة زيارات جديدة إلى تلك المسارات. بالإضافة إلى ذلك، يتم تقييد وقتَي بدء وانتهاء المركبة في routes بشكل كامل، ما لم تكن المركبة فارغة (أي ليس لديها زيارات وتم ضبط usedIfRouteIsEmpty على "خطأ" في النموذج).
تحدّد relaxations(i).level مستوى تخفيف القيود الذي يتم تطبيقه على الزيارة رقم j التي تستوفي ما يلي:
route.visits(j).start_time >= relaxations(i).threshold_timeوj + 1 >= relaxations(i).threshold_visit_count
وبالمثل، يتم تخفيف شرط بدء تشغيل المركبة إلى relaxations(i).level إذا استوفى ما يلي:
vehicleStartTime >= relaxations(i).threshold_timeو- يتم ضبط
relaxations(i).threshold_visit_count == 0علىrelaxations(i).levelإذا استوفى ما يلي: vehicleEndTime >= relaxations(i).threshold_timeوroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
لتطبيق مستوى استرخاء إذا كانت الزيارة تستوفي thresholdVisitCount أو thresholdTime، أضِف relaxations مرّتين مع level نفسه: أحدهما مع ضبط thresholdVisitCount فقط والآخر مع ضبط thresholdTime فقط. إذا كانت إحدى الزيارات تستوفي شروط relaxations متعددة، يتم تطبيق المستوى الأقل تقييدًا. نتيجةً لذلك، يصبح مستوى الاسترخاء أعلى تدريجيًا من بداية الرحلة إلى نهايتها، أي أنّ مستوى الاسترخاء لا ينخفض مع تقدّم الرحلة.
يتم تقييد توقيت وتسلسل زيارات المسار التي لا تستوفي شروط الحد الأدنى لأي relaxations بشكل كامل، ولا يمكن إدراج أي زيارات في هذه التسلسلات. بالإضافة إلى ذلك، إذا لم يستوفِ بدء المركبة أو نهايتها شروط أي تخفيف، يتم تحديد الوقت، ما لم تكن المركبة فارغة.
| تمثيل JSON |
|---|
{
"level": enum ( |
| الحقول | |
|---|---|
level |
مستوى تخفيف القيود الذي ينطبق عند استيفاء الشروط عند |
thresholdTime |
الوقت الذي يمكن فيه تطبيق التخفيف يستخدم المعيار RFC 3339، حيث يكون الناتج الذي يتم إنشاؤه مُمثلاً بالتوقيت العالمي المنسَّق مع حرف Z في النهاية ويستخدم الأرقام الجزئية 0 أو 3 أو 6 أو 9. تُقبل أيضًا المعادلات الأخرى التي لا تستخدم حرف Z. أمثلة: |
thresholdVisitCount |
عدد الزيارات التي يمكن تطبيق التخفيف إذا كانت القيمة |
المستوى
تعرض هذه السمة مستويات تخفيف القيود المختلفة التي يتم تطبيقها على زيارة والزيارات اللاحقة عندما تستوفي شروط الحدّ الأدنى.
يتم ترتيب التعداد أدناه حسب درجة التخفيف المتزايدة.
| عمليات التعداد | |
|---|---|
LEVEL_UNSPECIFIED |
مستوى التخفيف التلقائي الضمني: لا يتم تخفيف أي قيود، أي أنّ جميع الزيارات تكون مقيّدة بالكامل. يجب عدم استخدام هذه القيمة بشكل صريح في |
RELAX_VISIT_TIMES_AFTER_THRESHOLD |
سيتم تخفيف القيود المفروضة على أوقات بدء الزيارات وأوقات بدء/انتهاء استخدام المركبات، ولكن ستظل كل زيارة مرتبطة بالمركبة نفسها ويجب الالتزام بتسلسل الزيارات: لا يمكن إدراج أي زيارة بينها أو قبلها. |
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD |
كما هو الحال في RELAX_VISIT_TIMES_AFTER_THRESHOLD، ولكن يتم أيضًا تخفيف تسلسل الزيارات: لا يمكن إجراء الزيارات إلا بواسطة هذه المركبة، ولكن قد لا يتم إجراؤها. |
RELAX_ALL_AFTER_THRESHOLD |
كما هو الحال مع RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD، ولكن يتم أيضًا تخفيف القيود على المركبة: تكون الزيارات مجانية تمامًا في الوقت المحدد أو بعده، وقد لا يتم تنفيذها. |