Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Modelirovanie_obschaya_lektsia.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать

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

Постановка задачи:

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

Например:

  • Задача распределения производственных заданий между предприятиями, если количество единиц продукции не делимо.

  • Раскрой материала.

  • Распределение судов по линиям, а самолетов по рейсам.

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

Формулировка задачи:

Найти X, доставляющие оптимальное значение линейной функции Z = sum (CiXi) min(max), при ограничениях sum (AijXj=Bj (j=1, m))

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

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

  2. Так как линейная функция достигает оптимального решения в угловой точке многограннике решений, то построение такого многогранника обеспечивает цело численность оптимального решения.

Метод решения, предложенный Гомори основан на симплексном методе и состоит:

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

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

  3. Процесс продолжается до тех пор, пока либо будет найден целочисленный оптимальный план, либо будет доказана, что задача не имеет целочисленный план (если для дробного xi все x(I,j) в строке целые).

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

Составление дополнительного ограничения

Пусть оптимальный план x (x1,x2,…,xn) получен на базисе A1,A2,…,AN, тогда последняя симплекс таблица имеет вид:

Предположим, xi – дробное, тогда некоторый x(I,j) также дробные. В противном случае задача не имеет целочисленного решения. Обозначим через [xi] и [x(I,j)] целые части xi и x(I,j). То есть наибольшее целые числа не превосходящие xi и x(I,j). Тогда, дробная часть qi и q(I,j) определяется разностями: qi=xi-[xi] и q(I,j)=x(I,j)-[x(I,j)].

Так как по условию xj неотрицательные целые числа, то и разность [(qi1x1+qi2x2+…+qinxn)-qi]>0, также является целым неотрицательным числом. Преобразуя это неравенство в уравнение, вводя дополнительную переменную xn+1, умножим уравнение на -1 и добавим симплекс таблицу. Затем применяя двойственный симплекс метод, получаем новый план. Если он не является целочисленным, то составляется новое дополнительное ограничение. Если в оптимальном плане несколько дробных x(I,j), то дополнительное ограничение составляется для максимального qi. Это ускорит процесс получения оптимального целочисленного решения.

X1

X2

X3

X4

X5

X6

b

X7

z

0

0

0

-19/3

-11/3

-1/3

-46/3

0

X3

1

0

0

2

1

0

4

0

X2

0

1

0

-1/3

1/3

2/3

11/3

0

X1

0

0

1

-2/3

-1/3

1/3

1/3

0

X7

0

0

0

-2/3

-1/3

-2/3

-1/3

1

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

Компонент ai соответствующий отрицательному xi исключается из базиса, а вектор соответствующий отрицательному значению в Z строке вводится в базис. Для выбора вектора просматривается I строку, если в ней нет отрицательной x(I,j), то линейная функция двойственной задачи неограниченна на многограннике решений, и исходная задача не имеет решений. Если некоторый x(I,j) меньше нуля, то вычисляется отношение О(0j)=min xi/x(I,j)>=0; и определяем вектор соответствующий максимуму maxO(0,j)*(zj-cj) или при решении задачи на минимум minO(0,j)*(zj-cj). Этот вектор включается в базис исходной задачи. Исключаемый вектор определяется ведущим элементом. После исключения отрицательного значение xi, задача решается обычным симплекс методом. Если все xi<0, то за одну итерацию можно найти исходный план задачи, выбрав O(0,j)=max xi/x(I,j)>0.