Алгоритм решения частично целочисленной задачи — КиберПедия 

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

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

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

2021-02-05 62
Алгоритм решения частично целочисленной задачи 0.00 из 5.00 0 оценок
Заказать работу

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

Пусть хk - переменная частично целочисленной задачи, принимающая целое значение. Если хk в решении ЗЛП без условия целочисленности является дробной, то с ней связано производящее уравнение

xk  + å a k j wj = b k.

Преобразуем это уравнение, используя соотношение:

b k = [ b k ] + fk,

где fk   - дробная часть b k.

Производящее уравнение будет иметь вид:

xk  -  [ b k ] = fk - å a k j wj .

Здесь некоторые из переменных wj  - нецелочисленные. Для целочисленной переменной xk  выполняется одно из неравенств:

xk   £ [ b k ] или xk   ³ [ b k ] + 1.

С учетом последнего соотношения для производящей строки получим:

fk - å a k j wj £ 0 или fk - å a k j wj ³ 1

Преобразуем данные неравенства:

å a k j wj ³ fk 0 или å a k j wj £ fk - 1

Обозначим:

J +  - множество значений j, для которых a k j ³ 0,

J -  - множество значений j, для которых a k j £ 0.

Тогда:

                             (*)

Используя два эти неравенства, получим следующее соотношение:

,

где величина .

Данное неравенство сводится к первому из соотношений (*), если второе слагаемое умножить на , и сводится ко второму соотношению (*), если первое слагаемое умножить на ,

Последнее неравенство преобразуется в следующее отсечение Гомори для частично целочисленных задач:

Данное уравнение вставляется в симплекс-таблицу. Оптимальное решение находится двойственным симплекс-методом /2/.

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

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

           max z = 7x1 + 9x2

                  -x1 + 3x2 £ 6

                  7x1 + x2 £ 35

                    xi ³ 0, х1 - целая.

Решаем задачу без условия целочисленности. Оптимальная симплекс-таблица была получена ранее:

БП х1 х2 х3 х4 Решение
z 0 0 28/11 15/11 63
х2 0 1 7/22 1/22 7/2
х1 1 0 -1/22 3/22 9/2

x1 = 9/2, то есть нарушается условие целочисленности этой переменной. Значит cтрока таблицы, связанная с x1  будет производящей:

х1 - 1 /22 x 3 + 3/22 x 4 = 9/2

Таким образом:

a 13 = -1/22; a 14 = 3/22; f1 = 1/2.

J+ = {4}; J - = {3}.

Отсечение Гомори будет иметь вид:

S1 - [3/22x4 + (-1)(-1/22)x3] = -1/2

или

S1 - 1/22x3 - 3/22x4 = -1/2.

Включаем это отсечение в симплекс-таблицу. Новая таблица имеет вид:

БП х1 x 2 x3 x4 S1 Реш.
z 0 0 28/11 15/11 0 63
x 2 0 1 7/22 1/22 0 7/2
x 1 1 0 -1/22 3/22 0 9/2
S 1 0 0 - 1 /22 - 3 /22 1 -1/2

 

Двойственным симплекс-методом находим оптимальное решение задачи (за 1 итерацию):

БП х1 x 2 x3 x4 S1 Реш.
z 0 0 23 / 11 0 10 58
x 2 0 1 10/33 0 -1/3 10/3
x 1 1 0 -1/11 0 1 4
x 4 0 0 1/3 1 -22/3 11/3

Условие целочисленности переменной x1 соблюдается. Значит, получена оптимальная симплекс-таблица и решение задачи имеет вид:

x1 = 4, х2 = 10 /3, z = 58.

 

Метод ветвей и границ.

 

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

Сначала решается ЗЛП без условия целочисленности переменных. Пусть переменная xr - целочисленная переменная, которая в оптимальном решении ЗЛП без условия целочисленности принимает дробное значение xr *. Очевидно, что интервал значений [xr * ] < xr < [xr * ] + 1 не содержит оптимального решения задачи. Значит оптимальное решение задачи должно удовлетворять одному из неравенств:

xr £ [xr * ] или xr ³ [xr * ] + 1.

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

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

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

Пример. Решить полностью целочисленную задачу:

           max z=2x1 + 3x2

           5x1  + 7x2 £ 35

           4x1  + 9x2 £ 36                                                                                      

            xi ³ 0 - целые

Сначала решаем ЗЛП без условия целочисленности. Получим следующее оптимальное решение:

z = 14 6/17; x1 = 3 12/17; x2 = 2 6/17.

 Представим дальнейшие вычисления в виде следующей схемы:

 

1 z = 14 6/17 x1 = 3 12/17 x2 = 2 6/17

 

 

 

     
 

 

 


2 z = 14 6/17 x1 = 3 12/17 x2 = 2 6/17
3 z = 13 1/2 x1 = 2 1/4 x2 = 3

 


4 z = 14 x1 = 4 x2 = 2
5 z = 14 2/7 x1 = 5 x2 = 1 3/7

 

Использовался следующий порядок расчета:

1. Вершина (1) - решение исходной ЗЛП.  

2. Вершина (2) - решение исходной ЗЛП с ограничением x2 £ 2.

3. Вершина (3) - решение исходной ЗЛП с ограничением x2 ³ 3.

4. Вершина (4) - решение исходной ЗЛП с ограничениями x2 £ 2; x1 £ 4. Так как решение задачи целочисленное, то значение целевой функции данного решения объявляется текущей границей: z г = 14.

5. Вершина (5) - решение исходной ЗЛП с ограничениями x2 £ 2; x1 ³ 5. Так как значение целевой функции z может быть в этой задаче только целочисленным, а при ветвлении значение z только ухудшится, то лучшее целое значение целевой функции на ветке (5) z = 14, то есть улучшить текущую границу z г на этой ветке не удастся. Следовательно, данная ветка прозондирована.

6. Вершина (3) считается прозондированной, так как значение целевой функции в этой вершине z = 13 1/3 меньше текущей границы, а при ветвлении ее значение не возрастает.

Так как все подзадачи прозондированы, то решение, соответствующее текущей границе является оптимальным, то есть z = 14; x1 = 4; x2 = 2.

 

Задание к лабораторной работе

 

Задания к лабораторной работе берутся из сборника вариантов контрольных работ /4/. С помощью программы "Решение задач целочисленного программирования" необходимо решить задачу 1а своего варианта. С помощью метода ветвей и границ по программе "Решение задач линейного программирования" найти решение задачи 1а. Типовой отчет по лабораторной работе приведен ниже.



Поделиться с друзьями:

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

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



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.025 с.