Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Бухаров экзамен.doc
Скачиваний:
15
Добавлен:
21.12.2018
Размер:
4.36 Mб
Скачать

8. Аналитический метод решения злп

9. Решение злп с помощью эвм

Теоретической основой надстройки «Поиск решения» является симплекс-метод, позволяющий находить оптимальное решение задачи планирования с помощью итерационного процесса перехода к улучшающимся планам. «Поиск решения» является дополнением Excel, т. е. может не входить в стандартный вариант установки электронных таблиц. Для его добавления достаточно воспользоваться командой СервисНадстройкиПоиск решения.

В качестве примера рассмотрим решение следующей задачи.

Задача 1.Для откорма животных на ферме в их ежедневный рацион необходимо включить не менее 33 единиц питательного вещества А, 23 единиц вещества В и 12 единиц вещества С. Для откорма используется 3 вида кормов. Данные о содержании питательных веществ и стоимости весовой единицы каждого корма даны в таблице 1.

Таблица 1

А

В

С

Стоимость

Весовая единица корма I

4 ед.

3 ед.

1 ед.

20 к.

Весовая единица корма II

3 ед.

2 ед.

1 ед.

20 к.

Весовая единица корма III

2 ед.

1 ед.

2 ед.

10 к.

Требуется составить наиболее дешёвый рацион, при котором каждое животное получило бы необходимые количества питательных веществ А, В и С.

Решение. Пусть х1, х2, х3 – количества кормов I, II, III видов, включаемые в ежедневный рацион (хi0, i=1, 2, 3). Тогда должно быть:

(1)

При этом линейная функция (стоимость рациона)

f=20х1+20х2+10х3min. (2)

При решении задачи с помощью надстройки Поиск решения необходимо:

  1. Открыть окно Microsoft Excel;

  2. сделаем первый столбец А – столбцом заголовка, т.е. заполним ячейки A1А4 таблицы обозначениями х1, х2, х3 и min соответственно;

  3. активизируйте ячейку В4 и запишите в неё формулу (2), см. рис. 16.1;

  4. в область ячеек А7С9 запишите систему (1), см. рис. 16.2;

Рис. 16.1 Рис. 16.2

  1. для решения поставленной задачи в меню Сервис выполните нажатие ЛКМ на Поиск решения…;

  2. в появившемся окне в поле «Установить целевую» нажатием ЛКМ выделите ячейку В4; в поле «Изменяя ячейки» выделите область В1В3; нажатием ЛКМ установите флажок в поле «минимальному значению» (см. рис. 16.3).

Рис. 16.3

  1. У нас осталось незаполненным поле «Ограничения», поэтому ЛКМ нажмем на копке Добавить;

  2. после того, как появилось окно Добавление ограничения активизируйте поле «Ссылка на ячейку» и выполните нажатие ЛКМ на ячейке А7. В следующем поле выберите знак « >= », затем в поле «Ограничения» выполните нажатие ЛКМ на ячейке С7 (см. рис. 16.4);

Рис. 16.4

  1. аналогично описанному в предыдущем пункте добавьте ограничения, записанные в область ячеек А8С9;

  2. помимо ограничений, введённых нами в электронную таблицу, в задаче есть ещё одно ограничение, которое мы тоже должны внести (хi0). Поэтому мы должны добавить ещё одно ограничение: $B$1:$B$3>=0.

  3. Теперь все ограничения нами учтены и мы можем нажать лкм на ОК, после чего мы снова попадаем в диалоговое окно Поиск решения, где лкм нажимаем на Выполнить.

  4. Появляется диалоговое окно Результаты поиска решения, в котором компьютер предлагает по умолчанию сохранить найденное решение. Если вы согласны с полученными результатами, то лкм нажмите на кнопке ОК. Результат полученных вычислений представлен на рис. 16.5.

Рис. 16.5

10. Симплекс-метод решения ЗЛП

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

Этот метод является универсальным, применимым к любой задаче линейного программирования в канонической форме. Система ограничений здесь - система линейных уравнений, в которой количество неизвестных больше количества уравнений.

