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

Определение. Задачи математического программирования с требованием целочисленности переменных называются задачами целочисленного программирования.

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

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

На практике применяется несколько способов решения таких задач.

1. Решить эту задачу симплекс-методом, и если получится нецелочисленное оптимальное решение, то округлить до ближайшего допустимого целочисленного решения. Этот путь возможен тогда, когда значения X в оптимальном решении достаточно ве­лики.

2. Найти точное решение целочисленной задачи линейного программирования (ЦЗЛП).

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

1. Они должны отсекать оптимальное нецелочисленное решение задачи, полученное на предыдущем шаге.

2. Они не должны отсечь ни одного допустимого целочисленного решения.

Разберем один из таких методов - метод отсечения Гомори.

Алгоритм решения ЦЗЛП методом Гомори

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

  X1 Х2 Хk Хk+1 Xn  
X1        
X2        
Хk        

Х1*=

Х2*=

…………

Хk*=

Хk+1*=0

…………

Хn*=0

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

2.Определение. Целой частью числа X называется ближайшее целое число, меньшее X. Обозначается [X].

Например, если х = 3,45; [x] = 3.

Определение. Дробной частью числа X называется разность

между X и целой частью этого числа.

Например, если x = 3,45; {x} =0,45.

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

Гомори доказал, что неравенство

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

Пример. Фермеры некоторого района решили оборудовать сортировочный ток. На закупку оборудования имеется 34 тыс.$, имеется площадь для тока размером 60 м2, имеется два типа сортировочных машин, которые можно закупить. Машина типа А стоит 3 тыс.$, занимает площадь 3 м2 с учетом проходов и сорти­рует 2 тонны зерна за смену; машина типа В стоит 4 тыс.$, занимает площадь 5 м2 с учетом проходов и сортирует 3 тонны зерна за смену. Поставщик сообщил, что машин тина В в наличии не более 8. Сколько и каких машин нужно закупить, чтобы обеспечить мак­симальную производительность тока за смену, не превысив имеющихся ресурсов?

Введём управляющие переменные. Обозначим x1 - количество купленных машин типа А, х2 - количество купленных машин типа В.

  X1 X2 Х3 Х4 х5  
Х3            
х4            
Х5            
F -2 -3        
X3         -5  
X4         -4  
Х2            
F -2          
Х3       -1 -1  
X1       1/3 -4/3 2/3
Х2            
F       2/3 1/3 251/3

По условию задачи очевидно, что закупать 2/3 машины типа А бессмысленно. Если данное решение округлить до допустимого решения, то получим

х1 =0

х2 = 8.

F = 24

Найдём точное решение. Строим отсечение.

;

  X1 Х2 Х3 X4 X5 X6  
        -1 -1    
        1/3 -4/3   2/3
               
        1/3 2/3 -1 2/3
Х3       -1/2   -3/2  
X1           -2  
х2       -1/2   3/2  
Х5       1/2   -3/2  
F       1/2   1/2  

Полученное решение целочисленно. Нужно закупить две машины типа А и семь машин типа В.

Вопросы для самоконтроля

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

2. Структура экономико-математической модели задачи
целочисленного программирования?

3. Какие существуют методы решения задач целочислен­ного программирования?

4. Пояснить суть метода Гомори.

5. Что называется сечением Гомори?

6. Пояснить принципиальную суть метода ветвей и гра­ниц.

7. Пояснить происхождение названия метода ветвей и границ.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: