Метод гомори подробный алгоритм решения. Метод Гомори решения задач целочисленного программирования. Примеры решения экономических задач

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

Оно должно быть линейным;

Должно отсекать найденный оптимальный нецелочислен­ный план;

Не должно отсекать ни одного целочисленного плана.

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

Геометрически добавление ка­ждого линейного ограничения отвечает проведению прямой (ги­перплоскости), которая отсекает от многоугольника (многогран­ника) решений некоторую его часть вместе с оптимальной точ­кой с нецелыми координатами, но не затрагивает ни одной из целых точек этого многогранни­ка. В результате новый много­гранник решений содержит все целые точки, заключавшиеся в первоначальном многограннике решений и соответственно полу­ченное при этом многограннике оптимальное решение будет целочисленным (рис. 8.1).

жающие основные переменные *1, *2, новные переменные Хт+1, Хт+2, ..., Хт+1, решения

Хт через неос- х„ оптимального

(8.5)

нецелая компонента. В этом случае можно доказать, что неравен­ство

{Р, } - {а," т+\}хт+1 ■ -~{ат }Хп ^ 0, (* )

сформированное по /-му уравнению системы (8.5), обладает всеми свойствами правильного отсечения.

Для решения задачи целочисленного линейного программиро­вания (8.1)-(8.4) методом Гомори используется следующий ал­горитм:

1. Симплексным методом решить задачу (8.1)-(8.3) без учета условия целочисленности. Если все компоненты оптимального плана целые, то он является оптимальным и для задачи целочис­ленного программирования (8.1)-(8.4). Если первая задача (8.1)-

(8.3) неразрешима (т.е. не имеет конечного оптимума или условия ее противоречивы), то и вторая задача (8.1)-(8.4) также неразре­шима.

2. Если среди компонент оптимального решения есть неце­лые, то выбрать компоненту с наибольшей целой частью и по соответствующему уравнению системы (8.5) сформировать пра­вильное отсечение (8.6).

3. Неравенство (8.6) введением дополнительной неотрицатель­ной целочисленной переменной преобразовать в равносильное уравнение

{Р(} - |а/ т+1 }*т+1- ■-{а|"л }хп + хп+1 > (®*^)

и включить его в систему ограничений (8.2).

4. Полученную расширенную задачу решить симплексным ме­тодом. Если найденный оптимальный план будет целочисленным,

то задача целочисленного программирования (8.1)-(8.4) решена. В противном случае вернуться к п. 2 алгоритма.

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

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

^ 8.1. Для приобретения оборудования по сортировке зерна фермер выделяет 34 ден. ед. Оборудование должно быть размещено на площади, не превышающей 60 кв. м. Фермер может заказать обо­рудование двух видов: менее мощные машины типа А стоимостью 3 ден. ед., требующие производственную площадь 3 кв. м (с уче­том проходов) и обеспечивающие производительность за смену 2 т зерна, и более мощные машины типа В стоимостью 4 ден. ед., занимающие площадь 5 кв. м и обеспечивающие производитель­ность за смену 3 т сортового зерна.

Требуется составить оптимальный план приобретения оборудо­вания, обеспечивающий максимальную общую производитель­ность при условии, что фермер может приобрести не более 8 ма­шин типа В.

Решение. Обозначим через х\, х2 количество машин соот­ветственно типа А и В, через Z - общую производительность. Тогда математическая модель задачи примет вид:


На рис. 8.2 ОКЬМ - область допустимых решений задачи (8.1") - (8.3"), ограниченная прямыми (1), (2), (3) и осями координат; />(2/3; 8) - точка оптимального, но нецелочисленного решения зада­чи (8.1") - (8.3"); (4) - прямая, отсекающая это нецелочисленное решение; 0№М - область допустимых решений расширенной зада­чи (8.1’) - (8.3’), (8.61); М2; 7) - точка оптимального целочисленно­го решения.

I шаг. Основные переменные х3, х4, *5; неосновные перемен­ные Х\, Х2.

х3 = 60 - Зх! - 5х2,
х4 = 34 - Зх) - 4х2,
х5 = 8 - *2>
Z = 2х) + Зх2.

Первое базисное решение Х\ = (0; 0; 60; 34; 8) - допустимое. Соответствующее значение линейной функции = 0.

