Порядок выполнения лабораторной работы

Исследование операций

Лабораторная работа №1

МОДЕЛИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ.

Контрольные вопросы

1. Постановка задачи линейного программирования. Свободные и базисные переменные.

2. Привилегированная форма ограничений.

3. Симплексные таблицы. Построение начального опорного плана.

4. Критерий оптимальности опорного плана.

5. Симплексное преобразование.

6. Двойственная задача.

7. Двойственный симплекс-метод или М-задача ?

ЛИТЕРАТУРА

1. Сухарев А. Г., Тимохов А. В., Федоров В. В. Курс методов оптимизации. – М.: Наука, Главная редакция физико-математической литературы, 1986. – 328 с.

2. Кузнецов А. В., Сакович В. А., Холод Н. И. Высшая математика: математическое программирование: Учебник для студ. экон. спец. вузов. – Минск: Выш. шк., 1994. – 286 с.

3. Аладьев В. З., Шишаков М. Л. Введение в среду пакета Mathematica 2.2. – М.: Инф.-издат. дом "Филинъ", 1997. – 368 с.

Часть 1. СИМПЛЕКС-МЕТОД

Цель – изучение универсального метода решения задач линейного программирования (ЗЛП) – симплекс-метода (СМ).

Указания по организации самостоятельной работы студентов

Перед тем, как приступить к выполнению лабораторной работы, следует изучить [3, с. 11-62]. Здесь цветом выделены важные замечания.

Объектом исследования является задача линейного программирования, представленная в каноническом виде:

(1)

Необходимо найти точку из области допустимых решений (ОДР) , доставляющую целевой функции оптимальное значение.

Теоретические сведения

Симплексный метод решения задач линейного программирования является итерационным методом и состоит из следующих трёх этапов:

1. Построение начального опорного плана;

2. Формулировка критерия оптимальности опорного плана;

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

Любую корректно сформулированную задачу линейного программирования можно представить в виде:

(2)

Система ограничений-равенств имеет предпочтительный вид,и получается из (1) методом Жордана-Гаусса. Переменные называются базисными переменными (БП), а переменные – свободными переменными (СП).

В этом случае начальный опорный план будет иметь следующую структуру:

.

Внимание !! Все параметры aij и bi брать после выделения базиса, записав систему в предпочтительном виде (2). Выбирать базис так, чтобы bi³0 . Эти условия необходимы ! Обойти трудности с выбором базиса можно, введя искусственный базис (см. лекция 3 и программа SimplexWin).

Используя связь между БП и СП, преобразуем выражение для целевой функции таким образом, чтобы оно содержало только свободные переменные:

где ;

.

Из последней формулы непосредственно следует, что

.

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

Исследуемая задача линейного программирования может быть наглядно представлена в виде таблицы, называемой симплексной таблицей (СТ).

Симплексная таблица, соответствующая начальному опорному плану , будет иметь вид:

БП
 

( Внимание ! В разных источниках внешний вид симплекс-таблиц может различаться.)

Очевидно, что для базиса .

Анализ последней (m+1)-й строки симплексной таблицы позволяет сформулировать критерий оптимальности опорного плана:

если решается задача линейного программирования на максимум и для некоторого опорного плана все , то этот опорный план – оптимальный;

если решается задача на минимум и для некоторого опорного плана все , то этот опорный план – оптимальный.

Рассмотрим задачу на максимум.

Если для некоторого значения индекса j0 оценка СП , то следует перейти к не худшему опорному плану и соответствующей ему новой симплексной таблице. Столбец, находящийся в СТ над оценкой называют разрешающим столбцом СТ, а переменную – разрешающей переменной. Увеличив значение СП можно увеличить значение целевой функции. Для того, чтобы не выйти при этом за пределы ОДР , увеличение следует производить на величину

( ≥0 для НЕ двойственного СМ ),

которая называется наименьшим симплексным отношением.

Строка с индексом i0 называется разрешающей строкой СТ, а элемент – разрешающим или ключевым элементом.

Структура нового опорного плана будет следующей:

.

Переход к новой симплексной таблице, называемый симплексным преобразованием, осуществляется по следующим правилам:

1. Элементы разрешающей строки i0 в новой симплексной таблице, включая βi0, должны быть заменены на элементы вида:

.

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

.

2. Элементы разрешающего столбца j0 исходной СТ должны быть заменены на

.

3. Все остальные элементы новой симплексной таблицы могут быть найдены по формулам:

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

Порядок выполнения лабораторной работы

Изучить симплексный метод решения задач линейного программирования.

Переписать систему ограничений-равенств своего варианта из таблицы 1 в предпочтительном виде.

Заполнить симплекс-таблицу и проделать вручную 1 шаг.

Составить схему алгоритма.

Составить программу на одном из алгоритмических языков или пакетов.

Вывести на печать промежуточные результаты, показывающие процесс решения; значение точки экстремума и функции в точке экстремума .

Решить ту же задачу с применением программы simplexWin,инсталлировав ее в открытую для пользователя папку, например, C:\temp

Получить последовательность симплекс-таблиц для вашего варианта. Результаты вывести в Excel и сравнить. Программа решает любой тип задачи, самостоятельно преобразуя задачу на минимум в стандартную задачу на максимум: F ® -F и добавляет (-Mz) даже там, где можно обойтись! (Метод искусственных переменных – «М-задача» описан в лекции №3). Ваши промежуточные таблицы зависят от выбора начального базиса и могут не совпасть с полученными программой. Для вырожденной прямой задачи обратную задачу эта прога может решить неверно.

Решить ту же задачу с применением встроенной функции пакета “Mathematica”.

rr=Maximize[2x[1]-4x[2]+x[3]+30,

3x[1]-3x[2]+x[3]-x[4]==4&&

-4x[1]-x[2]-3x[3]-x[5]==-12&&

x[1]>=0&&

x[2]>=0&&

x[3]>=0&&

x[4]>=0&&

x[5]>=0,

{x[1],x[2],x[3],x[4],x[5]}]

out -> {36,{x[1]®3,x[2]®0,x[3]®0,x[4]®5,x[5]®0}}

Замечание. В версиях 4, и ниже пакета Mathematicaвместо Maximize[] работает встроенная функция ConstrainMax.

Вместо пакета Mathematicaможно пользоваться любым другим, например,Mathcad.

Сделанное занести в отчет:

Дата, Лаб.№ и название. Группа, ФИО, №вар. Исходные данные. Симплекс-таблица ручного расчета. Программа и результаты. Все таблицы в simplexWin. Проверка расчета в “Mathematica”, Выводы. Теорию из методички переносить не надоJ

Наши рекомендации