|
|
|
Рассчет доступного товара при многоуровневом BOM.
|
|||
|---|---|---|---|
|
#18+
Drac013, ну так бы и сказал ничего там оптимального не будет, вообще ничего кроме фигни не будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 18:04 |
|
||
|
Рассчет доступного товара при многоуровневом BOM.
|
|||
|---|---|---|---|
|
#18+
Drac013ViPRos, Это не важно. Система, где есть совсем урезанное производство. Скорее даже сборка. И захотели в ней бантиков. Для решения большинства бантиков необходимо реализовать этот алгоритм. Сейчас связь простая: у элемента указаны входящие в него детали. У них тоже могут быть указаны свои детали и так далее. Рассчитывать на лету, боюсь, будет накладно, но в некоторых ситуациях придется. Например, собираем ПК. По умолчанию, в нем один диск. Но конкретный заказ подразумевает 2 диска. Тогда в документе к материалам по умолчанию добавляем еще один HDD и пересчитываем возможности сборки. Пока вот изучаю литературу по теме. Представьте все в виде линейного списка, где каждая строка, образно, знает свой уровень вложенности и последовательность производства внутри уровня. Не увлекайтесь сильно математикой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 18:29 |
|
||
|
Рассчет доступного товара при многоуровневом BOM.
|
|||
|---|---|---|---|
|
#18+
Собственно так и сделал в итоге. Получаю верхнюю границу остатков из материалов с учетом разложения узлов до простых материалов. И дальше последовательными приближениями с начальными точками в 1 и в ВерхнейГранице ищу количество, которое можно собрать. Думаю, что-то оптимальнее сложно найти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2015, 13:07 |
|
||
|
Рассчет доступного товара при многоуровневом BOM.
|
|||
|---|---|---|---|
|
#18+
ViPRosто что "один материал входит в разные уровни" ни каком цикличности не говоритНу почему же ? Возможна ситуация, когда в завис. от одного параметра меняется значение других. Зависимости могут быть очень сложными. Например применяя втулку ХХХ нам нужно поменять прокладки/переходники этого типа на другой. На самом деле много вариантов, в т.ч. более сложных. Тривиальных/готовых решений по сабжу нет и быть не может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2015, 09:42 |
|
||
|
Рассчет доступного товара при многоуровневом BOM.
|
|||
|---|---|---|---|
|
#18+
LSVНапример применяя втулку ХХХ нам нужно поменять прокладки/переходники этого типа на другой. для этого BOM и нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2015, 09:54 |
|
||
|
Рассчет доступного товара при многоуровневом BOM.
|
|||
|---|---|---|---|
|
#18+
LSVТривиальных/готовых решений по сабжу нет и быть не может. это просто выбор варианта исполнения какого-либо или узла или изделия в целом. В общем-то типовая для производственной системы задача. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2015, 09:59 |
|
||
|
Рассчет доступного товара при многоуровневом BOM.
|
|||
|---|---|---|---|
|
#18+
Что ж, оказалось, что задача подсчета еще цветочки. Теперь надо получить количество материалов и сборок, которые необходимы для N единиц продукта. При двух стратегиях: 1 - используем готовые узлы в первую очередь, 2 - используем сначала материалы. При этом, мы уже знаем, что требуемое количество N мы можем произвести. Задача в первом варианте решается элементарно. А вот во втором... Попробовал уже пару алгоритмов реализовать, но они дают не оптимальный результат. Единственный гарантированный вариант - это методом итераций определить количество возможных сборок для каждого узла. Думаю, "эффективность" такого метода очевидна. Пытаюсь придумать что получше. Есть ли какие-нибудь идеи? Вот пример дерева BOM, которое сломало пару моих алгоритмов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 13:12 |
|
||
|
Рассчет доступного товара при многоуровневом BOM.
|
|||
|---|---|---|---|
|
#18+
Так, вот картинка: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 13:13 |
|
||
|
Рассчет доступного товара при многоуровневом BOM.
|
|||
|---|---|---|---|
|
#18+
Drac013Что ж, оказалось, что задача подсчета еще цветочки. "разложите" все же BOM на обычный линейный список и затем просто каждое количесто умножайте на множитель, которым является требуемое кол-во продукции. "отвяжитесь" от иерархии, она нужна только в самом начале, для получения этого самого списка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 13:26 |
|
||
|
Рассчет доступного товара при многоуровневом BOM.
|
|||
|---|---|---|---|
|
#18+
Drac013, Это несложный кейс, и с ним разберется относительно простой алгоритм "посчитать стоимость в элементарных материалах, если элементарного материала не хватает - пытаться заменить его узлами, в которые он входит, снизу вверх, т.е. сначала взять сколько есть узлов G, уменьшив потребность в элементарном материала D на "стоимость" взятых G, потом узлов E, потом узлов С". Но для общего случая, боюсь, придумать что-то эффективнее перебора не получится, потому что практически это задача о многомерном рюкзаке, где измерения - элементарные материалы, а "предметы" - узлы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 13:33 |
|
||
|
Рассчет доступного товара при многоуровневом BOM.
|
|||
|---|---|---|---|
|
#18+
iscrafm, Дерево - это визуальное представление. В системе у меня BOM хранится в виде связного списка, точнее таблицы, где лежат элементы этого списка, так сказать. К сожалению, просто умножать не достаточно. В подсчете количества и расхода по первой стратегии проблем нет совсем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 13:47 |
|
||
|
Рассчет доступного товара при многоуровневом BOM.
|
|||
|---|---|---|---|
|
#18+
Кот МатроскинDrac013, Это несложный кейс, и с ним разберется относительно простой алгоритм "посчитать стоимость в элементарных материалах, если элементарного материала не хватает - пытаться заменить его узлами, в которые он входит, снизу вверх, т.е. сначала взять сколько есть узлов G, уменьшив потребность в элементарном материала D на "стоимость" взятых G, потом узлов E, потом узлов С". Примерно такой алгоритм и ломается на этом дереве. У нас есть довольно сильное утверждение, что требуемое N мы можем собрать. Я пытался сделать так: иду от корня дерева к его ветвям. Если текущий узел дерева - это сборка, то я пробую собрать его полностью, т.е. иду ниже. Как только я натыкаюсь на материал, то уже проверяю, достаточно ли его в наличии. Если да, то списываю из таблицы остатков. Если нет, то ищу другие узлы по уровню ниже текущего, где могу "позаимствовать" этот материал. Как только нашел такой узел, то иду от этого узла в сторону корня, заменяя родительские сборки на количество из остатков (если они есть, если нет, то иду еще выше). Но этот алгоритм не дает оптимального значения в конце. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 13:58 |
|
||
|
Рассчет доступного товара при многоуровневом BOM.
|
|||
|---|---|---|---|
|
#18+
Drac013К сожалению, просто умножать не достаточно. уточняйте что к вас, к сожалению, просто умножать недостаточно. Потому что в реальности все расчеты элементарные. В зависимости от ситуации список сортируется или по возрастанию или по убыванию уровня вхождения, так называемого Low Level. Все алгоритмы разложены вообще-то десятилетия назад. Не выдумывайте лучше, а множество ссылок по теме MRP посмотрите, все уже давно в различных варианте разложено по полочкам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 13:59 |
|
||
|
Рассчет доступного товара при многоуровневом BOM.
|
|||
|---|---|---|---|
|
#18+
Drac013Кот МатроскинDrac013, Это несложный кейс, и с ним разберется относительно простой алгоритм "посчитать стоимость в элементарных материалах, если элементарного материала не хватает - пытаться заменить его узлами, в которые он входит, снизу вверх, т.е. сначала взять сколько есть узлов G, уменьшив потребность в элементарном материала D на "стоимость" взятых G, потом узлов E, потом узлов С". Примерно такой алгоритм и ломается на этом дереве. У нас есть довольно сильное утверждение, что требуемое N мы можем собрать. Я пытался сделать так: иду от корня дерева к его ветвям. Если текущий узел дерева - это сборка, то я пробую собрать его полностью, т.е. иду ниже. Как только я натыкаюсь на материал, то уже проверяю, достаточно ли его в наличии. Если да, то списываю из таблицы остатков. Если нет, то ищу другие узлы по уровню ниже текущего, где могу "позаимствовать" этот материал. Как только нашел такой узел, то иду от этого узла в сторону корня, заменяя родительские сборки на количество из остатков (если они есть, если нет, то иду еще выше). Но этот алгоритм не дает оптимального значения в конце. Ээ, а что такое "оптимальное значение"? Вам важен только минимум остатка элементарных материалов, какого уровня узлы потрачены - не важно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 14:04 |
|
||
|
Рассчет доступного товара при многоуровневом BOM.
|
|||
|---|---|---|---|
|
#18+
[quot Кот Матроскин]Drac013пропущено... Ээ, а что такое "оптимальное значение"? Вам важен только минимум остатка элементарных материалов, какого уровня узлы потрачены - не важно? Да, была идея именно в максимальном использовании элементарных материалов. Ибо параметров оптимальности можно ввести огромное количество: время сборки, стоимость сборки и прочее. Поэтому требование было упрощено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 14:13 |
|
||
|
Рассчет доступного товара при многоуровневом BOM.
|
|||
|---|---|---|---|
|
#18+
Drac013параметров оптимальности можно ввести огромное количество: время сборки, стоимость сборки и прочее. у одного и того же изделия не может быть различного времени сборки или скорости сборки. Может быть использован вариант BOM в котором применяются уже готовые узлы от стороннего производителя, вместо их самостоятельного изготовления. Но это другой вариант BOM. Т.е. возможен только выбор: сделать самому или купить готовое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 14:29 |
|
||
|
Рассчет доступного товара при многоуровневом BOM.
|
|||
|---|---|---|---|
|
#18+
[quot iscrafm]у одного и того же изделия не может быть различного времени сборки или скорости сборки. [quot] У одного изделия быть не может. А у разных узлов этого изделия может быть. Один узел, где используется материал М, собирается 4 недели, другой - 4 дня. Поэтому, если у нас поджимают сроки, то мы предпочтем взять готовый первый узел. А если заказ не срочный, то лучше этот узел собрать, чтобы запас на срочные заказы конечного продукта остался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 14:58 |
|
||
|
Рассчет доступного товара при многоуровневом BOM.
|
|||
|---|---|---|---|
|
#18+
[quot Drac013]если у нас поджимают сроки, то мы предпочтем взять готовый первый узел. А если заказ не срочный, то лучше этот узел собрать IMHO, все опять свелось к тому, что неявно фигурирует больше одного критерия оптимизации. Следовательно, что-бы получить желаемый результат, нужно: Определиться явно с критериями оптимизации, в т.ч. - со способом подсчета формальной (количественно выраженной) стоимости для каждого критерия; Определиться со способом хранения этих значений для каждого узла дерева/элемента списка (вспоминаем про дерево отрезков, да); Определиться со способом выбора критерия оптимизации перед началом расчета; Как-то так, по моему... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 15:40 |
|
||
|
Рассчет доступного товара при многоуровневом BOM.
|
|||
|---|---|---|---|
|
#18+
kva6513, мы сейчас отвлеклись на то, что отбросили :) Критерий один: максимально использовать простые материалы при производстве заданного количества продукта. Все остальные проблемы решены. Вариант с полным перебором хоть и кажется единственным возможным, категорически не устраивает в связи с его диким ростом ресурсов при увеличении узлов дерева. Может упростим вторую стратегию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 15:57 |
|
||
|
Рассчет доступного товара при многоуровневом BOM.
|
|||
|---|---|---|---|
|
#18+
Drac013максимально использовать простые материалы при производстве заданного количества продукта. Т.е. критерием становится выбор по максимизации добавленной стоимости ? Готовый купленный узел и материал, хранящиеся на складе равно имеют добавленную стоимость, равную нулю. Прохождение узла/материала через к/л производственную операцию добавляет какое-то значение к добавленной стоимости. На каждом узле дерева должна быть известна сумма добавленных стоимостей выбираемой ветви, тогда можно будет всегда сворачивать в сторону увеличения. Возможен более простой случай, если все операции примерно равнозначны, тогда вместо добавленной стоимости можно просто подсчитывать количество операций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 16:36 |
|
||
|
Рассчет доступного товара при многоуровневом BOM.
|
|||
|---|---|---|---|
|
#18+
kva6513Drac013максимально использовать простые материалы при производстве заданного количества продукта. Т.е. критерием становится выбор по максимизации добавленной стоимости ? Нет. Критерий - максимальное количество простых материалов :) Т.е. сначала тратим их, а когда их не хватает, то начинаем использовать уже узлы. Стратегии упрощены, ибо усложнения могут даже не понадобиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 17:26 |
|
||
|
Рассчет доступного товара при многоуровневом BOM.
|
|||
|---|---|---|---|
|
#18+
[quote Drac013][quote iscrafm]у одного и того же изделия не может быть различного времени сборки или скорости сборки. У одного изделия быть не может. А у разных узлов этого изделия может быть. Один узел, где используется материал М, собирается 4 недели, другой - 4 дня. Поэтому, если у нас поджимают сроки, то мы предпочтем взять готовый первый узел. А если заказ не срочный, то лучше этот узел собрать, чтобы запас на срочные заказы конечного продукта остался. У вас проблема другого рода. BOM здесь совершенно не при чем. Просто сдвигаете процесс изготовления, последовательность, очередность.... Вопрос просто неправильно озвучен изначально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 18:04 |
|
||
|
Рассчет доступного товара при многоуровневом BOM.
|
|||
|---|---|---|---|
|
#18+
kva6513выбор по максимизации добавленной стоимости скоро до килокалорий дело дойдет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 18:06 |
|
||
|
Рассчет доступного товара при многоуровневом BOM.
|
|||
|---|---|---|---|
|
#18+
Drac013Критерий - максимальное количество простых материалов :) Ну так определите критерий - что такое "простой материал". Шевеления пальцами в воздухе в алгоритм не превратить никак. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 20:57 |
|
||
|
Рассчет доступного товара при многоуровневом BOM.
|
|||
|---|---|---|---|
|
#18+
iscrafmУ вас проблема другого рода. BOM здесь совершенно не при чем. Просто сдвигаете процесс изготовления, последовательность, очередность.... Вопрос просто неправильно озвучен изначально. Вопрос озвучен корректно и довольно правильно. Надо либо тратить сперва готовые узлы (ускоряем производства и отгрузку). Либо надо стараться по максимуму использовать материалы, чтобы не уменьшать запасы узлов. Все просто. Другое дело, что в таком виде задача сводится к многомерному рюкзаку, как правильно заметил Кот Матроскин. И при увеличении узлов BOM будет непомерно расти потребность в ресурсах. Думаю, задачу будем слегка изменять. iscrafm Ну так определите критерий - что такое "простой материал". Шевеления пальцами в воздухе в алгоритм не превратить никак. :) Я думал, уже все поняли, что простой материал - это тот, который не сборный. Если вы все еще не поняли сути задачи, то хотя бы не ехидничайте попусту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2015, 09:40 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=39075928&tid=1540452]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
163ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 283ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...