Переводим В основные переменные переменную XI, которая входит в выражение линейной функции с наибольшим поло­жительным коэффициентом. Находим максимально возможное значение переменной хі, которое “позволяет” принять система ограничений, из условия минимума соответствующих отноше­ний:

Хг = 1ШП|т;т;Т| = 8,

т.е. разрешающим (выделенным) является третье уравнение. При *2 = 8 в этом уравнении Х5 = 0, и в неосновные переходит пере­менная Х5.

II шаг. Основные переменные х2, х3, х*; неосновные пере­менные Хь Х5.




{

(8.6)

Введя дополнительную целочисленную переменную х6 > О, получим равносильное неравенству (8.6") уравнение

~1*5 + Хб = °" ^8"7 ^

Уравнение (8.7") необходимо включить в систему ограничений (8.5") исходной канонической задачи, после чего повторить про­цесс решения задачи симплексным методом применительно к расширенной задаче. При этом для сокращения числа шагов (итераций) рекомендуется вводить дополнительное уравнение (8.7") в систему, полученную на последнем шаге решения задачи (без условия целочисленности).

IV шаг. Основные переменные Х), *2, хз> *б‘> неосновные пе­ременные *1, *2-

Х1 = з - 3*4 +

х3 = 18 + х4 +___ х5,

х6 - + ^х4 + з"х5-

Базисное решение Х4 = (у; 8; 18; 0; 0; -у) - недопусти­мое. (Заметим, что после включения в систему ограничений дополнительного уравнения, соответствующего правильному отсечению, всегда будет получаться недопустимое базисное решение).

Для получения допустимого базисного решения необходи­мо перевести в основные переменную, входящую с положи­тельным коэффициентом в уравнение, в котором свободней член отрицательный, т.е. *1 или х$ (на этом этапе линейную функцию не рассматриваем). Переводим в основные, напри­мер, переменную Х5.

V шаг. Основные переменные Х\, Х2, Х3, Х5; неосновные пере­менные Я], Х£

Получим после преобразований:

ЛГ| = 2 - х4 + 2х6,

*2 = 7 + 2х* ~ 2Х("

х3 = 19 + -х4 + -х6,

*5 = 1 - 2х* + 2Х6’

2 = 25-|х4--|х6.

^5 =(2; 7; 19; 0; 1;0);^ = 25.

Так как в выражении линейной функции нет основных пере­менных с положительными коэффициентами, то Х5 - оптималь­ное решение.

Итак, 2тах = 25 при оптимальном целочисленном решении X* - Х$ =(2; 7; 19; 0; 1; 0), т.е. максимальную производительность 25 т сортового зерна за смену можно получить приобретением 2 машин типа А и 7 машин типа В\ при этом незанятая площадь помещения составит 19 кв. м, остатки денежных средств из выде­ленных равны 0, в резерве для покупки - 1 машина типа В (шестая компонента содержательного смысла не имеет).

Замечание. Для геометрической интерпретации на плос­кости Ох\Хг (см. рис.8.2) отсечения (8.6") необходимо вхо­дящие в него переменные х4 и х$ выразить через перемен­ные XI и х2. Получим (см. 2-е и 3-е уравнения системы ог­раничений (8.5")):

у - у (34 - Зх, - 4х2) - у (8 - х2) £ 0 или х, + 2х2 £ 16.

(см. отсечение прямой (4) на рис 8.2)>

^ 8.2. Имеется достаточно большое количество бревен длиной 3 м. Бревна следует распилить на заготовки двух видов: длиной 1,2 м и длиной 0,9 м, причем заготовок каждого вида должно быть полу­чено не менее 50 шт. и 81 шт. соответственно. Каждое бревно можно распилить на указанные заготовки несколькими способа­ми: 1) на 2 заготовки по 1,2 м; 2) на 1 заготовку по 1,2 м и 2 заго­товки по 0,9 м; 3) на 3 заготовки по 0,9 м. Найти число бревен,

распиливаемых каждым способом, с тем чтобы заготовок любого вида было получено из наименьшего числа бревен.

Решение. Обозначим через х\, хі, хт, число бревен, распили­ваемых соответственно 1,"2-и 3-м способами. Из них можно полу­чить 2хі + *2 заготовок по 1,2 м и 2л\ + Зх2 заготовок по 0,9 м. Общее количество бревен обозначим I. Тогда математическая модель задачи примет вид:

