Автор: Пользователь скрыл имя, 26 Декабря 2012 в 08:59, курсовая работа
Из практики рассмотрения задач математического программирования следует, что в общем виде решить их практически невозможно. Целесообразно рассматривать отдельные классы (виды) задач. Для каждого такого класса удается сформулировать алгоритм решения, приемлемый только для данного класса задач. Наиболее разработанными в математическом программировании являются задачи линейного программирования(ЛП).
ВВЕДЕНИЕ 3
ПОСТАНОВКА ЗАДАЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ 4
1. Формы задачи линейного программирования. 4
2. Переход к канонической форме. 7
СИМПЛЕКС-МЕТОД 8
1. Теоретические основы симплекс-метода. 8
2. Прямой алгоритм симплексного метода 12
МЕТОД ГОМОРИ 14
В центральной части таблицы записываются коэффициенты при неизвестных в ограничениях, в столбце X - правая часть ограничений (базисные компоненты плана), в первой строке - коэффициенты линейной формы, во второй строке – переменные, входящие в целевую функцию и систему ограничений. Основное поле симплекс таблицы - коэффициенты при неизвестных в ограничениях. В первом столбце для удобства вычислений будем заносить коэффициенты линейной формы при базисных переменных, указанных во втором столбце (умножение его на столбец X (свободные члены Bi≥0) с суммированием дает значение L(X); аналогичное умножение его на столбец Xk даст Zk). Последняя строка получается вычитанием из предыдущей строки элементов первой строки таблицы и позволяет судить об оптимальности плана.
Т.к. выбор типа искомого экстремума (максимума или минимума) носит относительный характер, то при решении задач максимизации/минимизации в последней строке должны быть только неотрицательные элементы.
Обратим внимание на определение начального опорного плана. Пусть задача приведена к канонической форме и компоненты вектора правой части неотрицательны. Если в системе векторов коэффициентов при переменных (матрице А) обнаруживается подсистема, образующая единичную подматрицу, то эти векторы образуют базис опорного плана и вектор правой части определяет базисные компоненты этого плана.
Если такой единичной подматрицы не обнаруживается, то либо придется перебирать все подсистемы m уравнений с m неизвестными в надежде обнаружить неотрицательные решения, либо прибегнуть к методу искусственного базиса.
В последнем случае в ограничения добавляют неотрицательные, т.н. искусственные переменные так, чтобы возникла единичная подматрица коэффициентов, и эти переменные включают в линейную форму с коэффициентом -М для задачи максимизации, где М>0 - сколь угодно большое число.
Полученная М-задача решается до получения оптимального плана.
Если в оптимальном плане М-задачи значения искусственных переменных равны нулю, то значения остальных компонент образуют оптимальный план исходной задачи.
Если в оптимальном плане М-задачи значение хотя бы одной из искусственных переменных отлично от нуля, то исходная задача не имеет ни одного плана (ее ограничения противоречивы).
Если
некоторая задача решается прямым алгоритмом
симплексного метода, то решение сопряженной
задачи можно видеть в строке Z конечной
симплексной таблицы в
При решении многих задач (планирование мелкосерийного производства, распределение кораблей по путям сообщения, выработка суждений типа "да-нет" и т.п.) нецелочисленное решение не имеет смысла. Попытка тривиального округления до целых значений приводит либо к нарушению ограничений задачи, либо к недоиспользованию ресурсов. Как мы имели возможность убедиться, для произвольной линейной программы (за исключением программ типа классической транспортной задачи, где коэффициенты матрицы ограничений равны 1 или 0) гарантировать целочисленность решения невозможно.
В случае двухмерной задачи проблема решается относительно просто путем выявления всех целочисленных точек, близких к границе множества планов, построения выпуклого множества планов, содержащего все целочисленные планы и решения задачи над этим множеством.
B общем случае выдвигается идея последовательного отсечения нецелочисленных оптимальных планов: обычным симплексным методом отыскивается оптимальный план и, если он нецелочисленный, строится дополнительное ограничение, отсекающее найденный оптимальный план, но не отсекающее ни одного целочисленного плана.
Эта идея,
принадлежащая Д. Данцигу и Р.
Гомори, впервые была представлена
в форме дополнительного
(сумма небазисных
компонент оптимального плана
должна быть отлична от нуля;
хотя бы одна из небазисных
компонент должна быть
К сожалению, для абсолютного большинства задач скорость сходимости процесса таких отсечений мала. Потому Р. Гомори предложена другая форма дополнительного ограничения. Так, если компонента плана, определяемая k-м уравнением системы ограничений, нецелочисленна, то добавляется ограничение
,
где fk - дробная часть компоненты плана (правой части ограничения) и fkj - дробная часть коэффициента при Xj (целая часть числа – наибольшее целое, не превышающее это число; дробная часть числа равна разности между числом и его целой частью), S* - новая дополнительная переменная.
Можно уменьшить объем преобразований, если руководствоваться следующими правилами:
1) выбирать
в качестве базового для
2) для
ввода в базис опорного плана
расширенной задачи выбирать
переменную, для которой достигается
минимум из отношений
3) если
одна из ранее введенных
Появление дополнительного ограничения и дополнительной переменной вновь приводит к проблеме выбора начального опорного плана расширенной задачи и к использованию с этой целью искусственной переменной. Следует заметить, что если при поиске переменной, исключаемой из базиса, значение Q (определяемое с учетом дополнительного ограничения) соответствует этому ограничению, то можно отказаться от использования искусственной переменной (она все равно выведется из базиса на этом же шаге решения).
Заметим, что для целочисленных программ может обнаружиться отсутствие целочисленных планов (противоречивость ограничений).
Для предложенного
здесь метода доказана конечность процесса
отсечений, но число этих отсечений
непредсказуемо (вполне может обнаружиться
быстрое решение задач с
С теоретической
точки зрения симплекс метод является
не эффективной вычислительной процедурой,
так как при каждой итерации в
базисе изменяется только одна переменная.
Вычилительную эффективность СМ можно
оценить с помощью 2-х параметров:
1) число итераций, необходимых для достижения
оптимума;
2) общие затраты машинного времени.
Из практики известно,
что если в задаче n переменных и m ограничений,
то количество итераций t принадлежит
[m,3m], а в среднем равно 2m. Максимальное
количество итераций равно 2(m+n)Разработанная
программа позволит упростить решение
подобных задач непосвященными во все
тонкости пользователям, а также послужит
примером для интересующихся экономико-математическими
методами людей.
Следует отметить, что симплексный метод в различных вариациях фигурирует во многих задачах, например, при рассмотрении двойственности в линейном программировании, целочисленном линейном программировании, матричных играх и т.д.