sonyps4.ru

Методы отсечения. Целочисленные задачи линейного программирования

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

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

Если оптимальное решение этой задачи является целочисленным, то оно и является оптимальным для исходной задачи.

Если же полученное оптимальное решение не целочисленное, то строится дополнительное линейное ограничение. Оно обладает следующими свойствами:

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

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

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

Алгоритм графического решения задачи

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

1. Построить систему координат x 1 0х 2 и выбрать масштаб.

2. Найти область допустимых решений (ОДР) системы ограничений задачи.

3. Построить целевую функцию, являющуюся линией уровня и на ней указать направление нормали.

4. Переместить линию целевой функции по направлению нормали через ОДР, чтобы она из секущей стала касательной к ОДР и проходила через наиболее удаленную от начала координат точку. Эта точка будет являться точкой экстремума, т.е. решением задачи.

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

5. Найти координаты, точки экстремума и значение целевой функции в ней. Если полученные значения не целочисленные, то перейти к следующему шагу.

6. Выделить у этих координат область с целочисленными значениями.

7. Определить новые координаты и построить граф.

8. Найти точки с целыми значениями искомых переменных, подставить в уравнение целевой функции и найти её значение. Максимальное из полученных значений целевой функции и будет решением задачи.



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

Данный метод основан на симплексном методе.

На первом этапе данная задача решается симплекс-методом, если полученное решение не целочисленное, то вводим дополнительное ограничение, которые должны быть:

Линейным;

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

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

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

Ограничение накладывается на нецелочисленную переменную или на ту переменную, которая имеет большее дробное значение. Ограничение накладывается на не целочисленную переменную через не основные переменные. Ограничение составляется используя следующее правило: дробная часть свободного члена берётся с тем же знаком, который он имеет и в уравнении, а дробные части неосновных переменных - с противоположным знаком и выделяется положительная дробь. Например, {a}=a, {-a}={-A+a * }, где А - целая часть отрицательное число, а * -положительная дробь.

Получаем новое ограничение, вводим новую основную переменную, приведённое в формуле (1.2.3).

где x n+1 - нововведённая переменная,

x j - переменные не входящие в базис.

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

Полученное базисное решение всегда не допустимое, соответствующее правильному отсечению.

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

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

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

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

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

Вид груза т ден.ед.

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

Решим задачу методом Гомори.

Введем обозначения: х 1 – количество груза первого вида, х 2 – количество груза второго вида. Тогда экономико-математическая модель задачи примет вид:

Преобразуем математическую модель ЗЛП без учета целочисленности переменных к допустимому предпочтительному виду канонической формы:

По алгоритму основного симплекс-метода заполним симплексную таблицу решения ЗЛП:

*
-10 -12*
* 5/2 -1/2 19/2
1/2 1/2 5/2
-4* -30
2/5 -1/5 19/5
-1/5 3/5 3/5
8/5 26/5 -226/5

Оптимальное решение ЗЛП не удовлетворяет ограничению целочисленности, следовательно, к основным ограничениям необходимо добавить новое линейное ограничение.

Замечание 9.1. Если имеется несколько дробных , то для той у которой дробная часть больше всего составляется ограничение.

Составим сечение Гомори для первого ограничения оптимальной симплекс-таблицы решения ЗЛП (так как ):

,

.

Преобразуем полученное ограничение к канонической форме с предпочтительной переменной:

.

Продолжим решение задачи двойственным симплекс-методом, включив новое ограничение в оптимальную симплекс-таблицу решения ЗЛП:

2/5 -1/5 19/5
-1/5 3/5 3/5
-2/5 -4/5 -4/5
8/5* 26/5 -226/5
-5/2
-42

Оптимальное решение расширенной ЗЛП удовлетворяет ограничению целочисленности.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

КУЗБАССКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра вычислительной техники и информационных технологий

РЕШЕНИЕ ЗАДАЧ ЛИНЕЙНОГО ЦЕЛОЧИСЛЕННОГО ПРОГРАММИРОВАНИЯ МЕТОДОМ ГОМОРИ

Методические указания и задания к практическим занятиям по курсу

«Экономико-математические методы» для студентов экономических специальностей

Составитель Н.Ю.Коломарова

Утверждены на заседании кафедры Протокол № 5 от 30.11.99

Электронная копия находится в библиотеке главного корпуса КузГТУ

Кемерово 2000

1. ПОСТАНОВКА ЗАДАЧИ

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

Задача линейного целочисленного программирования формулиру-

ется следующим образом: найти такое решение (план)

Х = (x1 , x2 , ..., xn ),

принимает максимальное или минимальное значение при ограничениях

2. МЕТОД ГОМОРИ

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

Рассмотрим алгоритм решения задачи линейного целочисленного программирования этим методом.

1. Решаем задачу симплексным методом без учета условия целочисленности. Если все компоненты оптимального плана целые, то он является оптимальным и для задачи целочисленного программирования. Если обнаруживается неразрешимость задачи, то и неразрешима задача целочисленного программирования.

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

Оно должно быть линейным; - должно отсекать найденный оптимальный нецелочисленный

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

Для построения ограничения выбираем компоненту оптимального плана с наибольшей дробной частью и по соответствующей этой компоненте k -й строке симплексной таблицы записываем ограничение Гомори.

f k = ∑

f kj x j − S * ,S * ≥ 0 ,

где f k

Xj - ;

Zkj - ;

Новая переменная;

Ближайшее целое, не превосходящееx j иz kj соответст-

Составленное ограничение добавляем к имеющимся в сим-

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

вектор, для которого величина

∆ j

минимальна. И если для этого век-

f kj

тора величина θ = min

получается по дополнительной строке, то в

z ij> 0

следующей симплексной таблице будет получен опорный план. Если же величина θ не соответствует дополнительной строке, то необходимо

переходить к М-задаче (вводить искусственную переменную в ограничение Гомори).

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

Замечания:

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

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

3. ПРИМЕРЫ РЕШЕНИЯ ЗАДАЧ МЕТОДОМ ГОМОРИ

Задача: Для приобретения нового оборудования предприятие выделяет 19 ден.ед. Оборудование должно быть размещено на площади, не превышающей 16 кв.м. Предприятие может заказать оборудование двух видов: машины типа «А» стоимостью 2 ден.ед., требующие производственную площадь 4 кв.м и обеспечивающие производительность за смену 8 т продукции, и машины типа «В» стоимостью 5 ден.ед., занимающие площадь 1 кв.м и обеспечивающие производительность за смену 6 т продукции.

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

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

max L = 8 x1 +6 x2

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

2x 1

5x 2

4x 1

x 1≥

0, x2 ≥ 0

x1 , x2 - целые числа

Решаем задачу симплексным методом без учета целочисленности.

∆ j

∆ j

∆ j

Получен оптимальный нецелочисленный план Х опт = (61/18;22/9).

L max = 376/9.

Т.к. у компоненты плана х 2 максимальная дробная часть: max(4/9;7/18) = 4/9, то дополнительное ограничение записываем по первой строке.

22/9 - = (2/9 - )x 3 + (-1/9 - [-1/9])x 4 -S 1 , S 1 ≥0 22/9 - 2 = (2/9 - 0)x 3 + (-1/9 - (-1))x 4 -S 1 , S 1 ≥0

4/9 = 2/9x3 + 8/9x4 - S1 , S1 ≥ 0 - первое ограничение Гомори

Составленное ограничение дописываем к имеющимся в симплексной таблице.

После построения дополнительного ограничения имеем новую задачу линейного программирования, в которой 3 ограничения. Для получения опорного плана этой задачи необходимо найти третий базис-

ный вектор. Для этого определяем: min

f kj

базис вводим вектор х 4 .

4 / 9