I 2х, + х2 - х4 = 50, будем обозначать его целую часть, т.е. [a ] есть наибольшее целое число k непревосходящее число a .

Дробной частью {a } числа a называется число {a } = a - [a ]. Отметим очевидное свойство дробной части произвольного числа: 0£{a }<1, причем {a } = 0 в том и только в том случае, когда a - целое число.

Пусть x * - опорное решение задачи (1.1), (1.2), не являющееся целочисленным, - его базис и B - соответствующая симплекс-таблица в координатной форме.

Рассмотрим приведенную систему уравнений, отвечающую данному базису (и таблице B ) плана

x * :


Поскольку x j * = 0 при j Îw, то нецелочисленными могут быть лишь величины x 0 * = <c , x * >, x i * , i Îs.

Пусть s - такой индекс (0 £ s £ n ), что число x s * - не целое. Рассмотрим s -ю строку в симплексной таблице B (s -е уравнение в системе (3.2), (3.3)) и составим выражение

Теорема 2 . Если x ÎX * - целочисленный план задачи (1.1), (1.2), то

Доказательство. Используя соотношение

a sj = [a sj ] + {a sj }, j = 0, 1, 2, … , n , из (3.3) при i = s получаем

откуда

В левой части данного неравенства стоит целое число, следовательно, число


также целое. Из того, что x j ³ 0, j Îw, используя свойство дробной части, получаем


т.е. - z s (x ) < 1, или z s (x ) > -1. Учитывая, что z s (x ) - целое, окончательно примем z s (x ) ³ 0.

Следствие. Если x s * (= a s0 ) - нецелое число и Множество X * планов целочисленной задачи (1.1)-(1.3) непусто, то среди чисел {a sj }, j =1, 2, …, n , есть положительные.

В самом деле, все числа {a sj }, очевидно неотрицательны. Допустим, что {a sj } = 0, j = 1, 2, …, n .

Если X * непусто и x * Î X * , то z s (x * )= - {a s0 }, о том, что z s (x * ) - целое число, так как 0 < {a s0 } < 1.

Замечание. В доказательстве теоремы 2 мы воспользовали предположением II о том, что гарантирована целочисленность целевой функции. Действительно в случае s = 0 величина


является целой (при условии, что x Î X * ) лишь тогда когда число x 0 = < c , x > - целое.

Отсюда вытекает

Теорема 3. Если число x s * - нецелое, то неравенство


является правильным отсечением.

Доказательство. Проверим условие отсечения в определении 2. Так как x s * = a s0 , то из того, что x s * - нецелое, получаем неравенство {a s0 } > 0. Поскольку x j * = 0 при j Î w, то

и поэтому вектор x * не удовлетворяет неравенству (3.5). Условие правильности следует из утверждения z s (x ) ³ 0 в теореме 2.

3.3 Первый алгоритм Гомори

Перейдем к изложению первого алгоритма Гомори.

Обозначим задачу (1.1), (1.2) через L 0 . Гомори предложил на первом этапе своего алгоритма находить лексикографический максимум задачи L 0 . Будем обозначать через

x (0) = (x 0 (0), x 1 (0), …, x n (0))

(n+1)-мерный вектор такой, что (x 1 (0), x 2 (0), …, x n (0)) - решение лексикографической задачи L 0 , а x 0 (0) = - значение линейной формы. В тех случаях когда это не вызывает недоразумения, будем называть x (0) - оптимальным планом лексикографической задачи L 0 (хотя по общепринятой терминологии планом называется вектор, составленный из последних n координат вектора x (0)).

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

Если x(0) - целочисленный вектор, то он, очевидно, и является решением задачи (1.1) - (1.3).

В противном случае отыскивается минимальный индекс s, 0 £ s £ n, для которого величина x s (0) не является целой. Пусть B (0) - симплексная таблица в координатной форме, соответствующая вектору x (0). С помощью коэффициентов s -й строки этой таблицы (т.е. коэффициентов приведенной системы (3.2), (3.3)) приемом, описанным выше, строится правильное отсечение.

Вводится вспомогательная переменная x n +1 и рассматривается задача L 1:


