|
Заказы и отгрузка | ☑ | ||
---|---|---|---|---|
0
neomarat
01.06.12
✎
17:45
|
Теоретическая задача:
Есть Н-ое количество заказов. Есть какое-то количество номенклатуры на складе. Как из имеющегося количества на складе скомплектовать заказы так, чтобы отгрузить максимально возможное их количество. Т.е. если в заказе не хватает хоть одной позиции - он не может быть отгружен. Кто-то уже наверняка занимался такой задачей. На ум приходит самый простой путь - берем заказы - выстраиваем их по количеству от большего к меньшему и пытаемся наполнить - если не хватает - выкидываем. Но такой подход - не оптимален - это понятно. Какие еще есть предложения? |
|||
1
neomarat
01.06.12
✎
17:45
|
+ (0) Сумма заказов - значения не имеет
|
|||
2
Нуф-Нуф
01.06.12
✎
17:46
|
посади узбека-оператора. пусть анализирует
|
|||
3
mikecool
01.06.12
✎
17:46
|
теорию графов тебе в руки
|
|||
4
shuhard
01.06.12
✎
17:48
|
(0)v8: OFF: Кто там утверждал, что только SAP для международной отчетности?
в Сапе это уже встроено |
|||
5
neomarat
01.06.12
✎
17:49
|
(4) прикольно - дайте два!
|
|||
6
neomarat
01.06.12
✎
17:49
|
(2) узбек не справился ))
|
|||
7
spu79
01.06.12
✎
17:50
|
"чтобы отгрузить максимально возможное их количество." - тогда уж начинай анализ с самого маленького
|
|||
8
spu79
01.06.12
✎
17:50
|
(6) - тогда посадить такжика
|
|||
9
neomarat
01.06.12
✎
17:50
|
(3) жесть - всю читать? Помню толщину учебника - что внутри не помню
|
|||
10
Irek-kazan
01.06.12
✎
17:51
|
может для начала отбросить заказы которые изначально не подходят по кол-ву?
|
|||
11
Irek-kazan
01.06.12
✎
17:52
|
может так лучше сумма(цена*кол-во) -это вес, и отгружать сначала с максимальным весом?
|
|||
12
neomarat
01.06.12
✎
17:52
|
(10) - отличная мысль, спасибо
|
|||
13
neomarat
01.06.12
✎
17:53
|
(11) Цена пофиг
|
|||
14
Alex S D
01.06.12
✎
17:54
|
бардак у вас какой-то, обычно заказ должен быть отгружен клиенту в строго определенный срок
|
|||
15
Irek-kazan
01.06.12
✎
17:57
|
на ум только приходит перебор: создаются массивы заказ(кол-во по номенкл.1, кол-во по номенк.2, ...)
и массив склад(кол-во по номенкл.1, кол-во по номенк.2, ...) и сидишь тупо перебераешь вычитанием из массива склад массивов заказ |
|||
16
neomarat
01.06.12
✎
17:57
|
(14) не мы укладываемся в сроки полюбому - там один контракт - просто номенклатуры больше чем дофига и она разбита на заказы от дочек предприятия, но номенклатура изготавливается поставщиком вразнобой. Нет смысла тащить на свой склад номенклатуру, которую пока не сможем отгрузить.
|
|||
17
Irek-kazan
01.06.12
✎
17:57
|
(15) но это как-то по тупому
|
|||
18
neomarat
01.06.12
✎
17:58
|
(15) решений может быть несколько при таком подходе - и не факт что первый перебор даст оптимальное решение
|
|||
19
Irek-kazan
01.06.12
✎
18:01
|
подай сюда v8: Russian Code Cup, вторая квалификация на второй этап
|
|||
20
Mickeleangelo
01.06.12
✎
18:45
|
1. Отобрать теоретически отгружаемые заказы (как советуют в (10))
2. Отсортировать их по приоритетам (кол-во, кол-во строк, сумма, важность клиента, срок выполнения, давность, комплексная оценка приоритета с коэффициентами) 3. Перебирать варианты рекурсивно в глубину или в ширину: 1, 1+2, 1+2+3, 1+2+4, 1+3, 1+3+4, 2+3, 2+4 … 4. Запоминать лучший вариант (по сумме приоритетов включенных заказов) 5. Остановиться по одному или нескольким из критериев: кол-во итераций, время подбора, % отгружаемых заказов (по количеству или приоритетам). Или полный перебор. 6. Если был поиск в ширину, то добить лучший вариант оставшимися заказами, пройдя по ним один раз. ИМХО, для бизнеса и с учетом производительности 1С в таких задачах не надо искать идеальный вариант, а надо относительно быстро подбирать хороший вариант, приближенный к оптимальному, плюс давать одному умному менеджеру возможность ручной корректировки. |
|||
21
ILM
гуру
01.06.12
✎
19:12
|
(0) Простите, но у вас хромает логика в постановке задачи.
[Как из имеющегося количества на складе скомплектовать заказы так, чтобы отгрузить максимально возможное их количество. Т.е. если в заказе не хватает хоть одной позиции - он не может быть отгружен.] Во-первых, каждый заказ имеет разный уровень пользы, которую он наносит клиенту и компании. Во-вторых, максимально освобождая склад, вы теряете продажи, за счет того что отсутствуют позиции для продажи. Например, некоторый комплект можно продать дороже, чем что-то одно из комплекта, так как клиенту нужен комплект. В-третьих, во главу угла поставлены поблемы склад и доставки, а не клиента. В-четвертых, вы принимаете заказы, которые не можете выполнить. Например, одна и таже позиция находится в разных заказов. У одного клиента общий заказ на 10 тыс, у другого на 1 тыс. Но первому не хватает чего-то одного, а у второо есть все в наличие. По логике вы будете отгружать второму. А важнее, все-таки первому. И тд и тп. А ваша задача решается системой линейных уровнений, с максимумом веса заказа. Но вот за финансовый результат вашей компании, через один-два года работы по вашему алгоритму, я не поручусь. Даже поочередное чередование заказовна выполненение сначала четные, потом нечетные. Даст ошибок в несколько раз меньше, так как будет в 50% случаев давать веное решение. Удачи |
|||
22
neomarat
01.06.12
✎
20:07
|
(21) все нормально с логикой.
Во-первых - это один большой контракт для одного контрагента, но имеет много разных заказов для подразделений контрагента. И контрагенту без разницы в какой последовательности он получит эти заказы - главное заказ должен быть укомплектован полностью. Во-вторых - эта номенклатура идет только этому контрагенту иее нельзя продать другим. В-четвертых - мы принимаем этот заказ на срок, который будет соблюден, просто поставщик делает эту номенклатуру в соответствии со своими мощностями и к сроку все будет готово, но забирать ее мы можем как захотим. Но все же отгружать заказы надо не в последний момент, а плавно. Поэтому главное здесь - не увеличить стоимость замораживаемых денег и аренду складов из-за заказов, которые мы не можем отгрузить. Как-то так. |
|||
23
neomarat
01.06.12
✎
20:10
|
(20) Единственный минус - вариантов будет так много, что 1С задумается на год.
|
|||
24
neomarat
01.06.12
✎
20:11
|
(21) какая система линейных уранений? подтолкните куда копать?
|
|||
25
ILM
гуру
01.06.12
✎
20:13
|
Тогда простая схема. Отгружайте первый укомплектованный заказ. Затем второй и т.д. Вы отгружаете заказы по мере ввода. Самый старый заказ должен быть выполнен первым потом следующий.
|
|||
26
ILM
гуру
01.06.12
✎
20:14
|
Никакого СЛАУ не надо.
|
|||
27
ILM
гуру
01.06.12
✎
20:17
|
Похоже на госзаказ. Все равно независимо от отдельных заказов, важно выполнение всего контракта. Поэтому отгружайте комлекты по мере готовности. У вас будет возможность выдать те заказы, которые обеспечены, потом те которым не хватает малой части товара, потом те кому не хватает больше и до тех которых совсем нет в наличии. Постепенно выполняя заказ за заказом, вы фокусируетесь в одном заказе. Вам не приходится менять приоритет заказов.
|
|||
28
neomarat
01.06.12
✎
20:24
|
(27) но тут еще важно отгрузить как можно больше (по количеству номенклатуры) поскольку оплата происходит пропорционально отгруженному количеству. Но только полностью укомплектованных заказов. В том и вся соль.
|
|||
29
ILM
гуру
01.06.12
✎
20:26
|
Уже писал [Отгружайте первый укомплектованный заказ. Затем второй и т.д.]
|
|||
30
neomarat
01.06.12
✎
20:28
|
(29) например, укомплектовали первый, в нем есть номенклатура1 и он состоит из 5 позиций.
Далее, пытаемся отгрузить второй заказ, в нем тоже есть номенклатура1 и он состоит из 25 позиций, но номенклатуры1 больше нет, поскольку мы ее отгрузили в первом, а остальные позиции есть. На лицо проблема. |
|||
31
dklushin
01.06.12
✎
23:40
|
предлагаю алгоритм (сильно не пинать, математики)
Расчитать для каждого заказа что-то типа выгодности формирования. Выгода = (ВесТовара1ВЗаказе/ВесТовара1НаСкладе + ВесТовара2ВЗаказе/ВесТовара2НаСкладе + ... + ВесТовараNВЗаказе/ВесТовараNНаСкладе) Где ВесТовараNВЗаказе = КоличествоТовараNВЗаказе/ОбщееКоличествоВсехТоваровВЗаказе ВесТовараNНаСкладе = КоличествоТовараNНаСкладе/ОбщееКоличествоВсехТоваровНаСкладе Сформировать заказ, потом для остатков заказов и товаров повторить операцию. То есть идея такова, что если в заказе преобладают над другими в процентном отношении товары, которых дохрена на складе, то его формировать первым. Потом считать все соотношения заново и так далее.. интересно было бы протестить что получится на реальных заказах.. |
|||
32
dklushin
02.06.12
✎
01:00
|
но метод который будет 100% работать это перебор, если заранее грамонто сформировать таблицы с ид-шниками документов и количеством товара на складе и требуемого, то будет вполне терпимо работать, ну конечно изначально выкинуть сначала те заказы, которые при любом раскладе не формируются.
|
|||
33
neomarat
02.06.12
✎
01:50
|
(31)Дима привет.
Алгоритм интересный, но первый же придуманный пример дает сбой в этом алгоритме Заказ 1: Ном1 1шт в заказе - 5 шт на складе Ном2 2шт в заказе - 3 шт на складе Заказ 2: Ном1 5шт в заказе - 5 шт на складе Формула дает, что выгоднее отгрузить первый заказ (коэф - 2,28) против второго (коэф 2). На самом деле выгоднее отгрузить второй |
|||
34
neomarat
02.06.12
✎
01:52
|
(32) время работы перебора к сожалению будет расти экспотенциально с ростом количеству заказов и номенклатуры.
|
|||
35
neomarat
02.06.12
✎
01:53
|
Теперь понимаю, почему в УПП нет вменяемой системы загрузки оборудования
|
|||
36
hhhh
02.06.12
✎
01:58
|
(32) всё-таки это какое-то дебильное требование. Нужно отгружать не максимальное количество, а делать равномерные отгрузки в течение месяца.
1. Допустим, если в один день вы отгружаете 100 позиций, в другой 10, а в третретий опять 100. Как вы будете плпнировать транспорт в этом случае? Грузчики один день будут в мыле, другой день простаивают. И не только у вас, и у контрагента будет тоже полнейший бардак. Лучше отгружать равномерно: 3 раза по 70. |
|||
37
neomarat
02.06.12
✎
02:04
|
(36) нет - это не лучшее решение.
Во-первых - для этого придется снимать складские площади (дополнительные деньги) Во-вторых - морозить деньги на несколько дней (а если они лежат на депозите в это время - то зарабатывают, а поскольку суммы огромные, сами понимаете) В-третьих - да пофиг на грузчиков - быть в мыле это их работа, а транспорт у нас свой. |
|||
38
neomarat
02.06.12
✎
02:06
|
(36) плюс в чем бардак? Накладные есть - кладовщик собирает, грузчики грузят, машины возят. Чем это отличается от обычной работы?
|
|||
39
hhhh
02.06.12
✎
02:17
|
(38) машины будут простаивать, на складе не пойми чего и в каком углу чего лежит, если вы в последний момент будете принимать решение об отгрузке и в постоянном аврале со всего склада собирать товар. Это приведет к неэффективному использованию складских площадей и на огромные суммы.
|
|||
40
neomarat
02.06.12
✎
02:30
|
(39)нет - не правильно.
Формируя эти заказы покупателей, мы по сути принимаем решение что в итоге заберем у поставщиков, чтобы не затаривать наши склады - так что времени вагон, а не с колес все. Пока машины стоят - кушать не просят - это своего рода экономия и лучше чем гонять их полупустыми. Когда склад затарен - и все наваливается уже не пойми куда - вот тогда вероятность ошибки действительно растет, тут же наоборот свободные площади и все будет лежать на местах, хотя и не долго. |
|||
41
ILM
гуру
02.06.12
✎
08:45
|
Ну тогда отсортируйте сначала заказы по количеству товаров.
А в целом решал подобную задачу для запуска заказов на производство, которые обеспечены материалами. Только дороговато это было... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |