За последние 24 часа нас посетили 21596 программистов и 1018 роботов. Сейчас ищут 687 программистов ...

Помогите решить задачку

Тема в разделе "Сделайте за меня", создана пользователем Zexez, 1 сен 2021.

Метки:
  1. Zexez

    Zexez Новичок

    С нами с:
    1 сен 2021
    Сообщения:
    5
    Симпатии:
    0
    Задача:
    Одновременно поступают 8 заказа (по 2 заказа в каждой зоне и 2 заказа, которые находятся в разных зонах)
    Необходимо распределить эти заказы, учитывая зоны и загруженность курьеров (не больше 3 заказов).

    Зона1
    Курьер №1 имеет 2 заказа
    Курьер №2 имеет 3 заказа
    Курьер №3 имеет 1 заказ

    Зона2
    Курьер №1 имеет 3 заказа
    Курьер №2 имеет 3 заказа
    Курьер №3 имеет 1 заказ

    Зона3
    Курьер №1 имеет 2 заказа
    Курьер №2 имеет 3 заказа
    Курьер №3 имеет 2 заказ
     
  2. roboformation

    roboformation Активный пользователь

    С нами с:
    30 авг 2020
    Сообщения:
    162
    Симпатии:
    40
    Как информацию о курьерах получаем? В виде вот этой строки:
    ?
    --- Добавлено ---
    Ещё один вопрос: какие данные считать фиксированными, а какие - переменными?
     
  3. Zexez

    Zexez Новичок

    С нами с:
    1 сен 2021
    Сообщения:
    5
    Симпатии:
    0
    ПО сути это все что я знаю о курьерах) БД и заполнил ее: upload_2021-9-1_17-52-33.png . Насчет фиксированных данных не очень понял. Но наверное количество заказов которые сейчас имеет курьер фиксированное, но количество поступающих заказов может меняться.
     

    Вложения:

    • 333.png
      333.png
      Размер файла:
      34,2 КБ
      Просмотров:
      1
  4. roboformation

    roboformation Активный пользователь

    С нами с:
    30 авг 2020
    Сообщения:
    162
    Симпатии:
    40
    Зря удалил прошлое сообщение своё, надо было просто уточнить, поэтому напишу еще раз...
    При условии, что одновременно поступает "n" заказов, как исчисляется кол-во обязательных заказов для зоны и кол-во "рассеянных" заказов?
    Могу предположить: floor(n/3) -- кол-во обязательных заказов для зоны, n - floor(n/3) -- кол-во "рассеянных" заказов?
     
  5. Zexez

    Zexez Новичок

    С нами с:
    1 сен 2021
    Сообщения:
    5
    Симпатии:
    0
    Я думаю, не надо углубляться в возможностях изменения условий, я бы просто хотел узнать логику решения конкретно этих данных
     
  6. roboformation

    roboformation Активный пользователь

    С нами с:
    30 авг 2020
    Сообщения:
    162
    Симпатии:
    40
    По конкретно этим данным у меня также есть вопрос...при моём понимании задачи распределить заказы не получится:
    Нагрузка (по умолчанию):
    Зона 1: 6/9
    Зона 2: 7/9
    Зона 3: 7/9
    Нагрузка (после обязательных 2 заказов на каждую зону):
    Зона 1: 8/9
    Зона 2: 9/9
    Зона 3: 9/9
    Куда тогда девать ещё 1 заказ? И как на самом деле надо это понимать?
     
  7. Zexez

    Zexez Новичок

    С нами с:
    1 сен 2021
    Сообщения:
    5
    Симпатии:
    0
    Ах, да вы правы, прошу меня простить, я идиот, забыл упомянуть, о том, что есть еще один курьер в транзите, у него 0 заказов, и он может брать заказ с любой зоны, но он так сказать "запасной" и его загружать в последнюю очередь
     
  8. roboformation

    roboformation Активный пользователь

    С нами с:
    30 авг 2020
    Сообщения:
    162
    Симпатии:
    40
    Тогда мы можем, узнав, что суммарная нагрузка трёх зон составляет 20/27, отдать 1 заказ запасному и далее распределять заказы для 3-ёх зон по простой схеме: при сдаче обязательных заказов курьерам смотрим на нагрузку каждого курьера в каждой зоне, отдаём минимально нагруженному/нагруженным заказы: cначала отдаём курьерам с одним заказом, потом - с двумя заказами. При "рассеянной" раздаче, зная, например, что в 1-ой зоне по дефолту была меньшая нагрузка, отдать курьеру из 1-ой зоны последний заказ. Это всё конкретно для этих данных
     
  9. Zexez

    Zexez Новичок

    С нами с:
    1 сен 2021
    Сообщения:
    5
    Симпатии:
    0
    План такой, мне в бд приходит заказ, в поле ид_курьера содержится Null, но есть регион, и делаю сравнения по региону к которому прикреплен заказ и прикреплены курьеры, потом прохожусь по этим курьерам и смотрю у кого сколько заказов если заказов больше 3 то курьер отметается, если все курьеры заняты, тогда отправляю заказ на транзитного курьера. Вот так звучит нормально?) Просто я бы хотел на всякий транзитному курьеру отправлять в последнюю очередь
    [​IMG]
     
  10. roboformation

    roboformation Активный пользователь

    С нами с:
    30 авг 2020
    Сообщения:
    162
    Симпатии:
    40
    Для конкретно этих данных вообще пофиг, как вы будете отдавать заказы, всё равно всё заполнится