Следующий этап состоит в нахождении лексикографического максимума задачи L 1 . Важным достоинством алгоритма Гомори является тот факт, что начальный допустимый строгий псевдоплан для применения двойственного симплекс-метода к задаче L 1 находится без труда. Действительно, легко видеть, что в качестве такого псевдоплана можно взять вектор

В самом деле, очевидно, что y (1) удовлетворяет (вместе с вектоорм x (0)) ограничениям (3.6), (3.7) задачи L 1 , а из ограничений (3.8) нарушается лишь одно: x n +1 (0)= - {a s 0 } < 0. Кроме того, y (1) является опорным для системы уравнений (3.6), (3.7), поскольку, если - базис плана x (0) то система

линейно независима и служит базисом для y (1). Покажем, что y (1) - строго допустимый псевдоплан. С этой целью построим симплексную таблицу, соответствующую указанному базису вектора y (1). Для этого нужно лишь приписать снизу к таблице B (0) строку

Где w = {j 1 , j 2 , …, j n -m } - список номеров небазисных переменных, соответствующих таблице B (0) опорного плана x (0). Поскольку x (0) - строго допустимый псевдоплан, то всякий столбец b j , j Îw, таблицы B (0) лексикографически положителен: bj > 0, j Îw. Отсюда вытекает, что и в симплексной таблице в координатной форме, отвечающей опорному вектору y (1), всякий столбец (кроме первого, совпадающего с y (1)) лексикографически положителен:


Таким образом, имея в своем распоряжении решение x (0) лексикографической задачи L 0 и соответствующую симплекс таблицу в координатной форме B (0), без каких либо дополнительных вычислений находим начальный строго допустимый псевдоплан y (1) для задачи L 1 и строим соответствующую ему симплексную таблицу в координатной форме.

Может случиться, что лексикографическая задача L 1 не имеет решения. В этом случае решение целочисленной задачи (1.1) - (1.3) следует прекратить поскольку имеет место

Теорема 4. Если в задаче L 1 не существует лексикографического максимума, то множество X * целочисленных точек задачи (1.1) - (1.3) пусто.

Доказательство. Поскольку множество X векторов, удовлетворяющих условиям Ax = b , x ³ 0, согласно предположению I ограничено, то ограниченным является и множество планов задачи L 1 . Поэтому единственной причиной, по которой эта задача может не иметь лексикографического минимума, может быть только то что множество ее планов пусто. Покажем что в таком случае множество X * также пусто.

Предположим противное, т.е. что X * ¹ Æ, и пусть x * = (x 1 * , x 2 * , …, x n *) Î X*. По теореме 2 получаем, что величина


неотрицательна. Но это означает, что вектор = (x 1 * , x 2 * , …, x n * , x n +1 *) является планом задачи L 1 , в противоречие с вышесказанным. Теорема доказана.

Пусть x (1) = (x 0 (1), x 1 (1), …, x n (1), x n +1 (1)) - решение лексикографической задачи L 1 . Отправляясь от задачи L 1 и вектора x (1), аналогичным образом строятся задачи L r , r = 2, 3, …, и решения x (r ) Î Â n +1+r соответствующим им лексикографическим задач.

Заметим, что алгоритм Гомори однозначно определяет последовательность x (r ), r = 0, 1, 2, …, что следует из однозначности выбора s . Обратим так же внимание на то, что индекс s всегда не превосходит n: 0 s n. В самом деле, если все x j (r ) при j = 0, 1, 2, …, n - целые числа, то из теоремы 2 вытекает, что x n +1 (r ), x n +2 (r ), … - также целые.

Если на каком - то шаге r вектор

x (r ) = (x 0 (r ), x 1 (r ), …, x n (r ), …, x n +r (r ))

оказывается целочисленным, то вектор (x 0 (r ), x 1 (r ), …, x n (r )) является решением задачи (1.1) - (1.3). Доказательство этого утверждения очевидно.

Переход от вектора x (r ) к вектору x (r +1) с помощью описанного алгоритма Гомори называется большой итерацией, в отличие от промежуточных итераций двойственного симплекс-метода, которые называются малыми.

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

Докажем конечность первого Алгоритма Гомори. Будем использовать следующие обозначения:

x (0) = (x 0 (0), x 1 (0), …, x n (0));

