24.1. Целочисленное программирование. Общая формулировка задачи
Некоторые задачи линейного программирования требуют целочисленного решения. К ним относятся задачи по производству и распределению неделимой продукции (выпуск станков, телевизоров, автомобилей и т. д.). В общем виде математическая модель задачи целочисленного программирования имеет вид
При ограничениях:
Оптимальное решение задачи, найденное симплексным методом, часто не является целочисленным. Его можно округлить до ближайших целых чисел. Однако такое округление может дать решение, не лучшее среди целочисленных решений, или привести к решению, не удовлетворяющему системе ограничений. Поэтому для нахождения целочисленного решения нужен особый алгоритм. Такой алгоритм предложен Гомори и состоит в следующем.
Симплексным методом находят оптимальное решение задачи. Если решение целочисленное, то задача решена. Если же оно содержит хотя бы одну дробную координату, то накладывают дополнительное ограничение по целочисленности и вычисления продолжают до получения нового решения. Если и оно является нецелочисленным, то вновь накладывают дополнительное ограничение по целочисленности. Вычисления продолжают до тех пор, пока не будет получено целочисленное решение или показано, что задача не имеет целочисленного решения.
Пусть получено оптимальное решение Опт = (F1, F2, ... , Fr, 0, ..., 0), которое не является целочисленным, тогда последний шаг симплексной таблицы имеет следующий вид:
Где R — ранг системы ограничений; Hi,R+1 — коэффициент симплексной таблицы I-й строки, (R + 1)-го столбца; Fi — свободный член I-й строки.
Пусть Fi и хотя бы одно Hij (J = , r = ) — дробные числа.
Обозначим через [Fi] и [Hij] целые части чисел Fi и Hij.
Определение 1. Целой частью числа Fi называют наибольшее целое число, не превосходящее числа Fi.
Дробную часть чисел Fi и Hij обозначим {Fi} и {Hij}, она определяется следующим образом:
Пример.
Если Fi и хотя бы одно значение Hij дробны, то с учетом введенных обозначений целых и дробных чисел дополнительное ограничение по целочисленности примет вид
{hi, r+l} xr+1 + {hi, r+2} xr+2 + • • • + {hi, п} xп ≥ {fi}.
Примечания. 1) Если Fi — дробное число, а все Hij — целые числа, то задача линейного программирования не имеет целочисленного решения.
2) Ограничение целочисленности может быть наложено не на все переменные, а лишь на их часть. В этом случае задача является частично целочисленной.
< Предыдущая | Следующая > |
---|