Рассчитываем величину θ =

z ij> 0

8 / 9

Минимальное значение θ получено по дополнительной строке, значит, не прибегая к искусственной переменной, получаем опорный план расширенной задачи.

∆ j

Найденный план оптимален, но нецелочисленный. Строим новое ограничение Гомори.

Т.к. максимальная дробная часть среди компонент плана равна 1/2, записываем дополнительное ограничение по первой строке (можно и по третьей).

5/2 - = (1/4 - )x 3 + (-1/8 - [-1/8])S 1 -S 2 , S 2 ≥0

1/2 = 1/4x3 + 7/8S1 - S2 , S2 ≥ 0 - второе ограничение Гомори

Это ограничение добавляем в последнюю симплексную таблицу.

Получили задачу, в которой 4 ограничения, следовательно, в базисе должно быть 4 единичных вектора.

2 . Можно

ввести либо x 3 , либоS 1 . Введем векторS 1 .

1/ 2

4 / 7

соответствует дополнительному

7 / 8

ограничению.

∆ j

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

менной S 1 .

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

4/7 = 2/7x3 + 6/7S2 - S3 , S3 ≥ 0

Третье ограничение Гомори.

Определяем вектор, вводимый в базис:

вектор х 3 . Минимальное значениеθ = 2, что соответствует дополнительной строке.

После проведения очередных симплексных преобразований получили:

∆ j

План Х 5 - оптимальный нецелочисленный. Дополнительное ограничение запишем по второй строке:

1/2 = 1/4S3 - S4 , S4 ≥ 0

Четвертое ограничение Гомори.

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

0. Минимальное значение θ получилось по 3

строке, а не по строке Гомори, следовательно, переходим к М-задаче:

введем дополнительную переменную х 5

в ограничение Гомори.

С5 ’

Б5 ’

Х5 ’

∆ j

∆ j

∆ j

Дробная часть = max(1/3; 2/3) = 2/3

дополнительное ограниче-

ние записываем по второй строке.

2/3 = 1/3х4 + 2/3S4 - S5

S5 ≥

Пятое ограничение Гомори.

16 / 3

2 вводим х 4 .

Вектор, вводимый в базис: min

2 / 3

θ =

соответствует строке Гомори.

∆ j

План Х 8 = (3; 2; 3; 2) - оптимальный целочисленный.L max = 36.

Экономическая интерпретация: согласно полученному решению предприятию необходимо закупить 3 машины типа «А» и 2 машины типа «В». При этом будет достигнута максимальная производительность работы оборудования, равная 36 т продукции за смену. Полученную экономию денежных средств в размере 3 ден.ед. можно будет направить на какие-либо иные цели, например, на премирование рабочих, которые будут заниматься отладкой полученного оборудования. На излишнюю площадь в 2 кв.м можно поставить ящик с цветами.

Геометрическая интерпретация метода Гомори: строим множе-

ство планов (см. рисунок). В точке 1 - оптимальный нецелочисленный план.

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

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

Пусть Х* = (х1, х2, …,хm, …, хn) – оптимальный план найденный по симплекс методу, где базисом являются векторы А1, А2,…,Аm. Пусть хi дробное число (число в столбце В в iой строке). Тогда возможно, что в iой строке:

1. все хij целые, это означает, что задача не имеет целочисленного решения

2. некоторые хij дробные

Пусть [хi] и [хij] целые части чисел хi и хij, а {хi } и { хij } – дробные части.

Обозначим qi = {хi} и qij = { хij } и составим разности.

(qi1Х1+ qi1Х2+…+ qi1Хn)- qi ≥0

Преобразуем неравенство в уравнение умножив его на (-1) и добавив новую переменную Хn+1 и добавив новую строку в симплекс таблице (а значит и столбец). Решаем далее двойственным симплекс методом, если найденный план не является целочисленным, то процесс добавления новой переменной, строки и столбца в симплекс таблице повторяем.