Придавая определенные значения свободным переменным и вычисляя значения базисных (выраженных через свободные), мы будем получать различные решения нашей системы ограничений. Таким образом, можно получить любое ее решение. Нас будут интересовать особые решения, получаемые в случае, когда свободные переменные равны нулю. Такие решения называются базисными, их столько же, сколько различных базисных видов у данной системы ограничений. Базисное решение называется допустимым базисным решением или опорным решением, если в нем значения переменных неотрицательны. Если в качестве базисных взяты переменные X1, X2, ..., Xr, то решение {b1, b2,..., br, 0, ..., 0} будет опорным при условии, что b1, b2,..., br ≥ 0.

Симплекс-метод основан на теореме, которая называется фундаментальной теоремой симплекс-метода. Среди оптимальных планов задачи линейного программирования в канонической форме обязательно есть опорное решение ее системы ограничений. Если оптимальный план задачи единственен, то он совпадает с некоторым опорным решением. Различных опорных решений системы ограничений конечное число. Поэтому решение задачи в канонической форме можно было бы искать перебором опорных решений и выбором среди них того, для которого значение F самое большое. Но, во-первых, все опорные решения неизвестны и их нужно находить, a, во-вторых, в реальных задачах этих решений очень много и прямой перебор вряд ли возможен. Симплекс-метод представляет собой некоторую процедуру направленного перебора опорных решений. Исходя из некоторого, найденного заранее опорного решения по определенному алгоритму симплекс-метода мы подсчитываем новое опорное решение, на котором значение целевой функции F не меньше, чем на старом. После ряда шагов мы приходим к опорному решению, которое является оптимальным планом.

Итак, симплексный метод вносит определенный порядок как при нахождении первого (исходного) базисного решения, так и при переходе к другим базисным решениям. Его идея состоит в следующем.

Имея систему ограничений, приведенную к общему виду, то есть к системе m линейных уравнений с n переменными (m < n), находят любое базисное решение этой системы, заботясь только о том, чтобы найти его как можно проще.

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

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

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

Таким образом, применение симплексного метода распадается на два этапа: нахождение допустимого базисного решения системы ограничений или установление факта ее несовместности; нахождение оптимального решения. При этом каждый этап может включать несколько шагов, соответствующих тому или иному базисному решению. Но так как число базисных решений всегда ограниченно, то ограниченно и число шагов симплексного метода.

Приведенная схема симплексного метода явно выражает его алгоритмический характер (характер четкого предписания о выполнении последовательных операций), что позволяет успешно программировать и реализовать этот метод на ЭВМ. Задачи же с небольшим числом переменных и ограничений могут быть решены симплексным методом вручную.

Не останавливаясь подробнее на сути алгоритма, опишем его вычислительную сторону. Вычисления по симплекс-методу организуются в виде симплекс-таблиц, которые являются сокращенной записью задачи линейного программирования в канонической форме. Перед составлением симплекс-таблицы задача должна быть преобразована, система ограничений приведена к допустимому базисному виду, c помощью которого из целевой функции должны быть исключены базисные переменные. Вопрос об этих предварительных преобразованиях мы рассмотрим ниже. Сейчас же будем считать, что они уже выполнены и задача имеет вид:

Здесь для определенности записи считается, что в качестве базисных переменных можно взять переменные X1, X2, ..., Xr и что при этом b1, b2,..., br ≥ 0 (соответствующее базисное решение является опорным).

Для составления симплекс-таблицы во всех равенствах в условии задачи члены, содержащие переменные, переносятся в левую часть, свободные оставляются справа, т.е. задача записывается в виде системы равенств:

Идея метода симплекс-таблиц заключается в целенаправленном переборе вершин симплекса. Для начало перебора необходимо выбрать опорную вершину с которой начнется перебор. Симплексный метод решения задачи линейного программирования основан на переходе от одного опорного плана к другому, (перебирая симплекс вершины) при котором значение целевой функции возрастает (убывает). Указанный переход возможен, если известен какой-нибудь исходный опорный план. Для составления такого плана необходимо произвести векторный анализ, на основе которого определить опорную вершину, с которой начнется перебор. Система неравенств приводится к каноническому виду:

x1 + a1,m+1* xm+1 + ... + a1s* xs+...+ a1n xn = b1;

...

x2 + a2,m+1* xm+1 + ... + a2s * xs+...+ a2n* xn = b2;

...

xm + am,m+1* xm+1 + ... + ams* xs+...+ amn* xn = bm.

Переменные x1, x2,...,xm, входящие с единичными коэффициентами только в одно уравнение системы и с нулевыми - в остальные, называются базисными. В канонической системе каждому уравнению соответствует ровно одна базисная переменная. Остальные n-m переменных (xm+1, ...,xn) называются небазисными переменными.

