#linear-programming
#линейное программирование
Вопрос:
Подробная бизнес-задача:
Я пытаюсь решить бизнес-задачу планирования производства, как показано ниже:
- У меня есть два завода, производящие FG A и B соответственно.
- Оба продукта потребляют одно и то же сырье x
- Мне нужно создать 30-дневный производственный график с учетом доступности сырья.
- FG A и B могут быть получены, если в день имеется достаточное количество сырья.
- После каждых 6 дней производства завод должен проходить техническое обслуживание, и производство в этот день будет равно нулю.
- Цель состоит в том, чтобы максимизировать маржу, исходя из доступного сырья на уровне дня, и придерживаться производственных ограничений (т. Е. Остановка после каждого 6-го дня)
Мне нужно построить линейное программирование для решения приведенной ниже проблемы:
Переменная y: (двоичная) переменная z: кумулятивное значение y
Когда z> 6, то y = 0. Мне также нужно сбросить кумуляцию z после этой точки.
Желаемый результат:
Как я могу построить оператор для ограничения MILP. Существуют ли какие-либо методы для решения этой проблемы. Спасибо.
Комментарии:
1. Для меня это не имеет особого смысла. Пожалуйста, будьте более краткими. В настоящее время вы хотите, чтобы y реагировал на некоторую кумуляцию, включающую также y : установка y в 0 из-за некоторой кумуляции по модулю подразумевает, что значение y не равно 0 из-за установки его в 0 . Однако с дополнительным столбцом все изменится, разделив y и обработанный / обрезанный / по модулю y.
2. Я подробно изложил бизнес-проблему для большей ясности, надеюсь, это поможет лучше установить контекст. Цените любую помощь, которую вы можете предложить для решения
Ответ №1:
Я думаю, вы можете моделировать свое обслуживание по-другому. Просто запретите любые последовательности из 7 единиц для y
. Т.е.
y[t-6] y[t-5] y[t-4] y[t-3] y[t-2] y[t-1] y[t] <= 6 for t=1,..,T
Это проще, чем использовать ваш аккумулятор. Обратите внимание, что начало требует некоторого внимания: для этого вы можете использовать исторические данные. Т.Е., at t=1
, значения для t=0,-1,-2,..
известны.
Ваш подход к накоплению не является изначально неправильным. Мы часто используем его для моделирования инвентаризации. Емкость запасов — это ограничение на то, насколько большими могут быть накопленные запасы.
Комментарии:
1. Спасибо, Эрвин, это было действительно полезно. Я смог решить проблему с помощью предложенного вами подхода.