где (x 1 (0), …, x n (0)) - решение лексикографической задачи L0, а x (0) = - соответствующее значение линейной формы (целевой функции).

y (1) = (x 0 (0), x 1 (0), …, x n (0), x n +1),


вектор y(1) служит начальным строго довпустимым псевдопланом при решении задачи L1 двойственным симплексным методом в координатной форме: `y (1) = (`y 0 (1), `y 1 (1), …, `y n (1), `y n +1 (1)) - вектор, получающийся из y (1) в результате первой (малой) итерации двойственного симплекс метода в координатной форме.

Аналогично вводятся обозначения

x (r ), y (r + 1), `y (r + 1), r = 1, 2, …

Из свойств двойственного симплекс метода в координатной форме следует

y (r ) >`y (r ) ³ x (r ).

Лемма 1. Пусть s - минимальный индекс, для которого число xs(0) - не целое. Тогда

Доказательство. Поскольку из (3.9) следует y (1) >`y (1), то возможно два случая:

В случае 1 утверждение леммы выполняется тривиально по определению лексикографического порядка.

Рассмотри случай 2. Согласно правилам двойственного симплекс-метода на первой (малой) итерации решения задачи L 1 выводу из числа базисных подлежит переменная x n +1 , поскольку в векторе y (1) x j (0) ³ 0, j Î w, x n +1 < 0. Пусть k Î w - такой индекс, что

Для любого j Î w, если -{a sj } < 0. По правилам симплексного метода в число базисных вводится переменная x k .

Случай 2 возможен лишь при условии b ik = 0, i = 0, 1, 2, …, s - 1. Поскольку x (0) - строго допустимый псевдоплан задачи L 0 , то все ее столбцы b j , j Î w, симплекс таблицы B (0) лексикографически положительны; в частности b k > 0 . Следовательно, координата b sk данного столбца должна быть неотрицательной. Заметим, что b sk = a sk (т.е. 0 £ s £ n и s Î w), по условию (3.10) число a sk - не нуль. Поэтому

a sk > 0 и a sk ³ {a sk }

По формуле преобразования симплекс-таблицы имеем


Вспоминая, что xs(0) = as0, получаем:

.

С учетом (3.11) получим оценку:

Лемма доказана.

Замечание. Если исходная задача (1.1) - (1.3) допустима, то согласно следствию из теоремы 2 индекс k, удовлетворяющий условию (3.10), существует.

Следствие. Справедливо соотношение

Действительно при r = 1 это неравенство вытекает из леммы и второго неравенства (3.9) . Что бы получить это утверждение при произвольном r , нужно воспользоваться тем, что y j (r ) = x j (r ) при 0 £ j £ n , и неравенством y (r ) ³ x (r ) в (3.9).

Теорема 5 . Если выполнены предположения I и II, то первый алгоритм Гомори требует лишь конечного числа больших итераций.

Что бы убедиться в истинности теоремы, необходимо показать, что при некотором r вектор x (r ) = (x 0 (r ), x 1 (r ), …, x n +r (r )) - целочисленный. Для этого, в свою очередь, достаточно доказать целочисленность вектора (x 0 (r ), x 1 (r ), …, x n (r )), поскольку из теоремы 2 тогда вытекает, что все числа x n +1 (r ), x n +2 (r ), …, x n +r (r ) также целые. Вспомним также, что минимальный индекс s, при котором число xs(r) - нецелое, всегда не превосходит n: 0 £ s £ n. Прежде чем переходить к основному доказательству докажем следующую лемму:

Лемма 2. Для любого j , 0 £ j £ n , существует такой номер R j , что при r ³ R j все числа x j (r ) - целые и равны одному и тому же целому числу x j (R j ).

Доказательство. Пусть s , 0 £ s £ n , - минимальный индекс для которого утверждение Леммы не выполняется. Обозначим

В том случае когда s = 0, положим R = 0.

Пусть r , l - такие индексы, что R £ r £ l, и числа x s (r ), x s (l ) - нецелые. Покажем, что тогда [x s (r )] > [x s (l )]. Действительно по определению s имеем

В таком случае s - минимальный индекс, для которого число x s (r ) - нецелое. По следствию из леммы 1 имеем [x s (r )] ³ x s (l ).