Если в оптимальном плане несколько нецелочисленных компанент, то дополнительное ограничение составляем для максимального qi.

Вы также можете найти интересующую информацию в научном поисковике Otvety.Online. Воспользуйтесь формой поиска:

Еще по теме 47 Метод Гомори: основные идеи и краткое описание алгоритма. Экономический смысл введения дополнительного ограничения.:

  1. 25.Экономические методы управления, их целевое назначение. Виды и основное содержание методов экономического воздействия. Краткая характеристика и особенности применения экономических методов

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

В некоторых случаях допускается округление результатов. Например, если в оптимальном плане предусмотрено, что следует произвести 499683,3 автомашины, то экономически обосновано округление результата до 499683 или даже до 500000.

Существуют однако задачи, в которых подобное округление может создать большую ошибку. Например, если в оптимальном плане предусмотрено, что следует построить 0,67 заводов, то формальное округление до 0 или 1 недопустимо.

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

Если задача целочисленного программирования задана в канонической форме, она формулируется следующим образом:

найти максимум функции цели (линейной формы)

при системе ограничений

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

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

Метод Гомори решения задач целочисленного программирования

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

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

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

Теперь о том, как составлять упомянутое дополнительное условие. Оно, дополнительное условие, получается из одного из уравений системы ограничений из коэффициентов при неизвестных и самих неизвестных по формуле

, где в фигурных скобках - дробные части соответственно свободного члена и коэффициентов при неизвестных.

Например, из симплексной таблицы получаем такое уравнение:

.

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

Аналогично получаем дробные части коэффициентов при неизвестных:

(при x 3 ),

(при x 4 ).

А общее правило нахождения дробных частей таково: целой частью вещественного числа a называется самое большое целое число [a ] , не превыщающее a ; дробной частью вещественного числа a называется разность {a } = a - [a ] самого числа a и его целой части [a ] .

.

В нашем примере по приведённой выше формуле получается следующее уравнение:

.

Пример 1. Решить методом Гомори следующую задачу целочисленного программирования. Найти максимум целевой функции

при системе ограничений

Решение. Решаем задачу симплекс-методом. Поскольку у нас есть урок по решению задач линейного программирования симплекс-методом , сам метод объясняться здесь не будет, а будут приведены лишь симплексные таблицы.

Дополнительные неизвестные x 3 и x 4 примем за базисные. Выразим базисные неизвестные и функцию цели через неосновные переменные:

Из коэффициентов составим симплексную таблицу:

Составляем следующие таблицы до получения оптимального плана:

Таблица 3
Базисные неизвестные Свободные члены Свободные неизвестные Вспомогательные коэффициенты
X3 X4
X1 19/7 4/7 -1/7 -1/2
X2 4/7 -1/7 2/7
С 65/7 10/7 1/7 1/2

Из таблицы 3 находим оптимальный план . Поскольку этот оптимальный план не удовлетворяет условию целочисленности, нам нужно составить дополнительное условие. Дробной частью координаты является число , а дробной частью координаты - число .

Первое уравнение на основании таблицы запишется так:

.

Определив дробные части коэффициентов при неизвестных и свободных членов, получаем следующее дополнительное условие:

или, введя добавочную переменную ,

.

Получаем новую строку в симплексной таблице, полученной из таблицы 3 и добавления коэффициентов из только что полученного уравнения:

Таблица 4
Базисные неизвестные Свободные члены Свободные неизвестные Вспомогательные коэффициенты
X3 X4
X1 19/7 4/7 -1/7 -1/2
X2 4/7 -1/7 2/7
X5 -5/7 -4/7 -6/7
С 65/7 10/7 1/7 1/2

Совершаем шаг симплекс-метода и получаем таблицу:

Таблица 5
Базисные неизвестные Свободные члены Свободные неизвестные Вспомогательные коэффициенты
X3 X4
X1 17/6 2/3 -1/6 1/7
X2 1/3 -1/3 1/3 -2/7
X4 5/6 2/3 -7/6
С 55/6 4/3 1/6 -1/7

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

