Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Основные задачи математического программирования
Математическое программирование представляет собой математическую дисциплину, занимающуюся изучением экстремальных задач и разработкой методов их решения. В общем виде математическая постановка экстремальной задачи состоит в определении наибольшего или наименьшего значения целевой функции f (х1, х2, ..., xn) при условиях gi (х1, х2, ..., xn) £ b, (i = 1, m), где f и gi – заданные функции, a bi – некоторые действительные числа. В зависимости от свойств функций f и gi математическое программирование можно рассматривать как ряд самостоятельных дисциплин, занимающихся изучением и разработкой методов решения определенных классов задач. Прежде всего, задачи математического программирования делятся на задачи линейного и нелинейного программирования. При этом если все функции f и gi линейные, то соответствующая задача является задачей линейного программирования. Если же хотя бы одна из указанных функций нелинейная, то соответствующая задача является задачей нелинейного программирования. Наиболее изученным разделом математического программирования является линейное программирование. Для решения задач линейного программирования разработан целый ряд эффективных методов, алгоритмов и программ. Среди задач нелинейного программирования наиболее глубоко изучены задачи выпуклого программирования. Это задачи, в результате решения которых определяется минимум выпуклой (или максимум вогнутой) функции, заданной на выпуклом замкнутом множестве. В свою очередь, среди задач выпуклого программирования более подробно исследованы задачи квадратичного программирования. В результате решения таких задач требуется в общем случае найти максимум (или минимум) квадратичной функции при условии, что ее переменные удовлетворяют некоторой системе линейных неравенств или линейных уравнений либо некоторой системе, содержащей как линейные неравенства, так и линейные уравнения. Отдельными классами задач математического программирования являются задачи целочисленного, параметрического и дробно-линейного программирования. В задачах целочисленного программирования неизвестные могут принимать только целочисленные значения. В задачах параметрического программирования целевая функция или функции, определяющие область возможных изменений переменных, либо то и другое зависят от некоторых параметров. В задачах дробно-линейного программирования целевая функция представляет собой отношение двух линейных функций, а функции, определяющие область возможных изменений переменных, также являются линейными. Выделяют отдельные классы задач стохастического и динамического программирования. Если в целевой функции или в функциях, определяющих область возможных изменений переменных, содержатся случайные величины, то такая задача относится к задаче стохастического программирования. Задача, процесс нахождения решения которой является многоэтапным, относится к задаче динамического программирования.
3.9. Линейное программирование: экономическое планирование и геометрическая интерпретация
Линейное программирование в соответствии с его происхождением следует подробнее расшифровать так: “Составление оптимальных планов производства на основе линейных экономических моделей”. Из экономики название перешло в общие математические исследования линейных задач оптимизации, т.е. задач об экстремумах линейных целевых функций при ограничениях в виде линейных неравенств и линейных уравнений. В качестве примера экономической задачи планирования решаемой с помощью линейного программирования рассмотрим завод, выпускающий два вида кафельных плиток для настила пола; для изготовления каждого вида требуется одинаковое количество сырья, т. е. песка, гравия и цемента, но один вид плитки окрашивается и требует некоторого количества красящего вещества. На производство тонны окрашенной плитки требуется два часа машинного времени, три часа рабочего времени и два литра краски. Для производства тонны плиток второго типа (без краски) требуется час машинного времени, три часа рабочего времени и не требуется краски. Доход от производства плиток первого типа составляет 3 ф. ст. (фунта стерлингов), а от производства плиток второго типа – 2 ф. ст. Всего в наличии имеется 10 ч. машинного времени, 24 ч. рабочего времени и 8 л краски. Требуется определить, сколько тонн плиток каждого типа следует произвести, чтобы получить максимальную прибыль. Приведенную выше информацию можно представить в форме таблицы.
Таблица 2.9.1.
Пусть произведено х1 тонн плиток первого типа и х2 тонн – второго типа. Переменные х1 и х2 не могут принимать отрицательные значения и должны удовлетворять условиям
Из первой строки таблицы видно, что для производства x1 тонн плиток первого типа требуется 2x1 часов машинного времени, а для x2 тонн плиток второго типа – x2 часов. Общее количество машинного времени не должно превышать 10 ч. Алгебраически это можно выразить в виде
2x1+x2≤ 10 Для тех же аргументов x1 и x2 из следующих двух строк таблицы получаем:
3x1 + 3x2 ≤ 24; 2x1 ≤ 8.
Таким образом, всего имеется три ограничения:
Каждая пара значений х1 и х2 удовлетворяющая указанным ограничениям, называется допустимым решением или допустимой программой (реально допустимым проектом). Общая прибыль получается из последней строки таблицы следующим образом:
z=3x1 + 2x2 или 3x1 + 2x2 –z = 0.
Выражение для Z называется целевой функцией, и из всех программ, естественно, интересна программа, дающая максимальную прибыль Z. Достаточно одного взгляда на ограничения и целевую функцию, чтобы заметить, что они все линейны: ни одно из них не содержит обратных величин, произведений или высших степеней х1 или х2. Поэтому задача называется задачей линейного программирования. Так как в задаче всего две переменные х1 и х2, оптимальную программу можно получить графически. Рассматривая сначала в ограничениях знаки равенства, получаем:
Эти уравнения представляют собой уравнение трех прямых линий (см. рис. 9). Горизонтальная ось этой диаграммы представляет х1, а. вертикальная ось – х2. Прямая АВ, представляющая первое уравнение из последней системы, пересекает оси координат в точках х1 = 5 и х2 = 10- Прямая ЕА, представляющая второе уравнение, пересекает эти оси в точках х1 = 8 и х2 = 8, а линия DB, представляющая третье уравнение, пересекает горизонтальную ось в точке х1 = 4.
Рис.2.9.1. – Графическое решение задачи линейного программирования
Уравнения целевой функции представляют семейство параллельных прямых, и, задавая определенное значение Z, на этой же диаграмме можно получить одну из этих прямых. Например, если положить Z = 12, то полученное в результате уравнение 12 = 3х1 + 2х2 есть прямая линия, пересекающая горизонтальную ось при х1 = 4, а вертикальную ось – при х2 = 6, как показано на рис. 9. Аналогично получаются другие прямые, и чем дальше линия от начала координат, тем больше значение целевой функции. В точке В х1 = 4 и х2 = 2. Подставляя эти значения в целевую функцию, получаем Z = 16. Линия, представляющая Z =16, также изображена на рис. 9, причем она, как и следовало ожидать, проходит через точку В. В точке А, где пересекаются линии (1) и (2), х1 = 2 и х2 = 6; подставляя эти значения в целевую функцию, получаем Z = 18. Эта линия, очевидно, наиболее удалена от начала координат. Значения Z, представленные линиями, более удаленными от начала координат, чем Z = 18, дают недопустимые решения. Таким образом, максимальная прибыль достигается при производстве 2 т плиток первого типа и 6 т – второго типа при общей прибыли 18 ф. ст. Отметим, что из всех точек особое внимание было обращено на узлы В и А. Можно доказать, что в этой и любой другой задаче линейного программирования оптимальное программирование всегда лежит в узле, где пересекаются две линии или более. Это возможно только в том случае, если график целевой функции не параллелен ни одной из граничных линий, в противном случае все точки этой линии дают оптимальное решение. Поэтому достаточно свести процесс исследования к рассмотрению этих узлов. На рис. 9 таковыми являются точки О, D, В, А и Е. Начало координат (точка О), где х1 = 0 и х2 = 0, является допустимой точкой, и процесс исследования начинается с нее. Для того, чтобы выяснить, сколько осталось неиспользованных времени и краски, значения переменных, заданные оптимальной программой, подставляют в ограничения. При х1 = 2 и х2 = 6 левая часть первого неравенства-ограничения становится равной 10, следовательно, все имеющееся в наличии машинное время израсходовано. Аналогично, подстановка этих значений х1 и х2 во второе неравенство показывает, что его левая часть также равна 24 и, таким образом, была использована вся наличная рабочая сила. Говорят, что оба первых ограничения являются действенными, или критическими. Наконец, последнее ограничение показывает, что при производстве 2 т плитки первого типа остаются неиспользованными 4 л краски.. Рассмотренный пример показывает, что задачи программирования связаны с повседневным промышленным производством. В случае двух переменных задачу можно решить графически, даже если программирование нелинейно. Однако в большинстве случаев на практике в задаче содержится более двух переменных и необходимо применять аналитические методы их решения. При решении задачи ЛП возможны различные случаи (см, рис. 10 – ), необходимо уметь в них разбираться. Нестандартные ситуации, отсутствие решения могут возникнуть из-за неправильной, неполной постановки задачи, из-за ошибок в подготовке данных на ЭВМ и т. д. Программы для ЭВМ должны определять такие ситуации и сообщать о них пользователю, а пользователь должен понимать эти сообщения. Рис. 2.9.2. – Плоское графическое изображение условий задачи ЛП. Изображение ограничений такое же, как на рис. 1. Целевая функция изображена пиниями одинакового уровня z = 30, z = 42, z = 18 и др. По ним видно, что min z на множестве W достигается в точке D на пересечении прямых 4 и 6. Треугольник ОBЕ – первый симплекс, рассматриваемый при поиске допустимой точки симплекс-методом
Для решения задач ЛП чаще всего применяют симплекс-метод* (СМ), основанный на их алгебраизации, разработанной Дж. Данцигом и его школой. Это, подобно методу Гаусса решения линейных систем уравнений, конечный процесс, в принципе дающий точный результат за конечное число вычислительных операций. Однако исследования сложности алгоритма СМ показывают, что иногда это число может быть астрономически большим, и тогда решение недоступно никаким ЭВМ. Хотя расчетный опыт показывает, что такие " плохие" задачи почти не встречаются, в математике ведутся разработки более быстрых способов. Оказывается, для больших задач быстрее работают методы последовательных приближений и др. Несмотря на это, СМ в различных вариантах остается самым популярным для задач ЛП, особенно небольшой размерности. Поясним идею СМ применительно к стандартной задаче ЛП (см. рис. 10). Очевидно, минимум или максимум линейной функции z достигается в одной из вершин многогранника допустимых точек SI (возможно, в двух или нескольких вершинах — тогда нам нужна одна из них). Поиск точки минимума сводится к целенаправленному перебору вершин итак, чтобы функция z(x) уменьшалась. Но сначала надо найти одну из них.
Популярное:
|
Последнее изменение этой страницы: 2017-03-11; Просмотров: 2313; Нарушение авторского права страницы