powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Рассчет доступного товара при многоуровневом BOM.
25 сообщений из 84, страница 1 из 4
Рассчет доступного товара при многоуровневом BOM.
    #39075165
Drac013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Продумываю структуры и логику для организации работы с многоуровневым BOM (bill of materials). По факту, это граф с одной вершиной в нашем случае. Но при этом с циклами. Т.е. один материал может входить в несколько узлов, причем разного уровня. Тогда у нас могут проявляться линейные алгебраические уравнения с несколькими коэффициентами (а если уровней много, то и не очень линейные).
Так же возможны ситуации, когда можно оперировать только целыми единицами или целыми+дробными. В общем, чем дальше - тем веселее.
Интересуют есть ли исследования по алгоритмам, рассмотрение введение ограничений для упрощения учета и прочее. Идей много, надо разложить оп полкам. Буду рад любой помощи.
...
Рейтинг: 0 / 0
Рассчет доступного товара при многоуровневом BOM.
    #39075207
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Drac013Тогда у нас могут проявляться линейные алгебраические уравнения с несколькими коэффициентами (а если уровней много, то и не очень линейные).


Ээ, это как? Как из такого графа может получиться что-то отличное от линейного уравнения?

Целые + дробные я бы решал выбором соответствующей единицы измерения - подозреваю что "точность" дробной части везде четко ограничена.
...
Рейтинг: 0 / 0
Рассчет доступного товара при многоуровневом BOM.
    #39075220
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Drac013,

какие еще нелинейные уравнения? Это же обычный BOM.
...
Рейтинг: 0 / 0
Рассчет доступного товара при многоуровневом BOM.
    #39075224
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Drac013,

насчет циклов поподробнее?
то что "один материал входит в разные уровни" ни каком цикличности не говорит
...
Рейтинг: 0 / 0
Рассчет доступного товара при многоуровневом BOM.
    #39075232
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

Видимо, ТС рассматривает свой граф как неориентированный.
...
Рейтинг: 0 / 0
Рассчет доступного товара при многоуровневом BOM.
    #39075303
Drac013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos,

Да, с цикличностью я немного ошибся в определении. Ну и уравнения для поиска максимума будет только линейным, тоже верно. Только с каждым уровнем может серьезно расти количество переменных.

Вот произвольный пример в приложении.
...
Рейтинг: 0 / 0
Рассчет доступного товара при многоуровневом BOM.
    #39075316
Drac013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот МатроскинDrac013Тогда у нас могут проявляться линейные алгебраические уравнения с несколькими коэффициентами (а если уровней много, то и не очень линейные).

Целые + дробные я бы решал выбором соответствующей единицы измерения - подозреваю что "точность" дробной части везде четко ограничена.

Есть такой соблазн. Если требуются дробные части, то вводить новые базовые единицы. Но это потребует много движений в уже существующем функционале. Поэтому стоит попробовать сначала реализовать логику целые+дробные в зависимости, например, от номенклатуры. Т.е. жесткие диски мы не можем потрать 1,5 или 2,2, а вот 0,1 пачки винтов вполне можно.
...
Рейтинг: 0 / 0
Рассчет доступного товара при многоуровневом BOM.
    #39075359
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Drac013 Поэтому стоит попробовать сначала реализовать логику целые+дробные в зависимости, например, от номенклатуры. Т.е. жесткие диски мы не можем потрать 1,5 или 2,2, а вот 0,1 пачки винтов вполне можно.

Сложность тут будет в том, что Вы, конечно, можете потратить 0.1 пачки винтов - а вот, условно говоря, 0.15 не можете (потому что их там в пачке 10 штук). Поэтому просто галочкой "возможны дробные доли" обойтись не получится, придется вводить сложную валидационную логику. Имхо проще оперировать в графе в целых миллиграммах, микрограммах и т.п., а "наружу" отдавать
значения, умноженные на соответствующий для каждого материала коэффициент (если внешний функционал у Вас уже заточен на дробные значения)
...
Рейтинг: 0 / 0
Рассчет доступного товара при многоуровневом BOM.
    #39075377
Drac013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскин,

Переход к виртуальным единицам в рамках алгоритма - интересное решение. Попробую опереться на него.

Осталось разобраться с математикой. Понятно, что нам необходимо найти максимум для уравнения:

1*(2*(3*K+1*G)+3*G)+2*(3*3*G +4*(G+2*J+3*I)).