.

Составляем следующую таблицу:

Таблица 6
Базисные неизвестные Свободные члены Свободные неизвестные Вспомогательные коэффициенты
X3 X4
X1 17/6 2/3 -1/6 1/7
X2 1/3 -1/3 1/3 -2/7
X4 5/6 2/3 -7/6
X6 -5/6 -2/3 -5/6
С 55/6 4/3 1/6 -1/7

Оптимальный план получаем из следующей, завершающей таблицы:

Таблица 7
Базисные неизвестные Свободные члены Свободные неизвестные Вспомогательные коэффициенты
X3 X6
X1 3 4/5 -1/5 1/6
X2 0 -3/5 2/5 -1/3
X4 2 8/5 -7/5 7/6
X5 1 4/5 -6/5
С 9 6/5 1/5 -1/6

Так как найденный оптимальный план удовлетворяет условию целочисленности, задача целочисленного программирования решена. Координаты x 5 и x 6 можно не учитывать, так как начальные условия задачи содержит лишь четыре неизвестные. Поэтому окончательный оптимальный план запишется так:

,

а максимум функции цели равен 9.

Метод ветвей и границ решения задач целочисленного программирования

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

Задание границ, в которых должны находиться значения неизвестных в задаче целочисленного программирования, можно записать так:

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

Как метод ветвей и границ позволяет уточнить границы допустимых значений неизвестных?

Сначала решается, допустим, симплекс-методом задача линейного программирования, соответствующая задаче целочисленного программирования. Пусть найден оптимальный план в этой задаче и значением какой-либо его координаты является дробное число. Тогда потребуется составить две новые задачи линейного программирования. Как это сделать?

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

.

В другой новой задаче линейного программирования верхней границей значения координаты будет сама целая часть значения координаты . Это запишется так:

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

  • оптимальный план не является целочисленным,
  • оптимальный план является целочисленным,
  • задача не имеет решений.

Лишь в первом случае возможно "ответвление" новых задач способом, показанным выше. Во втором и третьем случае "ветвление" прекращается.

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

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

Согласно алгоритму решения задачи целочисленного программирования методом ветвей и границ, на каждой p -й итерации требуется сделать 4 шага.

Пример 2. Решить методом ветвей и границ следующую задачу целочисленного программирования. Найти максимум целевой функции

при системе ограничений

Решение. Допустим, что заданы или определены следующие границы оптимальных значений неизвестных:

.

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

В списке решаемых задач - 1-я задача:

Итерация 1.

Шаг 1. С помощью симплекс-метода получено решение 1-й задачи:

Так как найденный план не является целочисленным, следует шаг 4.

Шаг 4. Так как оптимальный план имеет дробную координату 1,2, то и . Применяя границы значений неизвестных 1-й задачи, получаем новые задачи. Во 2-й задаче нижней границей для является , а в 3-й задаче верхней границей для является .

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

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

В математической записи общая задача целочисленного программирования выглядит следующим образом:

максимизировать

при условиях

x j ≥ 0, x j – целые.

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

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

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



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

К целочисленным моделям выбора относят некоторые задачи оперативно-календарного планирования, например, задачи об оптимальной последовательности запуска различных изделий (деталей) в производство. Допустим необходимо определить порядок запуска n деталей, каждая из которых последовательно обрабатывается на нескольких станках. Переменные х ij равняются единице, если деталь j должна запускаться за деталью i , и нулю - во всех остальных случаях. Для каждого фиксированного j , так же как и для каждого i , только одна из n переменных может равняться единице, поэтому в число ограничений задачи входят следующие:

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

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

Рассмотрим математические понятия: конгруэнтности чисел, целой и дробной части числа . Число а конгруэнтно числу b в том и только том случае, когда разность а – b является целым числом. Конгруэнтность обозначают тремя горизонтальными черточками (); таким образом, а b , если а – b есть целое число.