11. Графический смысл симплекс- метода

Классическим методом решения ЗЛП стал симплекс-метод, получивший также в литературе название метода последовательного улучшения плана, разработанный в 1947г. американским математиком Джорджем Данцигом.

Идея такого перехода от одного базисного плана к другому, при котором происходит «улучшение» значения целевой функции, может быть продемонстрирована для случая m = 2 с помощью рис. 1.4. Если вектор ограничений b принадлежит конусу, натянутому на некоторые два базисных вектора условий {аj1j2}, то существует такой базисный план х с базисными компонентами хj1, хj2, что b= хj1aj1 + хj2aj2 . Разумеется, таких планов может быть несколько в зависимости от выбора системы базисных векторов. Чтобы различать их по соответствующей величине целевой функции f(x)=cj1xj1 +сj2хj2, вводятся так называемые расширенные векторы условий и ограничений. В общем случае расширенный столбец условий āj получается соединением коэффициента целевой функции сj и столбца аj:

расширенный вектор ограничений определим как

В дальнейшем для удобства нумерации элементов будем считать, что добавляемый коэффициент целевой функции сj является нулевым элементом j-го расширенного столбца условий, т. е. ā0,j = сj. При изображении расширенных векторов нулевая координата откладывается вдоль вертикальной оси — оси аппликат.

Рассмотрим также вектор

=

Геометрически определение вектора b означает, что он принадлежит конусу, натянутому на расширенные векторы, а вектор служит его проекцией. Нулевая координата вектора b имеет вид:

т. е. равна значению целевой функции для выбранного базисного плана.

Из геометрической иллюстрации следует, что для решения задачи мы должны среди векторов аj выбрать такой набор {аj1j2}, чтобы, прямая, проведенная через конец вектора параллельно оси аппликат, пересекала конус, натянутый на систему соответствующих расширенных столбцов { āj1, āj2}, в «наивысшей» точке.

На рис. 1.4 выделен конус, натянутый на систему расширенных столбцов ā2 и ā3, отвечающих текущему допустимому базису. Нетрудно заметить, что данный базис не является оптимальным, например, для базиса {а3, а4} точка пересечения соответствующего конуса и прямой будет находиться выше. Можно, наоборот, указать базис с «худшим» значением целевой функции: {а1 а2}. Наконец, рассматриваемая геометрическая интерпретация КЗЛП иллюстрирует и общую идею критерия, который используется в симплекс-методе для определения оптимальности (или неоптимальности) текущего плана: если существуют векторы-столбцы, лежащие выше плоскости, проходящей через векторы текущего базиса, то он не является оптимальным и может быть «улучшен».

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

Задача линейного программирования состоит в том, что необходимо максимизировать или минимизировать некоторый линейный функционал на многомерном пространстве при заданных линейных ограничениях.

Заметим, что каждое из линейных неравенств на переменные ограничивает полупространство в соответствующем линейном пространстве. В результате все неравенства ограничивают некоторый многогранник (возможно, бесконечный), называемый также полиэдральным конусом. Уравнение W(x) = c, где W(x) — максимизируемый (или минимизируемый) линейный функционал, порождает гиперплоскость L(c). Зависимость от c порождает семейство параллельных гиперплоскостей. Тогда экстремальная задача приобретает следующую формулировку — требуется найти такое наибольшее c, что гиперплоскость L(c) пересекает многогранник хотя бы в одной точке. Заметим, что пересечение оптимальной гиперплоскости и многогранника будет содержать хотя бы одну вершину, причём, их будет более одной, если пересечение содержит ребро или k-мерную грань. Поэтому максимум функционала можно искать в вершинах многогранника. Принцип симплекс-метода состоит в том, что выбирается одна из вершин многогранника, после чего начинается движение по его рёбрам от вершины к вершине в сторону увеличения значения функционала. Когда переход по ребру из текущей вершины в другую вершину с более высоким значением функционала невозможен, считается, что оптимальное значение c найдено.

Последовательность вычислений симплекс-методом можно разделить на две основные фазы:

  1. нахождение исходной вершины множества допустимых решений,

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

12. реализация симплекс метода на ЭВМ

Решение задачи ЛП СИМПЛЕКС  - МЕТОДОМ в системе Excel.