.RU

3.3. Целочисленное программирование: Целочисленным (иногда его называют также дискретным)

Целочисленным (иногда его называют также дискретным) программированием называется раздел математического программирования, изучающий экстремальные задачи, в которых на искомые переменные накладывается условие целочисленности, а область допустимых решений конечна. Изучение этого раздела в курсе «Экономико-математические методы и прикладные модели» вызывается тем, что огромное количество экономических задач носит дискретный, чаще всего целочисленный характер, что связано, как правило, с физической неделимостью многих элементов расчета: например, нельзя построить два с половиной завода, купить полтора автомобиля и т.д. В ряде случаев такие задачи решаются обычными методами, например, симплексным методом, с последующим округлением до целых чисел. Однако такой подход оправдан, когда отдельная единица составляет очень малую часть всего объема (например, товарных запасов); в противном случае он может внести значительные искажения в действительно оптимальное решение. Поэтому разработаны специальные методы решения целочисленных задач, среди которых можно выделить два направления: методы отсечения (отсекающих плоскостей) и комбинаторные методы.

Метод отсекающих плоскостей состоит в построении дополнительных ограничений и применении двойственного симплексного метода. Представление о комбинаторных методах дает широко используемый на практике метод ветвей и границ.

Рассмотрим более подробно один из методов отсекающих плоскостей, известный как метод Гомори. Метод Гомори для линейных задач целочисленного программирования основан на понятии конгруэнтности действительных чисел. Любое действительное число можно представить в виде суммы его целой и дробной частей: *=[*] + {*}, где квадратные скобки означают целую часть, а фигурные — дробную. Например, 7,5 = [7,5] + {7,5} = 7 + 0,5. Неотрицательные числа (для простоты мы будем рассматривать только их) называются конгруэнтными, если равны их дробные части. Если обозначать конгруэнтность чисел символом =, то, например, 7,5 = 0,5; 6,3 = 2,3; в частности, все целые числа конгруэнтны нулю, поэтому условие целочисленности переменной xi можно записать: xt = 0.

По методу Гомори первый этап решения целочисленных задач не отличается от обычного расчета по симплексному алгоритму. Если среди значений переменных в оптимальном плане есть дробные, то составляется дополнительное ограничение, отсекающее дробную часть решения, но оставляющее в силе все прочие условия, которым должен удовлетворять оптимальный план. Это дополнительное ограничение присоединяется к исходным ограничениям задачи, и вновь применяется процедура симплексного метода. Алгоритм Гомори позволяет прийти к оптимальному целочисленному решению за конечное число шагов.

L Пример 5. Пусть для приобретения оборудования, размещаемого на производственной площади 38 м2, фирма выделяет 20 млн. руб. Имеются единицы оборудования двух типов: типа А стоимостью 5 млн. руб., требующее производственную площадь 8 м2 и имеющее производительность 7 тыс. единиц продукции за смену, и типа Б — стоимостью 2 млн. руб., занимающее площадь 4 м2 и дающее за смену 3 тыс.

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

Сформулируем экономико-математическую модель задачи. Пусть xj, х2 — количество приобретаемых машин типа А и типа Б соответственно. Тогда целевая функция задачи будет иметь вид:

max f(X) = 7xi + Зх2

при ограничениях:

5xi + 2Х2 < 20;

8xi + 4Х2 < 38;

xij2 > 0; xi>2 S 0.

Сформулирована задача линейного целочисленного программирования .

Введем дополнительные переменные х3, Х4, с помощью которых исходные неравенства преобразуются в равенства:

5xi + 2х2 + х3 = 20;

8xi + 4Х2 + х4 = 38,

из которых следует, что переменные х3, х4 могут принимать только неотрицательные целочисленные значения. Фрагмент симплексной таблицы на последней итерации (без учета целочисленности) имеет вид:

Таблица 3.13 Базисные переменные План хх х2 *з *4 1 1 0 1 -0,5 7,5 0 1 -2 1,25 29,5 0 0 1 0,25 Отсюда видно, что в оптимальном плане xi = 1; х2 = 7,5 и

максимум целевой функции равен f(x) = 7-1 + 3-7,5 = 29,5.

Для нецелочисленной переменной х2 составляем из приведенной симплексной табл. 3.13 уравнение:

7,5 = *2 - 2х3 + 1,25х4,

откуда

х2 = 7,5 + 2х3 - 1,25*4.

Так как х2 — целое число, то целой должна быть и правая часть последнего уравнения (= есть символ конгруэнтности):

7,5 + 2*з - 1,25*4= 0; отсюда можно получить, что