Например: 5 / 3 ≡ 2 / 3 , т.к. 5 / 3 - 2 / 3 = 1;

- 1 / 3 ≡ 2 / 3 , т.к.- 1 / 3 - 2 / 3 = 1.

Все целые числа конгруэнтны друг другу и конгруэнтны нулю. Нецелочисленные элементы можно представить в виде суммы целой и дробной части числа а = [a ] + {a }. Квадратные скобки означают взятие целой части числа, заключённого в них, фигурные – взятие дробной части числа.

Целой частью числа а называется наибольшее целое число [a ], не превосходящее а .

Дробная часть числа а определяется как наименьшее неотрицательное число {a }, конгруэнтное числу а . Дробная часть числа а равна разности между числом а и его целой частью: {a }= а - [a ]

Например, для а = 2 1 / 3 [a ]= 2 {a} = 1 / 3

для a = - 2 1 / 3 [a ]= -3 {a} = 2 / 3

Свойства конгруэнтности чисел:

1. Если а b , то {а } = {b }.

2. {а +b } = {а } + {b }.

3. Если n - целое число, то для любого а

nа ≡ { } n {а }.

При решении задач целочисленного программирования методом Гомори первый этап совпадает с обычным расчетом по симплексному алгоритму. Полученное решение в общем виде будет удовлетворять всем условиям задачи, кроме требования целочисленности (не исключено, конечно, получение целочисленного решения уже на первом этапе). Если среди значений переменных в оптимальном плане (точка А на рис.13) есть дробные, то составляется дополнительное ограничение, как бы «отсекающее» дробную часть решения (линия 1 на рис.13), но оставляющее в силе все ограничения задачи, которым должен удовлетворять оптимальный план. Дополнительное ограничение присоединяется к исходным ограничениям задачи и к расширенной системе вновь применяется симплексная процедура. Если оптимальное решение снова окажется нецелочисленным (точка В на рис.13), то добавляется еще одно дополнительное ограничение (линия 2 на рис.13) и процесс вычислений повторяется. Алгоритм позволяет за конечное число шагов прийти к оптимальному целочисленному решению (если оно существует) (точка С на рис.13).

Рис. 13. Метод отсечений Гомори

Пример решения задачи целочисленного программирования. На приобретение оборудования для нового производственного участка выделено 20 ден.ед. Оборудование должно быть размещено на площади, не превышающей 38 м 2 . Предприятие может заказать оборудование двух видов: более мощные машины типа А стоимостью 5 ден.ед, требующие производственную площадь 8 м 2 (с учетом проходов) и обеспечивающие производительность 7 тыс, единиц продукции за смену; менее мощные машины типа Б стоимостью 2 ден.ед, занимающие площадь 4 м 2 и дающие за смену 3 тыс, единиц продукции.

Обозначим через х 1 количество приобретаемых машин А и через х 2 - количество приобретаемых машин Б, получаем математические условия задачи:

максимизировать 7х 1 + 3х 2 → max

при условиях: 5х 1 + 2х 2 ≤ 20

8х 1 + 4х 2 ≤ 38

х 1 , х 2 ≥ 0 (целые).

С помощью дополнительных переменных х 3 и х 4 исходные неравенства преобразуются в уравнения (приводятся к каноническому виду):

5х 1 + 2х 2 + х 3 = 20

8х 1 + 4х 2 + х 4 = 38

Если основные переменные х 1 и х 2 - целые числа, то из уравнений непосредственно следует, что и переменные х 3 и х 4 могут принимать только целочисленные значения.

Задача решается вначале без учета требования целочисленности.

Симплексная таблица имеет следующий вид:

