الأهداف

تتضمّن خصائص الهدف `objectives` في `ShipmentModel` و `type` و `weight` في `objectives`

الأهداف هي مَعلمات يمكنك استخدامها لتحديد أهداف تحسين عالية المستوى بدلاً من تقديم مَعلمات تكلفة محدّدة من نموذج التكلفة.

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

يمكنك استخدام الأهداف للتحكّم في التأثيرات التالية على خطة مسارك:

  • إجمالي وقت السفر أو المسافة المقطوعة في مساراتك
  • إجمالي وقت التشغيل لجميع المركبات
  • إجمالي عدد المركبات المستخدَمة

الخصائص

السمة objectives هي عبارة عن مصفوفة من أنواع الرسائل Objective ضمن ShipmentModel. يحدّد كل Objective هدف تحسين محدّدًا ويتضمّن الحقول المدرَجة في الجدول التالي:

الحقل النوع الوصف
type تعداد تحدّد هذه السمة هدف التحسين المحدّد مسبقًا. القيم المقبولة هي:
  • DEFAULT: تستخدم مجموعة تلقائية من التكاليف لضمان توفير حلّ أساسي، ما يعني أنّها تمنع الحلّ من استخدام قيم قصوى لتحقيق هدف معيّن. تتم إضافة DEFAULT تلقائيًا إلى الطلبات التي تتضمّن هدفًا، وتتم إضافتها مع weight بقيمة 1.0. إذا أدرجت هذا الهدف بشكل نشط في طلبك، سيستخدم الحلّ weight الذي تحدّده.
  • ‫MIN_DISTANCE: تقلّل إجمالي المسافة المقطوعة.
  • ‫MIN_WORKING_TIME: تقلّل هذه السمة من إجمالي وقت العمل، ويتم جمعها على مستوى جميع المركبات.
  • MIN_TRAVEL_TIME: تقلّل إجمالي مدة الرحلة إلى الحدّ الأدنى، ويتم جمع هذه المدة على مستوى جميع المركبات.
  • ‫MIN_NUM_VEHICLES: يقلّل عدد المركبات المستخدَمة.
weight مزدوجة تحدّد هذه السمة الأهمية النسبية لهذا الهدف. عند استخدام أهداف متعدّدة، تتحكّم القيمة weight في مدى تأثير هذا الهدف المحدّد في تحسين المسار بشكل عام مقارنةً بالأهداف الأخرى. يمكن أن يكون هذا أي رقم غير سالب ولا يلزم أن يكون مجموعها 1. القيمة التلقائية هي 1.0.

أمثلة

يتناول هذا القسم نوعَين من الأمثلة:

  • عينة تعليمات برمجية توضّح بنية مصفوفة objectives
  • مثال على طلب يتضمّن الصفيف objectives

عيّنات تعليمات برمجية

يوضّح المثال التالي بنية objectives:

"objectives": [
  {
    "type": "OBJECTIVE_TYPE",
    "weight": WEIGHT
  }
]

مثال على الطلب

يوضّح المثال التالي بنية طلب optimizeTours أساسي يتضمّن أهدافًا متعدّدة، حيث تكون أهمية MIN_TRAVEL_TIME ثلاثة أضعاف أهمية MIN_WORKING_TIME.

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.42506261000996,
              "longitude": -122.09535511930135
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.42421503206021,
              "longitude": -122.09526063135228
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "travelMode": "DRIVING"
      }
    ],
    "objectives": [
      {
        "type": "MIN_TRAVEL_TIME",
        "weight": 3.0
      },
      {
        "type": "MIN_WORKING_TIME"
      }
    ]
  }
}

إنشاء نموذج تكلفة

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

يمكنك بدء تطوير نموذج التكلفة الخاص بك عن طريق إضافة أهداف إلى طلبك، ثم تحويل الأهداف في طلبك إلى مَعلمات نموذج التكلفة باستخدام وضع الحل TRANSFORM_AND_RETURN_REQUEST.

عند إرسال طلب باستخدام وضع الحلّ هذا، يحدث ما يلي:

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

مثال على الطلب

يعرض المثال التالي طلبًا يستخدم الهدف MIN_TRAVEL_TIME ووضع الحل TRANSFORM_AND_RETURN_REQUEST:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.42506261000996,
              "longitude": -122.09535511930135
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.42421503206021,
              "longitude": -122.09526063135228
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "travelMode": "DRIVING"
      }
    ],
    "objectives": [
      {
        "type": "MIN_TRAVEL_TIME"
      }
    ]
  },
  "solvingMode": "TRANSFORM_AND_RETURN_REQUEST"
}

مثال على إجابة

في ما يلي الاستجابة المتوافقة مع الطلب السابق. يتضمّن هذا الردّ مَعلمات نموذج التكلفة التي تم إنشاؤها والهدف الأصلي للرجوع إليه.

{
  "processedRequest": {
    "model": {
      "shipments": [
        {
          "pickups": [
            {
              "arrivalLocation": {
                "latitude": 37.425062610009959,
                "longitude": -122.09535511930135
              }
            }
          ],
          "deliveries": [
            {
              "arrivalLocation": {
                "latitude": 37.424215032060211,
                "longitude": -122.09526063135228
              }
            }
          ]
        }
      ],
      "vehicles": [
        {
          "travelMode": "DRIVING",
          "costPerHour": 30,
          "costPerTraveledHour": 330,
          "costPerKilometer": 0.2
        }
      ],
      "objectives": [
        {
          "type": "MIN_TRAVEL_TIME"
        }
      ]
    },
    "solvingMode": "TRANSFORM_AND_RETURN_REQUEST"
  }
}