Учитывая, что x s (l ) - не целое число, имеем x s (l ) > [x s (l )], откуда и получаем нужное утверждение. Поскольку множество X планов задачи (1.1) - (1.3) ограничено, то ограничена любая величина x s (r ), 0 £ s £ n , r = 1, 2, … . Поэтому бесконечной цепочки неравенств вида [x s (r )] > [x s (l )] > … существовать не может, а, следовательно, в последовательности x s (r ), r = 0, 1, …, не может быть бесконечно много нецелых чисел. Аналогично доказывается, что в этой последовательности не может быть бесконечно много различных целых чисел.

Лемма доказана.

Вернемся к доказательству теоремы. Пусть

где числа R j фигурируют в формулировке леммы 2. Тогда согласно этой лемме все числа x j (R ), 0 £ j £ n , - целые. Из теоремы 2 получаем, что вектор x (R ) - целочисленный. Следовательно алгоритм Гомори требует не более R итераций.

Теорема доказана.

3.5 Замечания по практической реализации первого алгоритма Гомори

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

) В ходе решения задачи L r двойственным симплексным методом на каждой малой итерации следует пользоваться уточненным правилом вывода из числа базисных векторов для решения задач линейного программирования симплекс-методом: если в первом столбце симплексной таблицы имеется несколько отрицательных элементов b i 0 (= x i ), i =1, 2, …, n , …, n + r , то выводить из числа базисных надо переменную с минимальным номером.

) Если в ходе очередной малой итерации при реализации задачи L r все основные переменные x 1 , x 2 , …, x n оказались неотрицательными, то дальнейшее применение двойственного симплекс-метода к задаче L r следует прекратить, несмотря на то, что ее лексикографический максимум, быть может, еще не достигнут. Если при этом все переменные x j , j = 1, 2, …, n , оказались целочисленными, то по теореме 2 все вспомогательные переменные x n +k , k = 1, 2, …, r , целочисленны и неотрицательны. Это означает, как уже известно, что вектор (x 0 , x 1 , x 2 , … , x n ) является решением исходной целочисленной задачи. В противном случае переходим к новой большой итерации.

) Строка симплексной таблицы, соответствующая вспомогательной переменной x n +r , удаляется, как только переменная x n +r объявляется небазисной. Напомним, что это происходит на первой же малой итерации решения задачи L r .

) Если в ходе решения задачи L r переменная x n +r вновь попадает в число базисных, то то соответствующая ей строка не восстанавливается.

Понятно, что при выполнении правил 3), 4) размеры симплексной таблицы в первом алгоритме Гомори не увеличиваются - в каждой таблице содержится n + 2 строк, отвечающие основным переменным x 0 , x 1 , … , x n и текущей вспомогательной переменной x n +r в момент ее введения) и n - m +1 столбцов (поскольку число n - m небазисных переменных не меняется).

) На первой малой итерации решения задачи L r +1 в качестве переменной, выводимой из базиса, выбирается именно x n +r +1 , не смотря на то, что значения остальных вспомогательных переменных в этот момент так же могут быть отрицательными.

Заметим, что правило 5) на самом деле избыточно, поскольку при выполнении правил 3) и 4) мы ничего не знаем о значении остальных переменных x n +1 , …, x n +r в момент перехода к задаче L r +1 . Данное правило выделено лишь для того, чтобы подчеркнуть отличие рассматриваемых алгоритмов.

Отметим, что при использовании правила 2) возникающая последовательность x ’ (r ) может не быть лексикографическим максимумом задачи L r , поскольку значения некоторых из вспомогательных переменных могут быть отрицательными.

Тем не менее, для последовательности x ’ (r ), r = 0, 1, 2, …, получаемой с использованием правил 1) и 2), сохраняется важное свойство: эта последовательность единственна.

Осталось лишь доказать, что при использовании правил 1) - 4) алгоритм Гомори остается конечным, поскольку его конечность и будет означать, что он приводит к цели - нахождению целочисленного решения задачи (1.1) - (1.3). В самом деле, конечность числа R больших итераций означает, что вектор x ’ (R ) целочисленный.

Отметим, во-первых, что при использовании правила 2) число малых итераций решения задачи L r конечно - не больше, чем требуется для нахождения ее лексикографического максимума.

