5) Целочисленное моделирование
Существует ряд моделей, где достаточно простой способ удовлетворения требований целочисленности за счет округления результата не срабатывает Это может быть обусловлено небольшим масштабом рассматриваемых переменных решения. Например, если решение задачи ЛП предлагает компании Боинг произвести в будущем квартале 3,6 самолетов типа Boeing 747 и 4,8 типа Boeing 777, руководство, вероятно, не согласится с тем, чтобы округлить эти значения и принять решение построить четыре самолета Boeing 747 и пять Boeing 777 или просто остановиться на любой другой округленной комбинации. С одной стороны, в данном случае округление может привести к недопустимому решению, поскольку будут нарушены ограничения по ресурсам. Однако даже если округленное решение будет допустимым, целесообразно определить наилучшее возможное целочисленное решение, поскольку с каждым произведенным самолетом связаны большие объемы материальных и трудовых ресурсов. Широко распространенным примером таких моделей являются модели логистических процессов (складирования и доставки грузов).
Примерами другого рода являются модели, в которых целочисленные переменные используются в качестве индикаторов логических решений. Например, рассмотрим модель, в которой переменная А равна 1, если следует построить склад в городе N, и 0 — в противном случае. Предположим, что в результате решения некой задачи ЛП для данной ситуации получается нецелое значение (скажем, А=0,38). Очевидно, что такое значение не дает никакой полезной информации о решении реальной задачи, поскольку невозможно построить 0,38 склада. Можно построить склады различных размеров, но все равно необходимо решить, будет склад в городе N или нет Может показаться, что в подобных случаях округление до ближайшего целого (в данном случае это 0) позволит решить проблему. К сожалению, такой подход не гарантирует получения хорошего решения (не говоря об оптимальном). Как будет показано далее, округление в подобных случаях не всегда ведет даже к получению допустимого решения.
Существует очень много управленческих моделей, которые можно считать линейными за исключением требования целочисленности переменных решения, и в которых невозможно найти хорошее решение, используя обычные методы линейной оптимизации, заложенные в средстве Поиск решения, а затем округляя оптимальные значения переменных решения. Эти модели необходимо создавать с помощью методов, специально разработанных для решения крупных задач целочисленного программирования.
Сравнение моделей ЛП и ЦЛП
Несмотря на то что в настоящее время существует набор методов оптимизации моделей целочисленного программирования, арсенал этих средств все еще заметно отличается от того, которым пользуются при решении задач, в которых переменные решения не обязаны быть целыми. Многие модели, которые легко оптимизировать в виде задачи линейного программирования, практически невозможно решить, если потребовать, чтобы переменные решения принимали целые значения (время и затраты, необходимые для нахождения оптимального решения, могут быть слишком велики). Это кажется неестественным, поскольку добавление ограничений целочисленности уменьшает количество допустимых вариантов, которые необходимо проанализировать, а уменьшение множества допустимых вариантов должно облегчить поиск оптимального решения. Однако на практике для оптимизации моделей целочисленного программирования требуется, как правило, в десятки, а зачастую в сотни и тысячи раз больше времени, чем для оптимизации аналогичных моделей без ограничений целочисленности. Хотя, для современных компьютеров это уже не проблема, но еще 10 лет тому назад это приходилось учитывать.
Типы целочисленных оптимизационных моделей
Общий термин целочисленное программирование применяется к созданию оптимизационных моделей с условиями целочисленности (условия, требующие, чтобы некоторые или все переменные решения принимали целые значения) Как уже отмечалось, модели целочисленного линейного программирования (ЦЛП) — это модели линейного программирования, содержащие дополнительное требование, чтобы некоторые или все переменные решения принимали только целые значения. Существует несколько классов моделей данной категории.
Модель полностью целочисленного линейного программирования, как следует из названия, это модель, в которой все переменные решения должны принимать только целые значения. Например, модель:
минимизировать 6х1 + 5х2 + 4х3 при ограничениях
108х1 + 92х2 + 58х3>576,
7х1+ 18х2+22х3>83,
х1х2,х3> 0 и целые
является полностью целочисленной. Без дополнительных условий, оговаривающих, что х1 х2 и х3 должны быть целыми числами (т.е. без условий целочисленности), данная модель является обычной моделью линейного программирования.
Модель, в которой некоторые переменные должны принимать только целые значения, а остальные переменные могут быть любыми, называется моделью частично-целочисленного линейного программирования.
В некоторых моделях целочисленные переменные могут принимать только значения О или 1. Их называют моделями двоичного целочисленного линейного программирования Эти модели особенно важны, поскольку двоичные переменные можно использовать для представления дихотомических решений (решений типа «да-нет»). Разнообразные модели назначений, размещения заводов, производственного планирования и управления инвестиционными портфелями являются примерами моделей двоичного ЦЛП.
Часто также рассматриваются модели линейного программирования, которые получаются из исходных моделей ЦЛП в результате отказа от ограничений целочисленности. Такие модели ЛП называются упрощением модели ЦЛП.
Применение двоичных переменных
Двоичные переменные (принимающие значения 0 или 1) играют исключительно важную роль в прикладных моделях ЦЛП. Эти переменные позволяют включать в оптимизационные модели решения, описываемые в Excel с помощью функции ЕСЛИ, которые иногда еще называют дихотомическими решениями. Умелое применение двоичных переменных позволяет включать в оптимизационную модель проверку различных логических условий, тем самым заменяя функцию ЕСЛИ в формулах Excel, использовать которую в моделях линейного программирования нельзя.
Зависимые решения
С помощью двоичных переменных можно описать зависимость между двумя или несколькими переменными решения. Например, руководство компании AutoPower не хочет принимать вариант к, если не будет принят вариант т. Это условие можно представить с помощью ограничения
Для понимания отличия ЦЛП от ЛП, необходимо рассмотреть графическую интерпретацию (рис. 6)
Рис. 6 - Графическое представление решения целочисленной модели
Для оптимизации моделей ЦЛП средством Поиск решения используется другой алгоритм - ветвей и границ, который является в настоящее время наиболее эффективным универсальным методом. Основная идея метода состоит в разбиении множества всех допустимых решений данной задачи ЦЛП на непересекающиеся подмножества меньшего размера. После этого вычисляются границы значения наилучшего решения для каждого подмножества решений. Алгоритм позволяет исключить из рассмотрения определенные подмножества решений, тем самым производится частичный перебор всех допустимых решений (в отличие от полного перебора).
