1

logistics api. Оптимизация ( order/optimize) с ограничениями

Topic: logistics api. Оптимизация ( order/optimize) с ограничениями

Здравствуйте!
Мне необходимо осуществить запрос по оптимизации заявок с ограничениями (например по грузоподъемности)
Я формирую данные для запроса  order/optimize и указываю в параметре "flags" =  1|2|32|128|768

$br = array(
    "orders"     => array(45,46,47,48,49,50),
    "warehouses" => array(51),
    "units"      => array(17559529),
    "flags"      => 1| 2|32|128|768,
    // 1 - оптимизировать по расписанию заявки (используются параметры tf и tt)
    // 2 - оптимизировать по времени выполнения всех заявки
    // 32 - учитывать грузоподъемность объекта
    // 64 - учитывать вместимость объекта по объёму
    // 128 - учитывать текущее время
    // 256 - маршрут завершается
    // 512 - посещается склад перезагрузки
    // 768 - маршрут разделяется на несколько
    "gis" => array( // настройки карт
        "provider"                   => 1, 
        "addPoints"                  => 0,
    ),

    "busyRoutes" => array( //     периоды занятости, далее индекс
        17559529 => array(
            array(
                "tf" => strtotime('2019-10-25 12:00'),
                "tt" => strtotime('2019-10-25 22:00'),
                "pf" => array(51),
                "pt" => array(51)
            ),
        ),

    ),
    "priority"   => array(),
    "criterions" => array(
        "units_carrying_capacity" => 1
    ),
    "preference" => array()
);

Оптимизация происходит по разбиению маршрутов после указания  "units_carrying_capacity" => 1

Результатом являются 3 маршрута, которые начинаются со склада.

1) Подскажите, пожалуйста, верно ли я формирую флаги и ограничения? Если нет, то прошу подсказки как это необходимо делать.
2) После формирования маршрута и загрузки его в систему (order/route_update) у меня пропадает из веб приложения склад, предварительно я для него формирую данные p.r как и для всех заявок. Как этого избежать?

Большое спасибо!

2

logistics api. Оптимизация ( order/optimize) с ограничениями

(edited by sets 25/10/2019 16:21:28)

Re: logistics api. Оптимизация ( order/optimize) с ограничениями

lenazolotova1

1.Флаги сформированы правильно.
2. Как формируется маршрут, в частности склад?

Вот тут я описывал пример (формирование по массиву JSON заявок а не ID)
https://forum.gurtam.com/viewtopic.php? … 31#p170831

Посмотрите

Команда LABS
3

logistics api. Оптимизация ( order/optimize) с ограничениями

(edited by lenazolotova1 28/10/2019 11:12:50)

Re: logistics api. Оптимизация ( order/optimize) с ограничениями