Теорема 6. Последовательность x’(r), возникающая в процессе применения алгоритма Гомори, уточненного правила 1) - 4), конечна.

Доказательство. Заметим, что в доказательстве теоремы 5 о конечности последовательности x(r) использовались лишь два обстоятельства, регулирующие возникновение этой последовательности: способ построения правильного отсечения и тот факт, что во всякой текущей симплекс-таблице вс столбцы b j , j Îw, лексикографически положительны. Таким образом, удаление строки, соответствующей вспомогательной переменной, может повлиять лишь на последнее обстоятельство. Этого, однако, так же быть не может, как показано в следующей лемме.

Лемма 3. В любой симплекс-таблице, возникающей в ходе алгоритма Гомори, уточненного правилами 1) - 4), для любого столбца

имеет место неравенство

Доказательство. Допустим, что утверждение леммы не выполняется для некоторого k Î w. Поскольку b k , то данное предположение означает, что

По определению симплексной таблицы в координатной форме, имеем


Для любого x Î R n +1+r , если утверждение леммы нарушается в ходе решения задачи L r . Формула (3.13) с учетом (3.12) означает, что изменение значения переменной x k не влияет на значение x i , i = 0, 1, 2, …, n . Другими словами, при одном и том же наборе величин x i , 0£i £n , переменная x k может принимать произвольное значение. Отсюда следует, во-первых, что k ³ n + 1, а во-вторых, что принятое допущение (3.13) неверно, поскольку поскольку значение любой вспомогательной переменной x k , k ³ n + 1, как вытекает из (3.7), однозначно определяется значениями основных переменных.

Поскольку удаление строк, соответствующих вспомогательных переменным, не влияет на свойство столбцов b j , j Î w, быть лексикографически положительными, то эти строки вообще не нужны. Действительно, с учетом правил 1) - 2) переменная x n +r , попав в число базисных, так и остается базисной до конца вычислений, и ее строка не потребуется для определения переменной, вводимой в базис согласно правилам симплекс-метода.

Таким образом, элементы строки, соответствующие переменной x n +r , не участвуют в формулах двойственного симплекс-метода для вычисления значений всех остальных переменных.

Поскольку, как отмечалось, индекс s , регулирующий формирование правильного отсечения, не превосходит n , 0 £ s £ n , то и для этих целей вспомогательные переменные не потребуются.

4. Реализация на ЭВМ

В данном курсовом проекте программа предназначена для нахождения решения целочисленной задачи линейного программирования методом Гомори.

В программном модуле используется алгоритм описанный в теоретической части с учетом замечаний по практическому применению метода, сделанных Гомори.

Ввод данных в программном модуле производится из файла. Вывод результатов работы программы может производится в файл, на дисплей или на принтер. Формат входного файла:


где n - количество переменных, m - количество ограничений, c 1 , c 2 , … , c n - коэффициенты максимизируемой линейной формы, a ij - элементы матрицы A, b j - компоненты вектора b . A, b - характеризуют ограничения [см. (1.2)].

Пример входного файла:

2 5 0 0 0 0 0 0 0

3 1 0 0 0 0 0 0 12

2 5 0 1 0 0 0 0 0 30

3 2 0 0 1 0 0 0 0 22

2 -1 0 0 0 1 0 0 0 12

1 -3 0 0 0 0 1 0 0 0

2 5 0 0 0 0 0 -1 0 10

5 1 0 0 0 0 0 0 -1 5

Список литературы:

1. Абрамов Л.А., Капустин В.Ф. Математическое программирование. - Л.: Изд-во ЛГУ, 1981. -328 с.

Белоусова Г.С. Линейное программирование. Учебное пособие. -Красноярск: Наука, 1975. -107 с.

Кузнецов Ю.Н. и др. Математическое программирование: Учебное пособие. - 2-е изд., перераб. и доп. -М.: Высшая школа, 1980. -300 с.

Ашманов С.А., Линейное программирование. М.: Наука. 1969. -240 с

Габасов Р.И. Кириллова Ф.М., Методы линейного программирования. Минск: Наука. 1977. -174 с

Пусть оптимальный план, полученный симплекс-методом для задачи (5.1)-(5.3), следующий: и получен на базисе
Тогда последняя симплексная таблица имеет следующий вид:

Таблица 5.1

