Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Лабораторная работа №23 «Целочисленное программирование»
Теоретическая часть Целочисленным (иногда его называют также дискретным) программированием называется раздел математического программирования, изучающий экстремальные задачи, в которых на искомые переменные накладывается условие целочисленности (то есть значения переменных должны быть целыми числами). Огромное число экономических задач носят целочисленный характер, что связано, прежде всего, с физической неделимостью многих расчетов: нельзя построить 2, 5 завода, купить 1, 5 трактора, задействовать на работу 3, 3 человека, построить 100, 7 скотомест и т.п. В большинстве случаев практическую задачу решают обычным симплексным методом, а затем округляют до целых чисел. Это оправдано в том случае, если дробная часть составляет очень малую часть от целого. Но иногда такой подход может внести большие изменения. Например, довольно существенно выбрать покупку одного или двух тракторов, если в результате решения без условия целочисленности переменная приняла значение 1, 5. Математическая запись задачи целочисленного программирования. Алгоритм метода Гомори для решения задач целочисленного программирования на максимум целевой функции 1. Задача целочисленного программирования решается симплексным методом без условия целочисленности до получения оптимального решения. 2. Если полученное оптимальное решение имеет целое значение переменных, то оптимальное решение целочисленной задачи найдено. Если хотя бы одна переменная имеет дробное значение, то переходят к п.3 3. Вводится дополнительное ограничение. Правила введения дополнительного ограничения: · среди значений переменных выбирается переменная, имеющая наибольшую дробную часть (т.е. определяется строка симплексной таблицы, в которой находится свободный член с наибольшей дробной частью); если переменные имеют равные дробные части, то можно выбрать любую, но условимся выбирать с меньшим номером; · из каждого коэффициента этой строки вычитается максимальное целое число, не превышающее этот коэффициент (особое внимание для отрицательных чисел). Полученные числа являются коэффициентами нового ограничения при соответствующих переменных и свободным членом; · тип нового ограничения " ³ "; · чтобы ввести дополнительное ограничение в симплексную таблицу, надо привести его к типу " =" (каноническая форма записи) и умножить на " -1"; · дополнительная переменная, вошедшая в это ограничение, входит в базис симплексной таблицы, а также в таблицу записываются все коэффициенты преобразованного ограничения. 4. Новая строка таблицы (введенное дополнительное ограничение) принимается за разрешающую строку. 5. Для этой строки подсчитываются двойственные симплексные отношения, т.е. отношения неотрицательных оценок (Dj) к строго отрицательным коэффициентам разрешающей строки. Если в разрешающей строке нет ни одного строго отрицательного элемента при переменных, то система ограничений не совместна в области целочисленных решений. 6. По наименьшему по абсолютной величине отношению (по наибольшему отрицательному отношению) выбирается разрешающий столбец. 7. На пересечении разрешающей строки и разрешающего столбца определяется разрешающий элемент и выполняются преобразования однократного замещения (аналогично симплексному методу). Далее алгоритм повторяется с пункта 2 до получения оптимального целочисленного решения. Алгоритм метода Гомори конечен. Для решения задачи на минимум целевая функция умножается на " -1" и в дальнейшем используется алгоритм решения задачи на максимум. При записи оптимального решения значение целевой функции умножается на минус единицу, то есть переходим от максимума целевой функции к минимуму. Пример Найти maxZ=x1+3x2, при условиях x1+x2 ³ 1 x1+2x2 £ 4 -x1+2x2 £ 2 x1 ³ 0; x2 ³ 0 x1, x2 - целые
Сначала необходимо найти оптимальный план, не принимая во внимание условие целочисленности. Для этого приводим задачу к канонической форме, исходное опорное решение получаем методом искусственного базиса (М-методом), заносим в симплексную таблицу. maxZ=x1+3x2 +0x3 +0x4 +0x5 –My1 x1+x2 – x3+y1 =1 x1+2x2 +x4 = 4 -x1+2x2 +x5 = 2 xj ³ 0, j=1¸ 5, y1 ³ 0
В четвертой симплексной таблице получено оптимальное решение задачи.
Так как искусственная переменная y1=0, то можно исключить ее из таблицы и в дальнейшем не рассматривать. Переменная x2 и x3 имеют дробные значения, т.е. условия целочисленности не выполняются. Так как дробные части значений переменных x2 и x3 равны, то можно выбрать любую переменную. Введем ограничение на целочисленность переменной x2. Определим коэффициенты дополнительного ограничения: аi0 = 3/2 – 1 =1/2 ( 1 – максимальное целое число, не превышающее 3/2); аi1 = аi2 = аi3 = 0 (0-0=0; 1-1=0) аi4 = 1/4-0=1/4 аi5 =1/4-0=1/4 Получим дополнительное ограничение: 1/4х4+1/4х5≥ 1/2 Приводим это ограничение к каноническому виду: 1/4х4+1/4х5 – х6 =1/2; умножаем на " -1": -1/4х4-1/4х5 + х6 = -1/2 и заносим в последнюю симплексную таблицу.
Принимаем новую строку за разрешающую и подсчитываем отношение неотрицательных оценок к строго отрицательным коэффициентам разрешающей строки. По наибольшему отрицательному отношению выбираем разрешающий столбец (это столбец x5). Проводим преобразования однократного замещения.
В таблице 5 получено оптимальное решение (все Dj ³ 0) с целочисленными значениями переменных: Х*(2, 1, 2, 0, 2, 0). MaxZ(X*)=5. Общая постановка задачи Найти оптимальное решение задачи симплексным методом без условий целочисленности. Проверить: является ли найденное решение целочисленным и если нет, то найти целочисленное решение методом Гомори. |
Последнее изменение этой страницы: 2017-03-14; Просмотров: 367; Нарушение авторского права страницы