Среди задач целочисленного линейного программирования целесообразно выделить специальный класс задач, в которых переменные могут принимать только два значения 0 или 1. Особенности (и дополнительные возможности) применения двоичных переменных рассмотрим на примере.
Пример 2. Распределение ограниченных средств между проектами компании. Крупный холдинг имеет пять производственных комплексов (ПК), расположенных в разных регионах. Менеджмент каждого из ПК подготовил проекты расширения производственных мощностей с указанием необходимых затрат по годам на период в пять лет. Для каждого проекта также проведена оценка ожидаемой прибыли. Руководство холдинга не имеет средств, необходимых для финансирования всех проектов, и намерено выбрать для реализации проекты, которые обеспечат получение максимальной суммарной прибыли с учетом имеющихся в разные годы общих возможностей холдинга по финансированию всех проектов. Данные о затратах, ожидаемой прибыли и финансовых ресурсах представлены в Таблице
Таблица
Проекты расширения производственных мощностей. (Все суммы в тыс. долл.).
Проекты производственных комплексов | Необходимые объемы финансирования (по годам) |
Ожидаемая прибыль | ||||
1 | 2 | 3 | 4 | 5 | ||
ПК1 | 100 | 50 | 100 | 100 | 0 | 4000 |
ПК2 | 300 | 200 | 100 | 100 | 100 | 7000 |
ПК3 | 100 | 200 | 250 | 200 | 100 | 8000 |
ПК4 | 150 | 60 | 250 | 100 | 100 | 6000 |
ПК5 | 50 | 40 | 150 | 100 | 100 | 4000 |
Общий объем средств холдинга на финансирование проектов по расширению мощностей | 650 | 550 | 700 | 500 | 300 |
Для построения формальной модели введем следующие двоичные переменные: Хi =1, если проект i-го ПК включается в общий план расширения производственных мощностей холдинга, Хi =0 в противном случае. С помощью введенных переменных мы можем записать ограничения по объему средств, доступных для проектов расширения производственных мощностей по годам:
100Х1 + 300Х2 +100 Х3 + 150Х4 +50Х5 £ 650
50Х1 +200Х2 +200 Х3 + 60Х4 +40Х5 £ 550
100Х1 + 100Х2 +250 Х3 + 250Х4 +150Х5 £ 700
100Х1 + 100Х2 +200 Х3 + 100Х4 +100Х5 £ 500
100Х2 +100 Х3 + 100Х4 +100Х5 £ 300
Целевая функция (общая прибыль по всем проектам, выбранным для реализации) может быть представлена с помощью введенных переменных следующим образом:
Z = 4 000Х1 + 7000Х2 +8000 Х3 + 6000Х4 +4000Х5
Необходимо найти значения переменных X1,….X5, при которых выполнены все ограничения и целевая функция принимает максимальное значение.
Оптимальное решение данной задачи найдем с помощью средств Поиск решения MS Excel. При введении ограничений необходимо указать, что все переменные X1,….X5 являются двоичными, т.е. могут принимать только значения 0 или 1 (см. Рисунок 2.9). В оптимальном решении данной задачи будут получены следующие значения переменных и целевой функции
Х1 =1, Х2=1, Х3 =1, Х4 =1, Х5 =0, Zmax = 2500
Введение дополнительных условий.
Предположим, что руководство холдинга считает целесообразным ограничить число одновременно реализуемых проектов. Например, одновременно может быть начата реализация не более трех проектов. Для того, чтобы учесть это требование достаточно в модель ввести одно дополнительное ограничение:
Х1 + Х2 +Х3 + Х4 +Х5 £ 3
В оптимальном решении задачи с введенным дополнительным условием будут получены следующие значения переменных и целевой функции Х1 =0, Х2=1, Х3 =1, Х4 =1, Х5 =0, Zmax = 2100
Предположим также, что руководство холдинга считает целесообразным начинать реализацию проекта расширения производственных мощностей для ПК3 только в том случае, если одновременно будет осуществляться проект расширения производственных мощностей для ПК1. Для того чтобы учесть это требование достаточно в модель ввести еще одно дополнительное ограничение:
Х3 £ Х1
В оптимальном решении задачи с введенными дополнительными условиями будут получены следующие значения переменных и целевой функции Х1 =1, Х2=1, Х3 =1, Х4 =0, Х5 =0, Zmax = 1900.
Данный пример показывает, что с использованием двоичных переменных в модели линейного программирования можно включать сложные условия, отражающие взаимосвязи между выбираемыми решениями.