Приведённая к базису симплексная таблица для задачи целочисленного программирования

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

где и

Например,

.

Так как по условию
– неотрицательные целые числа, то и разностьтакже целое неотрицательное число.

Преобразуя это неравенство в уравнение, вычитая из его левой части целую неотрицательную дополнительную переменную
умножим уравнение на –1, добавим к последней симплексной таблице и, применяя симплексный метод (желательно двойственный), находим новый план. Если он не является целочисленным, то по последней симплексной таблице составляем новое дополнительное ограничение.

Если в оптимальном плане задачи (5.1)-(5.3) несколько дробных
то дополнительное ограничение составляют дляmax. Это ускоряет процесс получения оптимального целочисленного решения.

Рассмотрим геометрический смысл введения дополнительного ограничения (см. рис. 5.2). Пусть в точке A многогранника решений Q функция Z достигает максимального значения Z (A )=max, но координаты точки A – дробные. Тогда введенные ограничения по целочисленности I и II от области Q отсекают область с угловой точкой
, координаты которой целочисленные и в которой линейная функция достигает максимального значения.

Рис.5.2. Геометрический смысл ограничения Гомори

Метод Гомори рассмотрим на примере следующей задачи.

Пример 5.1. Найти максимальное значение функции

при условиях

Дать геометрическую интерпретацию решения задачи.

Решение. Для определения оптимального плана задачи (5.5)-(5.8) сначала находим оптимальный план задачи (5.5)-(5.7):

Таблица 5.2


базис
план
– неоптимальный,
.

Таблица 5.3

Симплекс-таблица, приведённая к базису

,
– неоптимальный, базис
,
.

Таблица 5.4

Симплекс-таблица, приведённая к базису

Оптимальный план
, базис
. Этот оптимальный план не является оптимальным планом задачи (5.5)-(5.8), поскольку две компонентыиимеют нецелочисленное значение. При этом дробные части этих чисел
равны между собой. Поэтому для одной из этих переменных составляется дополнительное ограничение. Составим, например, такое ограничение для переменной(чаще берут первую строку). Из последнейсимплекс-таблицы имеем:

.

Таким образом, к системе ограничений задачи (5.5)-(5.7) добавляем неравенство

Теперь находим максимальное значение функции (5.5) при выполнении условий (5.6), (5.7) и (5.9). В условие (5.9) вводим дополнительную переменную :

Таблица 5.5

Ввод в симплекс-таблицу дополнительной переменной

Выберем .
базис.

Таблица 5.6

Приведение симплекс-таблицы к базису

Базис
.
.

Запишем оптимальный план для исходной задачи:
При этом плане значение целевой функции равно
.

Геометрическая интерпретация решения задачи.

Рис.5.3. Геометрическая интерпретация решения задачи

Областью допустимых решений задачи (5.5)-(5.7) является многоугольник ОАВС D (рис. 5.3). Из рисунка видно, что максимальное значение целевая функция принимает в точке
т.е.
является оптимальным планом. Так как этот план не является оптимальным планом задачи (5.5)-(5.8) (числаи дробные), то вводится дополнительное ограничение

Исключая из этого неравенства иподстановкой вместо них соответствующих значений из уравнений системы ограничений (5.6), получим
.

.

Этому неравенству соответствует полуплоскость, ограниченная прямой
отсекающей отмногоугольника ОАВСD треугольник EFC .

Как видно из рисунка, областью допустимых решений полученной задачи является многоугольник OABEFD . В точке E (9;4) этого многоугольника целевая функция данной задачи принимает максимальное значение. Так как координаты точки Е – целые числа и неизвестные
ипринимают целочисленные значения при подстановке в уравнения (5.6) значений
и
то
является оптимальным планом задачи (5.5)-(5.8). Это следует и из таблицы симплекс-метода.

Замечание к использованию метода Гомори: если в первоначальный базис задачи входили искусственные векторы, то при составлении дополнительного ограничения искусственные переменные необходимо опустить.

Вопросы для самопроверки

    Области применения целочисленного программирования.

    Постановка задачи целочисленного программирования.

    Графический способ решения задачи целочисленного программирования.

    Алгоритм метода Гомори.

    Правило составления дополнительного ограничения (сечения Гомори).

    Геометрический смысл введения сечения Гомори.