Но нас волнуют не только остатки материалов G,K,I и J, но и узлов B,D,C,E,F,H. Было бы легко разложить остатки узлов на материалы, но в общем случае это невозможно (если ПК на составляющие можно разобрать, то тесто на муку, дрожжи и прочее уже сложнее :) ).
...
Рейтинг: 0 / 0
Рассчет доступного товара при многоуровневом BOM.
    #39075495
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Drac013,

чего хоть оптимизируешь?
...
Рейтинг: 0 / 0
Рассчет доступного товара при многоуровневом BOM.
    #39075554
Drac013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos,

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

Например, собираем ПК. По умолчанию, в нем один диск. Но конкретный заказ подразумевает 2 диска. Тогда в документе к материалам по умолчанию добавляем еще один HDD и пересчитываем возможности сборки.

Пока вот изучаю литературу по теме.
...
Рейтинг: 0 / 0
Рассчет доступного товара при многоуровневом BOM.
    #39075678
Ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ы
Гость
Кот МатроскинDrac013 Поэтому стоит попробовать сначала реализовать логику целые+дробные в зависимости, например, от номенклатуры. Т.е. жесткие диски мы не можем потрать 1,5 или 2,2, а вот 0,1 пачки винтов вполне можно.
Сложность тут будет в том, что Вы, конечно, можете потратить 0.1 пачки винтов - а вот, условно говоря, 0.15 не можете (потому что их там в пачке 10 штук).
Не выйдет потратить 0,1 пачки винтов, даже если 1 или сколько-то винтов точно соответствуют 0,1 от их количества в пачке. Если недосточно заложить в стоимость сборки что-то типа «и еще винты на 10 рублей», то пачки надо по приходу «рассыпать», т.е. пересчитывать в количество штук винтов, и эти штуки потом учитывать в BOM.
...
Рейтинг: 0 / 0
Рассчет доступного товара при многоуровневом BOM.
    #39075713
Drac013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ы,

Давайте без винтов. Ткань приходуется и учитывается метрами, а списываться на пошив (да, и продажу тоже) может и по 0,5 и по 0,15. Переводить учет на сантиметры мало кому придет в голову, да и не особо рационально.
...
Рейтинг: 0 / 0
Рассчет доступного товара при многоуровневом BOM.
    #39075749
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЫКот Матроскинпропущено...

Сложность тут будет в том, что Вы, конечно, можете потратить 0.1 пачки винтов - а вот, условно говоря, 0.15 не можете (потому что их там в пачке 10 штук).
Не выйдет потратить 0,1 пачки винтов, даже если 1 или сколько-то винтов точно соответствуют 0,1 от их количества в пачке. Если недосточно заложить в стоимость сборки что-то типа «и еще винты на 10 рублей», то пачки надо по приходу «рассыпать», т.е. пересчитывать в количество штук винтов, и эти штуки потом учитывать в BOM.
Потратить 0.1 - выйдет, и даже учесть это - выйдет, только это неудобно. Поэтому я предложил использовать целые единицы измерения (т.е. в случае пачек винтов - именно "рассыпать")
...
Рейтинг: 0 / 0
Рассчет доступного товара при многоуровневом BOM.
    #39075763
Drac013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскин,

виртуально рассыпать :) Это вполне удобно. Точность ограничена. Поэтому мы всегда сможем перейти к целым виртуальным единицам и вернуться от них обратно на выходе.
...
Рейтинг: 0 / 0
Рассчет доступного товара при многоуровневом BOM.
    #39075793
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Drac013,

в литературе это называется "матрица применяемости"
...
Рейтинг: 0 / 0
Рассчет доступного товара при многоуровневом BOM.
    #39075803
Drac013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos,

матрица затрат лишь один из вариантов представления BOM, еще есть граф и дерево. У меня нет проблем в том, чтобы посчитать потребность материалов для производства одной единицы продукта. Проблема посчитать, сколько товара мы можем произвести, учитывая остатки как материалов, так и готовых узлов. Ведь в общем случае один материал может входить в некий узел (и в узел этого узла и т.д.) и в сам продукт. Т.е. его остаток необходимо оптимально распределить между узлами с учетом остатков самих узлов. Вот тут пока у меня затык.
...
Рейтинг: 0 / 0
Рассчет доступного товара при многоуровневом BOM.
    #39075834
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Drac013ViPRos,

матрица затрат лишь один из вариантов представления BOM, еще есть граф и дерево. У меня нет проблем в том, чтобы посчитать потребность материалов для производства одной единицы продукта. Проблема посчитать, сколько товара мы можем произвести, учитывая остатки как материалов, так и готовых узлов. Ведь в общем случае один материал может входить в некий узел (и в узел этого узла и т.д.) и в сам продукт. Т.е. его остаток необходимо оптимально распределить между узлами с учетом остатков самих узлов. Вот тут пока у меня затык.

