R для промышленных инженеров

Целочисленное программирование с R

Изучение пакета R «lpSolve»

Исследование операций

Исследование операций - это научный подход к принятию решений, направленный на поиск наилучшего проектирования и эксплуатации системы, обычно в условиях, требующих распределения ограниченных ресурсов. Научный подход к принятию решений требует использования одной или нескольких математических / оптимизационных моделей (т. Е. Представлений фактической ситуации) для принятия оптимального решения.

Модель оптимизации пытается найти значения переменных решения, которые оптимизируют (максимизируют или минимизируют) целевую функцию среди набора всех значений переменных решения, которые удовлетворяют заданным ограничениям. Его три основных компонента:

  • Целевая функция: функция, которую нужно оптимизировать (максимизировать или минимизировать)
  • Переменные решения: контролируемые переменные, влияющие на производительность системы.
  • Ограничения: набор ограничений (т.е. линейных неравенств или равенств) переменных решения. Ограничение неотрицательности ограничивает переменные решения принимать положительные значения (например, вы не можете создать отрицательное количество элементов x 1, x 2 и x 3).

Решение модели оптимизации называется оптимальным возможным решением.

Шаги моделирования

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

  1. Определение проблемы: определение объема проекта и определение того, что результатом является идентификация трех элементов: описание переменных решения, определение цели и определение ограничений (т. е. ограничений).
  2. Построение модели: перевод определения проблемы в математические соотношения.
  3. Модельное решение: с использованием стандартного алгоритма оптимизации. После получения решения необходимо провести анализ чувствительности, чтобы выяснить поведение решения из-за изменений некоторых параметров.
  4. Действительность модели: проверка правильности работы модели.
  5. Реализация: преобразование модели и результатов в рекомендацию решения.

Целочисленное программирование

Целочисленное программирование (также называемое IP) - это метод исследования операций, используемый, когда (обычно) все цели и ограничения являются линейными (в переменных) и когда все переменные решения являются целыми или двоичными. (т.е. 0 или 1). Когда подмножество переменных решения может быть непрерывным, это иногда называют смешанной целочисленной линейной программой (также называемой MILP).

Пакет lpSolve от R содержит несколько функций для решения задач целочисленного программирования и получения значительного статистического анализа. В следующем примере давайте рассмотрим следующую математическую модель, которую необходимо решить:

Это пример задачи целочисленного программирования, где все переменные решения являются двоичными (т.е. они могут принимать значение 0 или 1).

Давайте посмотрим на R-код!

Решение:

Максимальное значение z (и, следовательно, оптимум), которое может быть получено при соблюдении данных ограничений, равно 19, где x 1 = 1 , x 2 = 1, x 3 = 0 и x 4 = 0. Коэффициенты чувствительности изменяются от 0, 0, -1e + 30 и -1e + 30 до всего 1. + e30. Теневые / двойные цены ограничений равны 0, 0 и 0, а для переменных решения - 8, 11, 6 и 4 соответственно. Нижние пределы теневых / двойных цен для переменных ограничений и решений равны -1.0e + 30. Наконец, верхние пределы теневых / двойных цен для ограничений равны 1.0e + 30, 1.0e + 30, 1.0e + 30, 1.4e + 00, а для переменных решения - 1.285714e + 00, 5.0e-01 и 6.667e. -01 соответственно.

Заключительные мысли

Целочисленное программирование представляет собой еще один отличный метод оптимизации для принятия лучших решений. Пакет lpSolve R позволяет решать задачи целочисленного программирования и получать значительную статистическую информацию (например, анализ чувствительности) с помощью всего нескольких строк кода. Хотя существует и другое бесплатное программное обеспечение для оптимизации (например, GAMS, AMPL, TORA, LINDO), сохранение целочисленного R-кода оптимизации в вашей личной библиотеке кода может сэкономить вам значительное количество времени, поскольку вам не придется писать формулировку с нуля, но вместо этого нужно только изменить коэффициенты и знаки соответствующих матриц.

— —

Если вы нашли эту статью полезной, не стесняйтесь загрузить мои личные коды на GitHub. Вы также можете написать мне по электронной почте [email protected] и найти меня в LinkedIn. Хотите узнать больше о приложениях для анализа данных, анализа данных и машинного обучения в инженерной сфере? Изучите мои предыдущие статьи, посетив мой профиль на Медиуме. Спасибо за внимание.

- Роберт