0,25*4= 0,5,

т.е. выражение 0,25*4 может быть равно 0,5, или 1,5, или 2,5 и т.д. Следовательно, появляется дополнительное ограничение: 0,25*4 > 0,5, которое путем ввода дополнительной неотрицательной целочисленной переменной *5 преобразуется в равенство, так что система ограничений исходной задачи в каноническом виде содержит три уравнения:

5*! + 2*2 + *з = 20;

8*! + 4*2 + *4 = 38;

0,25*4 - *5 = 0,5.

Повторив процесс решения симплексным методом для данной расширенной системы ограничений, получим новый оптимальный план, в котором переменные, входящие в базис, принимают целые значения: х\ = 2; х2 = 5; *4 = 2. Таким образом, приобретение двух машин типа А и пяти машин типа Б обеспечивает максимум производительности участка, равный 29 тыс. единиц продукции в смену. Заметим, что если бы в качестве плана был выбран вариант, получаемый в результате округления первоначального решения задачи симплексным методом (*i = 1; х2 = 7), то суммарная производительность была бы равна лишь 28 тыс. единиц продукции.

Рассмотрим далее ряд специальных оптимизационных задач, сводящихся к задачам линейного целочисленного программирования. Одной из таких задач является задача о назначениях, с помощью которой можно получить ответ на вопросы типа: как распределить рабочих по станкам, чтобы общая выработка была наибольшей или затраты на заработную плату наименьшими; как наилучшим образом распределить экипажи самолетов; как назначить людей на различные должности (отсюда и название задачи) и т.д.

Математически такие задачи относятся к тому же типу распределительных задач, что и рассмотренная в § 3.2 транспортная задача, с той особенностью, что в них объемы наличных и требующихся ресурсов для выполнения каждой работы равны единице (at = bj = 1), а все переменные Хц либо равны единице, если і-й работник назначен на j-ю работу, либо равны нулю в других случаях. Исходные данные задачи о назначениях группируются в таблице, которая называется матрицей оценок, а результаты — в матрице назначений.

Задача о назначениях в общем виде может быть сформулирована следующим образом. Имеется п работников, которые могут выполнять п работ, причем использование і-го работника на ;-й работе, например, приносит доход сі;. Требуется поручить каждому из работников выполнение одной вполне определенной работы, чтобы максимизировать в данном случае суммарный доход.

Введем переменные: Хц =

1, если і-й работник выполняет j-ю работу О в противном случае. Задача состоит в том, чтобы найти распределение X - (xtj) работников по работам (т. е. найти матрицу назначений), которое максимизирует целевую функцию

п п (3.23)

f(X) = ^^Су^ -> max

і=І)=І при ограничениях

п

(3.24)

п

(3.25)

причем хц равно либо 0, либо 1 (так называемые булевы переменные) для всех i, j = 1, п.

Ограничения (3.24) отражают условие того, что за каждым работником может быть закреплена только одна работа, а ограничения (3.25) означают, что для выполнения каждой работы может быть выделен только один работник.

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

Другой задачей подобного рода является задача о коммивояжере, которая может быть сформулирована следующим образом. Имеется п городов, пронумерованных числами от 1 до п. Коммивояжер, выезжая из города 1, должен побывать в каждом городе ровно один раз и вернуться в исходный пункт. Пусть известны расстояния Сц между городами

(i,j = 1 ,щі Ф ;'). Требуется найти самый короткий маршрут.

Введем переменные: ХИ =

1, если в маршрут входит переезд из города і в город j

0 в противном случае (i, j = 1, п; і ^ j). Требование однократного въезда и выезда в города запишется в виде следующих ограничений:

п

Zxtj = 1; /' = 1, п, J=1 (3-26)

п

^ xtj =1;і = 1,п. /=і

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

щ - Uj + п ? xtj < ті - 1; i, j - 2,ті; і Ф j. (3.27)^

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

Таким образом, задача о коммивояжере состоит в минимизации целевой функции:

п п

f(x, и) = YjYjci)xij -*min

i=l;=l

при условиях (3.26), (3.27), где переменные Хц, щ принимают только неотрицательные целые значения.

К задачам целочисленного программирования приводят также многие оптимальные задачи теории расписаний, в которой рассматриваются методы оптимизации оперативно- календарного планирования. В качестве примера таких задач можно привести задачу определения оптимальной очередности обработки изделий на различных станках или других рабочих местах, задачу составления программы «диспетчер» для управления работой ЭВМ в мультипрограммном режиме и др.

2010-07-19 18:44 Читать похожую статью

  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • © Помощь студентам
    Образовательные документы для студентов.