В этом, кстати, тоже имхо могут быть сложности, если только есть альтернативные схемы получения материалов - т.е. материал
A можно получить либо как n1 единиц материала B + n2 единиц материала С, либо как m1 единиц материала D + m2 единиц материала E. Если же схема строго одна - то чего там оптимизировать?
самый тупой и простой в реализации способ - в цикле рассчитывать производство каждой единицы готвоой продукции, пока не обнаружится недостача в одном из "элементарных" материалов.
...
Рейтинг: 0 / 0
Рассчет доступного товара при многоуровневом BOM.
    #39075853
Drac013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Кот Матроскин]Drac013ViPRos,
Если же схема строго одна - то чего там оптимизировать?
самый тупой и простой в реализации способ - в цикле рассчитывать производство каждой единицы готвоой продукции, пока не обнаружится недостача в одном из "элементарных" материалов.

Не, задача "можем ли мы произвести n единиц товара?" - очень легкая. У меня обратная задача: "Какое количество материала мы можем произвести?". Т.е. необходимо рассчитать максимально возможное n.

Причем для подчиненных узлов это придется рассчитывать еще с учетом весового коэффициента. Например, продукт P состоит из одного узла N1 и одного N2, N1 и N2 требуют по одной единице материала M1, которого на складе m штук. Казалось бы, мы можем произвести m штук N1 и m штук N2, но т.к. нам нужны оба узла для производства P, то фактически мы можем произвести m/2 штук каждого из них.
...
Рейтинг: 0 / 0
Рассчет доступного товара при многоуровневом BOM.
    #39075858
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Drac013]Кот Матроскинпропущено...


Не, задача "можем ли мы произвести n единиц товара?" - очень легкая. У меня обратная задача: "Какое количество материала мы можем произвести?". Т.е. необходимо рассчитать максимально возможное n.
.
Именно этот алгоритм я и описал.
"Мы можем произвести N? А N+1? А N+2? А N+3? опа, для N+3 элементарного материала G не хватило, значит можем только N+2".
...
Рейтинг: 0 / 0
Рассчет доступного товара при многоуровневом BOM.
    #39075859
Drac013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскин,

кажется, понял, что вы имеете ввиду. А если таких циклов будет 1000? 10000? 0_о Да уровней штук 5 хотя бы. Мне это и в интерфейсе пересчитывать придется иногда (меняем в документе состав для текущей сборки).
...
Рейтинг: 0 / 0
Рассчет доступного товара при многоуровневом BOM.
    #39075864
Drac013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хм, мы можем быстро посчитать границу сверху (разложив все на элементарные материалы), проверить ее. И пойти медианным методом. Тогда более менее прилично выходит.
...
Рейтинг: 0 / 0
Рассчет доступного товара при многоуровневом BOM.
    #39075866
kva6513
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Drac013Мне это и в интерфейсе пересчитывать придется иногда (меняем в документе состав для текущей сборки).

Дерево отрезков , не ?
...
Рейтинг: 0 / 0
Рассчет доступного товара при многоуровневом BOM.
    #39075870
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Drac013Кот Матроскин,

кажется, понял, что вы имеете ввиду. А если таких циклов будет 1000? 10000? 0_о Да уровней штук 5 хотя бы. Мне это и в интерфейсе пересчитывать придется иногда (меняем в документе состав для текущей сборки).

Цикл будет один - итераций этого цикла может быть 10000. При условии что граф у Вас в памяти - думаю, расчет будет занимать секунды.
Хотя, подчеркиваю, это самый простой и тупой способ, придуманный за 2 минуты, при необходимости его можно оптимизировать (другой вопрос что в наш век гигабайтов ОЗУ и десятков ядер процессора вполне может хватить и такого )
...
Рейтинг: 0 / 0
Рассчет доступного товара при многоуровневом BOM.
    #39075884
Drac013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kva6513, почитаю, спс.

Кот Матроскин,
обход дерева - это сам по себе цикл. Т.е. каждая итерация - это именно что новый цикл обхода по дереву. Вот что смущает. Понятно, что настоль прямолинейно действовать нельзя. Прикину еще варианты. Если аналитически решение будет не найти (в чем я почти уверен), то будем решать подобным образом.
...
Рейтинг: 0 / 0
25 сообщений из 84, страница 1 из 4
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Рассчет доступного товара при многоуровневом BOM.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]