Базис С План θ
Х 1 Х 2 Х 3 Х 4
X 1 →Х 3 20/5=4 min
Х 4 38/8=4,75
f(x) = 0 -7 -3
X 1 2/5 1/5 4:2/5=10
X 2 →X 4 4/5 -8/5 6:4/5=7,5 min
f(x) =28 -1/5 7/5
X 1 -1/2
X 2 7,5 -2 5/4
f(x) =29,5 1/4

В оптимальном плане Х 1 =1, Х 2 =7,5; максимум целевой функции составляет 29,5. Таким образом, необходимо купить один станок типа А и 7 станков типа В (на 8 станков не хватит ни денег, ни места), тогда объём выпуска продукции составит f(x) =7×1+3×7=28 тыс. единиц продукции.

Найдём целочисленное решение методом Гомори. Для переменной Х 2 , получившей нецелочисленное значение в плане, составляем следующее уравнение, непосредственно вытекающее из приведенной симплексной таблицы:

7,5 = Х 2 – 2Х 3 + 1,25Х 4 .

Х 2 = 7,5 + 2Х 3 – 1,25Х 4 .

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

Поскольку Х 2 - целое число, то целым является и выражение в правой части уравнения; следовательно, величина правой части данного уравнения конгруэнтна нулю:

7,5 + 2Х 3 – 1 ,25Х 4 0,

–2Х 3 + 1,25Х 4 7,5.

Учитывая приведенные выше свойства конгруэнтности, а также и то, что Х 3 и Х 4 - целые числа, это выражение можно преобразовать в следующее:

{-2}X 3 + {1,25}X 4 {7,5} ;

отсюда получаем:

0,25X 4 0,5.

Поскольку X 4 - неотрицательное целое число, имеем:

0,25X 4 = 0,5, или 1,5, или 2,5, ...;

следовательно,

0,25X 4 ≥ 0,5.

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

5х 1 + 2х 2 + х 3 = 20

8х 1 + 4х 2 + х 4 = 38

0,25х 4 – x 5 = 0,5.

Повторив процесс решения симплексным методом применительно к расширенной системе ограничений, получим новый оптимальный план, в котором значения переменных, входящих в базис, равны: Х 1 = 2; Х 2 = 5; Х 4 = 2 (остаток свободной площади).

Таким образом, получено оптимальное целочисленное решение задачи: при данных ограничениях максимум производительности (29 тыс. единиц продукции) обеспечивается приобретением 2 машин типа А и 5 машин типа Б.

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ

МЕТОД ВЕТВЕЙ И ГРАНИЦ

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

Рассмотрим модель

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

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

H j ≤ X j ≤ V j ; j=1,2,…,k,…,n.

Обычно H j = 0, но это условие не обязательно. Задача решается симплекс-методом. Если X k принимает дробные значения, то полагаем, что оптимальное решение задачи, будет удовлетворять линейному ограничению X k ≤ D k , либо линейному ограничению X k ≤ D k + 1 , где D k =[X k ] – ближайшее целое число в меньшую сторону от значения X k ; D k + 1 – ближайшее целое в большую сторону от X k . При этом H j ≤ D k ≤ V j – 1 . Тогда необходимо решить пару задач линейного программирования симплекс-методом:

А. В.

Получаем итерационный процесс, представляемый в виде дерева, вершина которого соответствует решению исходной задачи, а две соединенные с ней ветви являются решениями пары задач линейного программирования А и В. Полученные значения целевых функций при этом могут быть меньше или равны значению целевой функции исходной задачи f(X) A ≤ f(X) ­ 0 ; f(X) B ≤ f(X) ­ 0 . Каждая из двух новых полученных вершин ветвей может иметь свои дальнейшие ветвления.

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

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

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

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

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

Если выбранная задача приводит к обрыву (тупику) или значение функции меньшему, чем в задаче В.1 f(X) A.4 < f(X)­ В,1 ., то происходит возврат к задаче В.1 и происходит новое ветвление.



Рис.14. Блок-схема алгоритма метода ветвей и границ

Рис. 15. Метод «ветвей и границ»



Загрузка...