Условие:
Торговая компания «Планета» ведет отгрузки клиентам с оптового склада следующим образом. Покупатель приносит на склад накладную (выписанную в отделе продаж), в которой перечислены покупаемые им товары, для каждого товара указано количество. Работник склада берёт накладную и проходит по складу, собирая заказанный товар в тележку. После того как весь товар, указанный в накладной, собран в нужном количестве, работник возвращается с тележкой к месту выдачи. Поскольку товары для одной накладной могут располагаться в разных местах, сбор товаров по накладной обычно занимает много времени. Требуется: для оптимизации сбора товара с учётом информации о размещении товара в ячейках на складе необходимо разработать печатную форму «Ведомость сбора товара».
Склад имеет прямоугольную форму
Товар хранится в рядах, каждый из которых разбит на ячейки (количество ячеек во всех рядах одинаково). В одной ячейке может храниться только один товар (но в любом количестве). Некоторые ячейки могут быть пустыми.
Все ячейки имеют размер 1 м - 1 м, расстояние между рядами также составляет 1 м. На рисунке ячейки выделены тёмным цветом.
Подход к каждому ряду возможен только с восточной стороны, доступ к ячейке ряда — только с южной стороны. Например (см. рисунок), товар, расположенный в ячейке 4 ряда 3, можно взять только с позиции А, а кратчайший путь из позиции А в позицию Б выделен толстой линией и имеет длину 32 м.
Крестиком (X) на рисунке помечено место выдачи товара.
Необходимо разработать печатную форму «Ведомость сбора товара», в которой указана последовательность сбора товара. Печатная форма должна формироваться из накладной (кнопка «Ведомость» на форме).
Формат печатной формы:
Ведомость сборки товара
Накладная: <Номер накладной>
№ Товар Кол-во Ряд Ячейка Расстояние (м)
1 Товар 1 5 1 10 7
2 Товар 2 3 3 6 20
3 Товар 3 2 5 8 22
Путь до места выдачи: 17
Итого: 49
В базовой постановке задачи можно использовать следующие предположения:
1. Каждый товар хранится только в одной ячейке. То есть может быть так, чтобы в нескольких ячейках хранился один и тот же товар.
2. Количество хранимого товара в каждой ячейке неограниченно (т.е. заведомо превышает количество из накладной).
3. Оптимизация маршрута (т.е. нахождение маршрута наименьшей длины)
Задача решена, но пришлось затратить 4 таблицы значений, может кто-то подскажет более простой способ решения, подход к решению тут основывается на задачи Коммояжера, но подход к ячейкам можно, только с одной стороны, а это очень хорошая подсказка.
Торговая компания «Планета» ведет отгрузки клиентам с оптового склада следующим образом. Покупатель приносит на склад накладную (выписанную в отделе продаж), в которой перечислены покупаемые им товары, для каждого товара указано количество. Работник склада берёт накладную и проходит по складу, собирая заказанный товар в тележку. После того как весь товар, указанный в накладной, собран в нужном количестве, работник возвращается с тележкой к месту выдачи. Поскольку товары для одной накладной могут располагаться в разных местах, сбор товаров по накладной обычно занимает много времени. Требуется: для оптимизации сбора товара с учётом информации о размещении товара в ячейках на складе необходимо разработать печатную форму «Ведомость сбора товара».
Склад имеет прямоугольную форму
Товар хранится в рядах, каждый из которых разбит на ячейки (количество ячеек во всех рядах одинаково). В одной ячейке может храниться только один товар (но в любом количестве). Некоторые ячейки могут быть пустыми.
Все ячейки имеют размер 1 м - 1 м, расстояние между рядами также составляет 1 м. На рисунке ячейки выделены тёмным цветом.
Подход к каждому ряду возможен только с восточной стороны, доступ к ячейке ряда — только с южной стороны. Например (см. рисунок), товар, расположенный в ячейке 4 ряда 3, можно взять только с позиции А, а кратчайший путь из позиции А в позицию Б выделен толстой линией и имеет длину 32 м.
Крестиком (X) на рисунке помечено место выдачи товара.
Необходимо разработать печатную форму «Ведомость сбора товара», в которой указана последовательность сбора товара. Печатная форма должна формироваться из накладной (кнопка «Ведомость» на форме).
Формат печатной формы:
Ведомость сборки товара
Накладная: <Номер накладной>
№ Товар Кол-во Ряд Ячейка Расстояние (м)
1 Товар 1 5 1 10 7
2 Товар 2 3 3 6 20
3 Товар 3 2 5 8 22
Путь до места выдачи: 17
Итого: 49
В базовой постановке задачи можно использовать следующие предположения:
1. Каждый товар хранится только в одной ячейке. То есть может быть так, чтобы в нескольких ячейках хранился один и тот же товар.
2. Количество хранимого товара в каждой ячейке неограниченно (т.е. заведомо превышает количество из накладной).
3. Оптимизация маршрута (т.е. нахождение маршрута наименьшей длины)
Задача решена, но пришлось затратить 4 таблицы значений, может кто-то подскажет более простой способ решения, подход к решению тут основывается на задачи Коммояжера, но подход к ячейкам можно, только с одной стороны, а это очень хорошая подсказка.
По теме из базы знаний
- Потом доделаем. Глава 2, в которой ставится Интересная Задача
- Какие бизнес-проблемы можно решить менеджментом знаний
- ТРИЗ. Решение нерешаемых проблем в бизнесе
- Algo1C: Решение алгоритмических задач на базе 1С:Предприятие [Часть #4]
- Algo1C: Решение алгоритмических задач на базе 1С:Предприятие [Часть #5]
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Она к 1С отношение имеет?
Что касается задачи, то как я понял в разных ячейках может хранится одинковый товар (иначе это задача просто сортировки)? Если так, то брал бы последовательное нарашивание маршрута (графа) с учетом расстояний между точнками. В конечном итоге получил бы множество маршрутов из них выбрал бы с наименьшим весом. Сразу говорю - решение взято на лету и не притендует на правильность, может даже не получится его толком объяснить - запутаюсь :)
Есть некая таблица (матрица) в которой известно что где лежит. Находим все возможные точки начала обхода - пусть их будет несколько и запиываем расстояние до каждой точки от начала маршрута (это первый шаг).
На втором из каждой точки наодим все возможные пути продолжения (учитываем уже полученные товары) и записываем расстояние. Потом из каждйо последующей точки проболжаем маршрут и т.д.
Пока для каждого маршрута не исчерпаем все продукты.
Используется:
1. Таблица список продктов
2. Матрица взаимного расположения продуктов с весами расстояний между ними (нужно подумать про оценку веса для каждой ячейки - наверно не сложная математика). Это тоже таблица значений
3. Таблица (или дерево) маршрутов с удельным весом.
Получилось три (наверно еще одно потребуется для вывода - хотя не уверен).
Еще раз говорю это просто попытка решения "на вскидку". За основу взял алгоритм поиска замкнутых циклов который в свое время делал :)
Что касается задачи, то как я понял в разных ячейках может хранится одинковый товар (иначе это задача просто сортировки)? Если так, то брал бы последовательное нарашивание маршрута (графа) с учетом расстояний между точнками. В конечном итоге получил бы множество маршрутов из них выбрал бы с наименьшим весом. Сразу говорю - решение взято на лету и не притендует на правильность, может даже не получится его толком объяснить - запутаюсь :)
Есть некая таблица (матрица) в которой известно что где лежит. Находим все возможные точки начала обхода - пусть их будет несколько и запиываем расстояние до каждой точки от начала маршрута (это первый шаг).
На втором из каждой точки наодим все возможные пути продолжения (учитываем уже полученные товары) и записываем расстояние. Потом из каждйо последующей точки проболжаем маршрут и т.д.
Пока для каждого маршрута не исчерпаем все продукты.
Используется:
1. Таблица список продктов
2. Матрица взаимного расположения продуктов с весами расстояний между ними (нужно подумать про оценку веса для каждой ячейки - наверно не сложная математика). Это тоже таблица значений
3. Таблица (или дерево) маршрутов с удельным весом.
Получилось три (наверно еще одно потребуется для вывода - хотя не уверен).
Еще раз говорю это просто попытка решения "на вскидку". За основу взял алгоритм поиска замкнутых циклов который в свое время делал :)
(8) Ягг
Один товар может храниться в разных ячейках в любых количествах.
Ты хочешь найти все локальные ( не оптимальные) решения и среди них выбрать оптимальный, а если локальных будет около 2000 решений, то компьютер может задуматься надолго...
Я же предлагаю, сразу начать строить оптимальный и он в любом случае будет оптимальным (хотя да - там у меня много условий и 4-ре таблицы значений).
Один товар может храниться в разных ячейках в любых количествах.
Ты хочешь найти все локальные ( не оптимальные) решения и среди них выбрать оптимальный, а если локальных будет около 2000 решений, то компьютер может задуматься надолго...
Я же предлагаю, сразу начать строить оптимальный и он в любом случае будет оптимальным (хотя да - там у меня много условий и 4-ре таблицы значений).
(9) Shining ninja, Согласен что идет излишний перебор, но ведь само потняие "оптимальный" предбплогает некую статистику - выбор лучшего из возможных. Следовательно, надо же наработать как-то эту статистику (иначе где гарантия что ты выбрал лучший путь?)
Да и не так долго задумается компьютер (все расчеты в рамках оперативки и т.д.).
И потом совсем не обязательно перебирать все возможные варианты. Можно подумать про правила при кторых дальнейшее развитие маршрута бессмысленно (например если он получается блинее чем тупой проход вдоль всех стендов, или предпологает "возвращение" назад).
Хотя, только высказываю свое мнение и только один из возможных подходов.
Да и не так долго задумается компьютер (все расчеты в рамках оперативки и т.д.).
И потом совсем не обязательно перебирать все возможные варианты. Можно подумать про правила при кторых дальнейшее развитие маршрута бессмысленно (например если он получается блинее чем тупой проход вдоль всех стендов, или предпологает "возвращение" назад).
Хотя, только высказываю свое мнение и только один из возможных подходов.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот