Задача в рамках разработки базы данных для цеха производства резины.
Задан общий вес сырой резины определенной марки (кг), которую нужно произвести за смену.
Производится в виде одинаковых по весу и составу замесов — n «больших» и, возможно, если не получается целое количество «больших», m «малых».
В каждый замес входит куча ингредиентов в определенном %-ном соотношении, определяемом маркой резины. Вес замеса Х может
Например, при ограничении Хмин=55, Хмакс=70, Yмин=5, Yмакс=15 и Vзад=149 кг никак не подобрать Х такое, чтобы n*X = 149.
Тогда варианты решения равенства n*X+m*Y = 149 таковы:
2*70 + 1*9 (терпимо) или
2*68 + 1*14 (терпимо) или
2*63,5+2*11 (хуже)
2*55 + 3*13 (плохо) и т.п.
Пока задача решена средствами СУБД. Легко находим «идеал», если он существует, а вот если не существует, начинается кропотня по подбору вариантов — решаемо, но некрасиво и не общо.
Отсюда вопрос — можно ли решить эту задачу красиво и общо, т.е.:
Дано:
Vзад — суммарный вес — задано.
Нужно рассчитать (если решение не единственное, предложить варианты):
Х — вес большого замеса (не целое, может принимать значения с любым количеством знаков после запятой)
Xмин <= X <= Xмакс
n — количество больших замесов — целое (n = 0...Nмакс, Nmax просто задается из здравого смысла, если это нужно для алгоритма/формулы, например, 20; в реальности — не более 10 за смену по одной марке)
Y — вес малого замеса (не целое, может принимать значения с любым количеством знаков после запятой)
Yмин <= Y <= Yмакс
m — количество малых замесов — целое (требование — не более 2, но если не получается — пусть выдает и больше
— далее решение принимает человек — возможно, просто уменьшит или увеличит задание на смену)
,
исходя из равенства
Vзад = n*X + m*Y
Повторюсь: если существует решение n*X=Vзад, то обходимся только большими замесами (m и Y равны нулю)
Для информации — Yмакс существенно меньше Xмин.
Например: Хмин=55, Хмакс=70, Yмин=5, Yмакс=15 (для разных марок значения могут меняться)
Мне кажется, истина где-то рядом, но сам я ее не найду.
Надеюсь на помощь
Спасибо,
Сергей Денисов
|
|||||||||||
|
||||||||||||
|
|
|
Похожие вопросы |