Задача в рамках разработки базы данных для цеха производства резины.

Задача в рамках разработки базы данных для цеха производства резины.
Задан общий вес сырой резины определенной марки (кг), которую нужно произвести за смену.
Производится в виде одинаковых по весу и составу замесов — n «больших» и, возможно, если не получается целое количество «больших», m «малых».
В каждый замес входит куча ингредиентов в определенном %-ном соотношении, определяемом маркой резины. Вес замеса Х можетменяться в некоторых пределах от Хмин до Хмакс для больших и Y — от Yмин до Yмакс для малых (соответственно, пересчитываются веса ингредиентов). Именно из-за ограничений Xмин, Xмакс не всегда получается целое количество больших замесов (идеал), приходится остаток добирать малыми, которые в свою очередь имеют ограничения мин-макс и кроме того, малых не должно быть больше двух.
Например, при ограничении Хмин=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 (для разных марок значения могут меняться)

Мне кажется, истина где-то рядом, но сам я ее не найду.
Надеюсь на помощь
Спасибо,
Сергей Денисов

Ответы

Не уверен, что полностью вас понял, но провел анализ

(0;5) нет решений

[5;15] 1 мал.

(15;30] 2 мал

(30;55) нет хороших решений 

[55;70] 1 большой

(70;85] 1 бол, 1 мал

(85;100] 1 бол 2 мал

(100;110)  нет хороших решений 

[110;140] 2 больших

(140; 155)  2 больших 1 мал

(155;165)  2 больших 2 мал 

[165;210] 3 больших

(210;220)  3 больших 1 мал

[220; 280] 4 больших 

((n-1)*70; n*70] n больших  

 

В пределах каждого отрезка выбор делается легко.

Выбор отрезка тоже дело не сложное. 

19.01.13

Специально для таких, оптимизационных задач существует средство «Поиск решения» встроенное в MS Exxel.

19.01.13

Михаил Александров

Сейчас на сайте
Читать ответы

Галина Владимировна

Сейчас на сайте
Читать ответы

Елена Васильевна

Сейчас на сайте
Читать ответы
Посмотреть всех экспертов из раздела Учеба и наука > Математика
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store