---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://yandex.kz/routing/doc/en/vrp/presets.md
  - https://yandex.kz/routing/doc/kk/vrp/presets.md
  - https://yandex.kz/routing/doc/ru/vrp/presets.md
  - https://yandex.kz/routing/doc/tr/vrp/presets.md
  - href: ru/vrp/presets.md
    type: text/markdown
    title: Markdown version
  - href: llms.txt
    type: text/markdown
    title: llms.txt
title: Яндекс Маршрутизация — пресеты
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.kz/routing/doc/ru/llms.txt


# Использование пресетов

Пресет — это набор настроек для реализации определенного сценария или стратегии планирования. Пресеты хранятся на стороне Яндекс Маршрутизации.

Пресет содержит параметры и их значения в формате JSON. В пресетах используются те же [атрибуты и опции](https://yandex.kz/routing/doc/ru/vrp/attribute-and-option-guide_index-page.md), что и в запросах API. В запросе API можно указать имена (уникальные идентификаторы) применяемых пресетов. При выполнении такого запроса настройки из указанных пресетов встраиваются в запрос (см. [Особенности включения пресетов в запрос](#include-preset)).

Преимущества использования пресетов:

- С помощью пресетов можно задавать разные сценарии планирования (например, для условий высокого или низкого спроса, для разных складов, для будней или выходных дней).
- Пресеты могут использоваться многократно, что ускоряет и облегчает [составление запросов API](https://yandex.kz/routing/doc/ru/vrp/add-task.md) для планирования маршрутов.
- При реализации [интеграции](https://yandex.kz/routing/doc/ru/vrp/integration-variants.md) можно указать в поле `preset_id` имя пресета, а в дальнейшем добавлять в этот пресет новые параметры без изменения настроек самой интеграции. 


#|
|| ![](_images/video-icon.png) | Пресеты планирования. Создание и использование пресетов.

{% cut "Посмотреть видео" %}

@[rutube](https://rutube.ru/play/embed/1bcb510701be4e60794edc94316bba5c)

{% endcut %}

||
|#


Каждый пресет относится к одному из типов:

- `depot` — настройки склада,
- `location` — настройки заказа,
- `vehicle` — настройки курьера или автомобиля,
- `vehicle-shift` — настройки смены курьера,
- `options` — глобальные опции.

Пресет определенного типа может быть включен только в соответствующее поле запроса API. Если поле запроса API является массивом и содержит несколько элементов, каждый элемент может содержать обращение к пресету. При этом объект может содержать обращение только к одному пресету.

{% cut "Структура запроса API с пресетами" %}

```json
{
   "depots": [
        {
            "id": "depot1",
            "preset_id": "depot_preset_1",
            ...
        },
    ],
    "locations": [
        {
             "id": "order1",
             "preset_id": "location_preset_1",
             ...
        },
        {
             "id": "order2",
             "preset_id": "location_preset_2",
             ...
        },
        ...
    ],
    "vehicles": [
        {
            "id": "vehicle1",
             "preset_id": "vehicle_preset_1",
             ...
             "shifts": [
                  {
                      "id": "0",
                      "preset_id": "vehicle-shift_preset_fo",
                       ...
                  },
                  ...
              ],
        },
        ...
    ],
    "options": {
        "preset_id": "options_preset_id",
        ...
     }
}
```

{% endcut %}

{% cut "Поля, которые нельзя использовать в пресетах" %}

* **depot**:
    * `address`
    * `description`
    * `id`
    * `point`
    * `ref`
    * `title`
* **location**:
    * `address`
    * `client_id`
    * `comments`
    * `delivery_to`
    * `delivery_to_any`
    * `depot_id`
    * `description`
    * `id`
    * `phone`
    * `pickup_from_any`
    * `point`
    * `ref`
    * `title`
    * `type`
* **vehicle**:
    * `depot_id`
    * `ending_depot_id`
    * `finish_at`
    * `fixed_planned_route`
    * `global_proximity_attraction_point`
    * `id`
    * `imei`
    * `fixed_work_breaks`
    * `middle_depot_id`
    * `phone`
    * `planned_route`
    * `ref`
    * `shifts`
    * `start_at`
    * `starting_depot_id`
    * `visited_locations`
* **vehicle-shift**:
	* `id`
* **options**:
	* `date`
    * `location_groups`

{% endcut %}

{% note info %}

При получении запроса API, содержащего обращение к пресету, алгоритм подставляет значения параметров из пресета в текст запроса, а само обращение удаляет.  В итоговом запросе, который обрабатывает алгоритм, нет используемых имен пресетов.

{% endnote %}

## Публичные пресеты {#presets-public}

Публичные пресеты могут использоваться всеми компаниями, но недоступны для редактирования.

Публичные пресеты состоят из нескольких частей, которые имеют одинаковое название, но относятся к  разным типам — для объектов `depots`, `locations`, `vehicles`, `vehicles.shifts`, `options`. Все части пресета должны использоваться совместно, по отдельности использовать их неэффективно.

Публичные пресеты разработаны для определенных сценариев. Их настройки подобраны на большом количестве задач и позволяют оптимизировать решение в большинстве случаев. Это не исключает, что для конкретной задачи возможно подобрать параметры, которые позволят еще улучшить результат.

В настоящее время в сервисе есть публичный пресет `public_minimize_mileage`, настройки в нем ориентированы на минимизацию пробега.

## Особенности включения пресетов в запрос {#include-preset}

Если один и тот же параметр определен и в пресете, и в запросе пользователя, значение от пользователя считается приоритетным. При этом параметр используется целиком в виде единой структуры со всеми вложенными полями.

Например, если в запросе пользователя передается параметр `penalty.early` и при этом используется пресет, в котором определен параметр `penalty.late`, в итоговый запрос будет включен параметр `penalty` от пользователя, а все вложенные поля `penalty` из пресета будут аннулированы.

## Пример использования пресетов {#example}

В примере ниже курьер развозит 4 заказа. В теле запроса прописаны все необходимые параметры.

{% cut "Запрос без пресетов" %}

```json
{
    "depots": [
        {
            "id": "Depot",
            "point": {
                "lat": 55.733974,
                "lon": 37.587093
            },
            "time_window": "07:00:00-22:00:00",
            "penalty": {
                "out_of_time": {
                    "fixed": 0,
                    "minute": 200
                }
            },
            "hard_window": false
        }
    ],
    "locations": [
        {
            "id": "Order 1",
            "point": {
                "lat": 55.790514,
                "lon": 37.660161
            },
            "shipment_size": {
                "weight_kg": 19
            },
            "time_window": "09:00:00-18:00:00",
            "title": "Client 1",
            "penalty": {
                "out_of_time": {
                    "fixed": 0,
                    "minute": 200
                }
            },
            "hard_window": false
        },
        {
            "id": "Order 2",
            "point": {
                "lat": 55.798874,
                "lon": 37.612227
            },
            "shipment_size": {
                "weight_kg": 61
            },
            "time_window": "09:00:00-18:00:00",
            "title": "Client 2",
            "penalty": {
                "out_of_time": {
                    "fixed": 0,
                    "minute": 200
                }
            },
            "hard_window": false
        },
        {
            "id": "Order 3",
            "point": {
                "lat": 55.734126,
                "lon": 37.671705
            },
            "shipment_size": {
                "weight_kg": 18
            },
            "time_window": "09:00:00-18:00:00",
            "title": "Client 3",
            "penalty": {
                "out_of_time": {
                    "fixed": 0,
                    "minute": 200
                }
            },
            "hard_window": false
        },
        {
            "id": "Order 4",
            "point": {
                "lat": 55.662039,
                "lon": 37.556963
            },
            "shipment_size": {
                "weight_kg": 30
            },
            "time_window": "09:00:00-18:00:00",
            "title": "Client 4",
            "penalty": {
                "out_of_time": {
                    "fixed": 0,
                    "minute": 200
                }
            },
            "hard_window": false
        }
    ],
    "vehicles": [
        {
            "capacity": {
                "weight_kg": 800
            },
            "id": "Courier 1",
            "return_to_depot": false,
            "cost": {
                "km": 60,
                "fixed": 1000
            },
            "shifts": [
                {
                    "id": "0",
                    "time_window": "08:00:00-16:00:00",
                    "penalty": {
                        "out_of_time": {
                            "fixed": 0,
                            "minute": 200
                        }
                    },
                    "hard_window": false
                }
            ]
        }
    ],
    "options": {
        "time_zone": 3,
        "date": "2023-04-28",
        "quality": "normal",
        "proximity_factor": 0.1,
        "post_optimization": true,
        "global_proximity_factor": 0.2
    }
}
```

{% endcut %}

В публичном пресете `public_minimize_mileage` заданы специально подобранные значения стоимости, штрафов, опции кучности и некоторые другие настройки.

{% cut "Настройки в пресете public_minimize_mileage" %}

* **depot**:

    ```json
    "body": {
        "penalty": {
            "out_of_time": {
                "fixed": 0,
                "minute": 200
            }
        }
     ```

* **location**:

    ```json
    "body": {
        "penalty": {
            "out_of_time": {
                "fixed": 0,
                "minute": 200
                }
            },
        "hard_window": false
    }
    ```

* **vehicle**:

    ```json
    "body": {
        "cost": {
            "km": 60,
            "fixed": 1000
        }
    }
    ```

* **vehicle-shift**:

    ```json
    "body": {
        "penalty": {
            "out_of_time": {
                "fixed": 0,
                "minute": 200
            }
        }
    }
    ```

* **options**:

    ```json
    "body": {
        "quality": "normal",
        "proximity_factor": 0.1,
        "post_optimization": true,
        "global_proximity_factor": 0.2
    }
    ```

{% endcut %}

Если в запросе использовать пресет `public_minimize_mileage`, тело запроса сократится.

{% cut "Запрос с пресетом" %}

```json
{
    "depots": [
        {
            "id": "Depot",
            "preset_id": "public_minimize_mileage",
            "point": {
                "lat": 55.733974,
                "lon": 37.587093
            },
            "time_window": "07:00:00-22:00:00"
        }
    ],
    "locations": [
        {
            "id": "Order 1",
            "preset_id": "public_minimize_mileage",
            "point": {
                "lat": 55.790514,
                "lon": 37.660161
            },
            "shipment_size": {
                "weight_kg": 19
            },
            "time_window": "09:00:00-18:00:00",
            "title": "Client 1"
        },
        {
            "id": "Order 2",
            "preset_id": "public_minimize_mileage",
            "point": {
                "lat": 55.798874,
                "lon": 37.612227
            },
            "shipment_size": {
                "weight_kg": 61
            },
            "time_window": "09:00:00-18:00:00",
            "title": "Client 2"
        },
        {
            "id": "Order 3",
            "preset_id": "public_minimize_mileage",
            "point": {
                "lat": 55.734126,
                "lon": 37.671705
            },
            "shipment_size": {
                "weight_kg": 18
            },
            "time_window": "09:00:00-18:00:00",
            "title": "Client 3"
        },
        {
            "id": "Order 4",
            "preset_id": "public_minimize_mileage",
            "point": {
                "lat": 55.662039,
                "lon": 37.556963
            },
            "shipment_size": {
                "weight_kg": 30
            },
            "time_window": "09:00:00-18:00:00",
            "title": "Client 4"
        }
    ],
    "vehicles": [
        {
            "capacity": {
                "weight_kg": 800
            },
            "id": "Courier 1",
            "preset_id": "public_minimize_mileage",
            "return_to_depot": false,
            "shifts": [
                {
                    "id": "0",
                    "preset_id": "public_minimize_mileage",
                    "time_window": "08:00:00-16:00:00"
                }
            ]
        }
    ],
    "options": {
        "preset_id": "public_minimize_mileage",
        "time_zone": 3,
        "date": "2023-04-28"
    }
}
```

{% endcut %}

## Как создать пресет {#create-preset}

Работать с пресетами можно через [интерфейс](https://yandex.kz/routing/doc/ru/vrp/interface-presets.md) или с помощью [методов API](https://yandex.ru/routing/doc/ru/vrp/redoc/index.html#tag/presets).

{% note info %}

Название должно быть уникальным для пресетов одного типа. Оно не может начинаться с `public_` и содержать символ запятой.

{% endnote %}

Если у вас возникли проблемы при создании или использовании пресетов, обратитесь в службу поддержки.

## Использование публичных пресетов {#how}

Чтобы использовать пресеты из справочника и публичные пресеты, отправьте запрос к ресурсу [mvrp с OAuth авторизацией](https://yandex.ru/routing/doc/ru/vrp/redoc/index.html#operation/addsATask):

<!-- source: ru/vrp/_includes/how-to-use.md -->
<!-- source: ru/vrp/_includes/example-oauth-token.md -->
```bash
curl -H "Content-Type: application/json" -H "Authorization: OAuth <ваш-токен>" -X POST -d <тело-запроса> https://courier.yandex.ru/api/v1/vrs/add/mvrp?lang=ru
```
<!-- endsource: ru/vrp/_includes/example-oauth-token.md -->

В заголовке `Authorization: OAuth <ваш-токен>` вместо `<ваш-токен>` укажите [OAuth-токен](https://yandex.kz/routing/doc/ru/delivery/quickstart/register.md), полученный для работы с Мониторингом.

{% note warning %}

Путь в запросе с авторизацией (с OAuth-токеном) отличается от пути, указанного в [спецификации](https://yandex.ru/routing/doc/ru/vrp/redoc/index.html#operation/addMVRPTask) (с API-ключом).

{% endnote %}
<!-- endsource: ru/vrp/_includes/how-to-use.md -->

**Пример 1**

В задаче 20 заказов и 2 курьера, публичные пресеты не используются.

В результате планирования длина маршрута составила 85 км.

[Пример Excel](https://doc-static.yandex.net/src/dev/routing/doc-examples/without-preset.xlsx) ⋅ [Запрос API (JSON)](https://courier.yandex.ru/vrs/api/v1/log/request/597af465-7c80ec4-cee7664-dac3c7fb) ⋅ [Ответ API](https://courier.yandex.ru/vrs/api/v1/result/597af465-7c80ec4-cee7664-dac3c7fb) ⋅  [Открыть на карте](https://courier.yandex.ru/mvrp-map#597af465-7c80ec4-cee7664-dac3c7fb)

**Пример 2**

То же, что и в примере 1, но для минимизации пробега используется публичный пресет `public_minimize_mileage`.

В запросе, который обрабатывает алгоритм планирования и который можно посмотреть по ссылке ниже, имена пресетов из набора `public_minimize_mileage` заменены на содержимое этих пресетов. Содержимое пресетов из набора `public_minimize_mileage` см. в разделе [Пример использования пресетов](#example).

В результате планирования длина маршрута составила 79 км.

[Пример Excel](https://doc-static.yandex.net/src/dev/routing/doc-examples/with-preset.xlsx) ⋅ [Запрос API (JSON)](https://courier.yandex.ru/vrs/api/v1/log/request/cffa61e5-3c83d4c5-618ff6ec-b2313fea) ⋅ [Ответ API](https://courier.yandex.ru/vrs/api/v1/result/cffa61e5-3c83d4c5-618ff6ec-b2313fea) ⋅  [Открыть на карте](https://courier.yandex.ru/mvrp-map#cffa61e5-3c83d4c5-618ff6ec-b2313fea)

<!-- source: ru/vrp/_includes/feedback.md -->
<a href="feedback">
  <span class="button">Написать в службу поддержки</span>
</a>




<!-- source: ru/_includes/neuroexpert.md -->



<!-- endsource: ru/_includes/neuroexpert.md -->
<!-- endsource: ru/vrp/_includes/feedback.md -->
