اهداف

Objective properties include `objectives` in `ShipmentModel` and `type` and `weight` in `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.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 آغاز کنید.

وقتی با استفاده از این حالت حل مسئله، درخواستی ارسال می‌کنید، موارد زیر اتفاق می‌افتد:

  • این API اهداف شما را به پارامترهای مدل هزینه تبدیل می‌کند و آنها را در یک processedRequest برمی‌گرداند. سپس می‌توانید پارامترهای مدل هزینه را در صورت نیاز تنظیم کنید تا برنامه مسیر خود را به طور دقیق تنظیم کنید.
  • هنگام استفاده از چندین هدف، API هزینه‌های تمام اهداف شما را ترکیب کرده و آنها را بر اساس وزن مربوطه‌شان مقیاس‌بندی می‌کند.
  • از آنجایی که API مسیر بهینه‌ای را در اختیار شما قرار نمی‌دهد، برای این درخواست هزینه‌ای از شما دریافت نمی‌شود و فقط اهداف را به پارامترهای مدل هزینه تبدیل می‌کند.

درخواست نمونه

مثال زیر درخواستی را با استفاده از هدف 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"
  }
}