Формирование маршрута происходит так:
{"itemId":17735529,"orders":[{"itemId":17735529,"id":11,"n":"\u0422\u0435\u0441\u044228","p":{"a":"\u0427\u0435\u0445\u043e\u0432\u0430 \u043f\u0440., 62, \u0420\u043e\u0441\u0442\u043e\u0432-\u041d\u0430-\u0414\u043e\u043d\u0443, \u0420\u043e\u0441\u0442\u043e\u0432\u0441\u043a\u0430\u044f \u043e\u0431\u043b., \u0420\u043e\u0441\u0441\u0438\u044f","aff":"","c":"","cid":"","cm":"","d":"","e":"","n":"","ntf":0,"p":"","p2":"","r":{"id":1572246659,"i":0,"m":0,"t":0,"vt":1572246084,"ndt":600},"t":"","tags":"","uic":"","ut":600,"v":0,"w":0,"z":""},"rp":"","f":13,"tf":36000,"tt":72000,"trt":3600,"r":100,"y":47.2258682251,"x":39.7242584229,"u":17559529,"ej":[],"tz":134228528,"callMode":"update"},{"itemId":17735529,"id":16,"n":"2019-10-28 003","p":{"a":"\u041e\u0441\u0438\u043f\u0435\u043d\u043a\u043e \u0443\u043b., 19, \u0420\u043e\u0441\u0442\u043e\u0432-\u043d\u0430-\u0414\u043e\u043d\u0443, \u0420\u043e\u0441\u0442\u043e\u0432\u0441\u043a\u0430\u044f \u043e\u0431\u043b., \u0420\u043e\u0441\u0441\u0438\u044f","c":0,"cid":"","d":"","e":"","n":"","ntf":0,"p":"","p2":"","pr":0,"r":{"id":1572246659,"i":1,"m":7313,"t":0,"vt":1572247271,"ndt":600},"t":"","tags":[],"uic":"","ut":600,"v":0,"w":500},"rp":"","f":1,"tf":1572210000,"tt":1572296340,"trt":3600,"r":100,"y":47.2184028625,"x":39.6506881714,"u":17559529,"ej":[],"tz":134228528,"callMode":"update"},{"itemId":17735529,"id":17,"n":"2019-10-28 004","p":{"a":"\u0420\u0435\u0432\u043a\u043e\u043c\u043e\u0432\u0441\u043a\u0430\u044f \u0443\u043b., 106\u0410, \u0420\u043e\u0441\u0442\u043e\u0432-\u043d\u0430-\u0414\u043e\u043d\u0443, \u0420\u043e\u0441\u0442\u043e\u0432\u0441\u043a\u0430\u044f \u043e\u0431\u043b., \u0420\u043e\u0441\u0441\u0438\u044f","c":0,"cid":"","d":"","e":"","n":"","ntf":0,"p":"","p2":"","pr":0,"r":{"id":1572246659,"i":2,"m":9379,"t":0,"vt":1572248122,"ndt":600},"t":"","tags":[],"uic":"","ut":600,"v":0,"w":500},"rp":"","f":1,"tf":1572210000,"tt":1572296340,"trt":3600,"r":100,"y":47.2060432434,"x":39.6537780762,"u":17559529,"ej":[],"tz":134228528,"callMode":"update"},{"itemId":17735529,"id":11,"n":"\u0422\u0435\u0441\u044228","p":{"a":"\u0427\u0435\u0445\u043e\u0432\u0430 \u043f\u0440., 62, \u0420\u043e\u0441\u0442\u043e\u0432-\u041d\u0430-\u0414\u043e\u043d\u0443, \u0420\u043e\u0441\u0442\u043e\u0432\u0441\u043a\u0430\u044f \u043e\u0431\u043b., \u0420\u043e\u0441\u0441\u0438\u044f","aff":"","c":"","cid":"","cm":"","d":"","e":"","n":"","ntf":0,"p":"","p2":"","r":{"id":1572246659,"i":3,"m":16228,"t":0,"vt":1572249284,"ndt":600},"t":"","tags":"","uic":"","ut":600,"v":0,"w":0,"z":""},"rp":"","f":13,"tf":36000,"tt":72000,"trt":3600,"r":100,"y":47.2258682251,"x":39.7242584229,"u":17559529,"ej":[],"tz":134228528,"callMode":"update"}],"routeId":1572246659,"callMode":"create"}

Но с этими параметрами создание происходит не верное. Маршрут создается начиная с заявки, а не со склада (склад два раза подряд прописывается в конце маршрута). Затем склад исчезает из настроек (вкладка "СКЛАДЫ")

В примере не совсем то, что мне нужно. Там заявки еще не созданы и нет складов.
Как можно отличить заявки от складов? По флагам?

Скажите, пожалуйста, как правильно создавать маршруты при наличие склада и заявок в системе? При условии, что оптимизация  вернула правильно сформированные маршруты

Спасибо!

4

logistics api. Оптимизация ( order/optimize) с ограничениями

Re: logistics api. Оптимизация ( order/optimize) с ограничениями

lenazolotova1
Из данных параметров видно что идет не создание а обновление склада, а нужно прописать для "Тест28" callMode: "create"

RES_ID, UNIT_ID

