- •Введение
- •Лабораторная работа I одномерная оптимизация
- •Постановка задачи
- •Краткие общие сведения Метод Пассивного поиска
- •Метод Фибоначчи
- •Метод золотого сечения
- •Порядок проведения лабораторной работы
- •Краткие общие сидения
- •Порядок проведения лабораторной работы
- •Порядок проведения лабораторной работы
- •Требования к отчету
- •Тексты исходных задач Вариант I
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Лабораторная работа 5 транспортная задача
- •Постановка задачи
- •Краткие общие сведения
- •Порядок проведения лабораторной работы
- •Краткие общие сведения
- •Порядок проведения лабораторной работы
- •Требования к отчету
- •Контрольные вопросы
- •Содержание
- •197376, Санкт-Петербург, ул. Проф. Попова, 5
Краткие общие сидения
Симплексный метод решения задач линейного программирования состоит из двух этапов:
1) поиск крайней точки допустимого множества,
2) поиск оптимальной точки путём направленного перебора крайних точек.
Преобразуем ограничения Ax ≥ B к виду Y = Ax – B ≥ 0.
- 11 -
Графический способ решения задачи симплексным методом связан
с таблицей:
-
X1
X2
...
Xn
B
Y1
α11
α12
...
α1n
B1
Y2
α21
α22
...
α2n
B2
...
...
...
...
...
...
Ym
αm1
αm2
...
αmn
Bm
C1
C2
...
Cn
ƒ(X)
Крайняя точка найдена, если все элементы вектора-столбца В боль- ше нуля. Крайняя точка не существует, если в таблице существует строка, все элементы которой неположительны, а последний элемент -отрицательный.
Чтобы найти крайнюю точку надо:
1) выбрать строку i, в которой В[i] < О;
2) выбрать столбец S, в котором A[i, S] ≥ 0;
3) в столбце S задать номер строки r разрешающего элемента так, чтобы отрицательное отношение B[r]/A[r, S] было максималь-ным.
4) поменять местами имена координат в таблице из строки r и столбца S.
5) рассматривая элемент A[r, S] как разрешающий, необходимо преобразовать таблицу по формулам
ARS := A[r, s];
Z1[r, S] := 1 / ARS;
Z1[r, j] := -Z[r, j] / ARS, j ≠ S;
Z1[i, S] := Z[i, S] / ARS, i ≠ r;
Z1[i, j] := (Z[i, j] * ARS – Z[i, S] * Z[r, j]) / ARS,
i ≠ r, j ≠ S;
Z := Z1,
где под Z и Z1 понимается соответственно первоначальное и преобразованное значение таблицы (кроме левого столбца и верхней строки).
Оптимальная, точка найдена, если все элементы вектор-строки С ≥ О (при этом все элементы вектор-столбца B ≥ 0).
- 12 -
Оптимальная
точка не существует, если в таблице есть
стол-
бец j, в
котором С[j] <
0, а все A[i,
j] > 0 при
.
Чтобы найти оптимальную точку, надо:
1) выбрать столбец S, в котором C[S] < 0;
2) в столбце S задать номер строки r разрешающего элемен- та так, чтобы отрицательное отношение B[r] / A[r, S] было максимальным.
3) поменять местами в таблице имена координат из строки r и столбца S.
4) преобразовать таблицу по формулам (3.1).
Координаты оптимальной точки определяются следующим образом:
1) если X[j] находится на i -м месте левого столбца, то его значение равно B[i];
2) если X[i] находится на j -м месте верхней строки, то его значение равно 0.
Порядок проведения лабораторной работы
1. Получить у преподавателя вариант задания и указание по режиму его ввода.
Возможны следующие режимы ввода:
а) ввод из стандартного файла, при этом надо указать только номер лабораторной работы и номер варианта;
б) ввод с терминала. В этом случае ввод осуществляется по запросу машины. Числа вводятся в свободном формате, разделителем между числами является пробел;
в) ввод из файла. В этом случае необходимо создать файл без расширения с именем, содержащим не более четырех символов.
Структура файла:
M _ N
α11 _ α12 _ ... _ α1,N-1
...
αM-1,1 _ αM-1,2 _ ... _ αM-1,N-1
B1 _ B2 _ ... _ BM-1
C1 _ C2 _ ... _ CN-1
- 13 -
2. Запустить ведущую программу.
3. В процессе диалога с машиной осуществить ввод исходных данных.
4. Записать в протокол номер бригада и ее состав, номер и вариант лабораторной работы. В процессе работы в протокол записывать все действия.
5. Записать в протокол работы таблицу с экрана дисплея.
6. Отвечая на вопросы машины, определить координаты разрешающего элемента.
7. С помощью калькулятора, логарифмической линейки или головы провести преобразование таблицы по формулам (3.1). Результат записать в протокол.
8. Записать в протокол результат преобразований таблицы машиной.
9. Повторить пп. 6,7,8 до получения оптимальной точки (если она существует).
10. Определить координаты оптимальной точки.
11. Записать число и тип допущенных ошибок.
12. Вывести на АЦПУ результаты работы из файла OUT.
Требования к отчету
1. Опишите алгоритм поиска оптимальной точки.
2. Приведите полный протокол решения конкретной задачи.
3. Объясните допущенные ошибки при выполнении лабораторной работы.
4. Опишите Ваши предложения по улучшению программы, управляющей ходом лабораторной работы.
Контрольные вопросы
1. Как определяется, что
а) крайняя точка найдена,
б) крайняя точка не существует,
в) оптимальная точка найдена,
г) оптимальная точка не существует.
- 14 -
2. Обоснуйте пункты алгоритма поиска
а) крайней точки
б) оптимальной точки.
Лабораторная работа 4 РЕШЕНИЕ ПРЯМОЙ И ДВОЙСТВЕННОЙ ЗАДАЧ
Цели работы:
а. Постановка задачи линейного программирования и ее решение с помощью стандартной программы.
б. Исследование прямой и двойственной задачи.
Краткие общие сведения
Если исходная задача линейного программирования представлена в виде:
найти минимум функции ƒ = (c, x) на множестве
,
(4.1).
то двойственная задача может быть сформулирована следующим обра-зом:
найти максимум функции (B, λ) на множестве
где AT — матрица транспонированная к А.
Двойственная к двойственной задаче есть исходная задача.
Известно, что если существует решение исходной задачи, то существует решение и двойственной задачи, причем значения экстремумов совпадают. При этом координаты экстремальной точки для двойственной задачи являются коэффициентами чувствительности результата в исходной задаче по коэффициентам вектора B.
Рассмотрим видоизмененную исходную задачу:
найти min(C, X) на множестве { х: Х ≥ О, Аx ≥ В + ε * еi }, где ε>0,
- 15 -
Если
исходная задача имеет единственное
решение, то при малых
ε>0 и видоизмененная
задача имеет решение; причем если
-значение минимума, то существует
.
Оказыва-ется, что β есть i
-я координата оптимальной точки для
двойственной задачи.
Для проведения лабораторной работы составлена программа, обеспечивающая решение задачи линейного программирования при задании с терминала исходных значений параметров.