{
  "itemId": RES_ID,
  "orders": [
    {
      "itemId": RES_ID,
      "n": "Тест28",
      "p": {
        "a": "Чехова пр., 62, Ростов-На-Дону, Ростовская обл., Россия",
        "aff": "",
        "c": "",
        "cid": "",
        "cm": "",
        "d": "",
        "e": "",
        "n": "",
        "ntf": 0,
        "p": "",
        "p2": "",
        "r": {
          "id": 1572246659,
          "i": 0,
          "m": 0,
          "t": 0,
          "vt": 1572246084,
          "ndt": 600
        },
        "t": "",
        "tags": "",
        "uic": "",
        "ut": 600,
        "v": 0,
        "w": 0,
        "z": ""
      },
      "rp": "",
      "f": 13,
      "tf": 36000,
      "tt": 72000,
      "trt": 3600,
      "r": 100,
      "y": 47.2258682251,
      "x": 39.7242584229,
      "u": UNIT_ID,
      "ej": [],
      "tz": 134228528,
      "callMode": "create"
    },
    {
      "itemId": RES_ID,
      "n": "2019-10-28 003",
      "p": {
        "a": "Осипенко ул., 19, Ростов-на-Дону, Ростовская обл., Россия",
        "c": 0,
        "cid": "",
        "d": "",
        "e": "",
        "n": "",
        "ntf": 0,
        "p": "",
        "p2": "",
        "pr": 0,
        "r": {
          "id": 1572246659,
          "i": 1,
          "m": 7313,
          "t": 0,
          "vt": 1572247271,
          "ndt": 600
        },
        "t": "",
        "tags": [],
        "uic": "",
        "ut": 600,
        "v": 0,
        "w": 500
      },
      "rp": "",
      "f": 1,
      "tf": 1572210000,
      "tt": 1572296340,
      "trt": 3600,
      "r": 100,
      "y": 47.2184028625,
      "x": 39.6506881714,
      "u": UNIT_ID,
      "ej": [],
      "tz": 134228528,
      "callMode": "create"
    },
    {
      "itemId": RES_ID,
      "n": "2019-10-28 004",
      "p": {
        "a": "Ревкомовская ул., 106А, Ростов-на-Дону, Ростовская обл., Россия",
        "c": 0,
        "cid": "",
        "d": "",
        "e": "",
        "n": "",
        "ntf": 0,
        "p": "",
        "p2": "",
        "pr": 0,
        "r": {
          "id": 1572246659,
          "i": 2,
          "m": 9379,
          "t": 0,
          "vt": 1572248122,
          "ndt": 600
        },
        "t": "",
        "tags": [],
        "uic": "",
        "ut": 600,
        "v": 0,
        "w": 500
      },
      "rp": "",
      "f": 1,
      "tf": 1572210000,
      "tt": 1572296340,
      "trt": 3600,
      "r": 100,
      "y": 47.2060432434,
      "x": 39.6537780762,
      "u": UNIT_ID,
      "ej": [],
      "tz": 134228528,
      "callMode": "create"
    },
    {
      "itemId": RES_ID,
      "n": "Тест28",
      "p": {
        "a": "Чехова пр., 62, Ростов-На-Дону, Ростовская обл., Россия",
        "aff": "",
        "c": "",
        "cid": "",
        "cm": "",
        "d": "",
        "e": "",
        "n": "",
        "ntf": 0,
        "p": "",
        "p2": "",
        "r": {
          "id": 1572246659,
          "i": 3,
          "m": 16228,
          "t": 0,
          "vt": 1572249284,
          "ndt": 600
        },
        "t": "",
        "tags": "",
        "uic": "",
        "ut": 600,
        "v": 0,
        "w": 0,
        "z": ""
      },
      "rp": "",
      "f": 13,
      "tf": 36000,
      "tt": 72000,
      "trt": 3600,
      "r": 100,
      "y": 47.2258682251,
      "x": 39.7242584229,
      "u": UNIT_ID,
      "ej": [],
      "tz": 134228528,
      "callMode": "create"
    }
  ],
  "routeId": 1572246659,
  "callMode": "create"
}

Замените на свой resource_id, и unit_id

Команда LABS