Задачи линейного программирования. 4
ВВЕДЕНИЕ
В настоящее время оптимизация находит применение в науке, технике и в любой другой области человеческой деятельности.
Оптимизация - целенаправленная деятельность, заключающаяся в получении наилучших результатов при соответствующих условиях.
Поиски оптимальных решений привели к созданию специальных математических методов и уже в 18 веке были заложены математические основы оптимизации (вариационное исчисление, численные методы и др). Однако до второй половины 20 века методы оптимизации во многих областях науки и техники применялись очень редко, поскольку практическое использование математических методов оптимизации требовало огромной вычислительной работы, которую без ЭВМ реализовать было крайне трудно, а в ряде случаев - невозможно.
Постановка задачи оптимизации предполагает существование конкурирующих свойств процесса, например:
· количество продукции - расход сырья
· количество продукции - качество продукции
Выбор компромиcного варианта для указанных свойств и представляет собой процедуру решения оптимизационной задачи.
Обычно оптимизируемая величина связана с экономичностью работы рассматриваемого объекта (аппарат, цех, завод). Оптимизируемый вариант работы объекта должен оцениваться какой-то количественной мерой - критерием оптимальности.
Критерием оптимальности называется количественная оценка оптимизируемого качества объекта.
На основании выбранного критерия оптимальности составляется целевая функция, представляющая собой зависимость критерия оптимальности от параметров, влияющих на ее значение. Вид критерия оптимальности или целевой функции определяется конкретной задачей оптимизации.
Таким образом, задача оптимизации сводится к нахождению экстремума целевой функции.
В зависимости
от своей постановки, любая из задач
оптимизации может решаться различными
методами, и наоборот – любой
метод может применяться для
решения многих задач. Методы оптимизации
могут быть скалярными (оптимизация
проводится по одному критерию), векторными
(оптимизация проводится по многим критериям),
поисковыми (включают методы регулярного
и методы случайного поиска), аналитическими
(методы дифференциального исчисления,
методы вариационного исчисления и др.),
вычислительными (основаны на математическом
программировании, которое может быть
линейным, нелинейным, дискретным, динамическим,
стохастическим, эвристическим и т.д.),
теоретико-вероятностными, теоретико-игровыми
и др. Линейное программирование
- один из первых и наиболее подробно изученных
разделов математического программирования.
Именно линейное программирование явилось
тем разделом, с которого начала развиваться
сама дисциплина “математическое программирование”.
Термин “программирование” в названии
дисциплины ничего общего с термином “программирование
(т.е. составление программ) для ЭВМ” не
имеет, так как дисциплина “линейное программирование”
возникла еще до того времени, когда ЭВМ
стали широко применяться при решении
математических, инженерных, экономических
и др. задач. Термин “линейное программирование”
возник в результате неточного перевода
английского “linear programming”. Одно из значений
слова “programming” - составление планов,
планирование. Следовательно, правильным
переводом “linear programming” было бы не “линейное
программирование”, а “линейное планирование”,
что более точно отражает содержание дисциплины.
Итак, линейное программирование
возникло после Второй Мировой
Войны и стал быстро развиваться, привлекая
внимание математиков, экономистов и инженеров
благодаря возможности широкого практического
применения.
Можно
сказать, что линейное программирование
применимо для построения математических
моделей тех процессов, в основу которых
может быть положена гипотеза линейного
представления реального мира: экономических
задач, задач управления и планирования,
оптимального размещения оборудования
и пр.
Задачами линейного
Линейное
программирование представляет
собой наиболее часто
- рационального использования сырья и материалов; задачи оптимизации раскроя;
- оптимизации производственной программы предприятий;
- оптимального размещения и концентрации производства;
- составления оптимального плана перевозок, работы транспорта;
- управления производственными запасами;
- и многие другие, принадлежащие сфере оптимального планирования.
Так, по
оценкам американских экспертов, около
75% от общего числа применяемых
Первые постановки задач линейного
программирования были сформулированы
известным советским
Значительное развитие теория и
алгоритмический аппарат
В настоящее время линейное программирование является одним из наиболее употребительных аппаратов математической теории оптимального принятия решения. Для решения задач линейного программирования разработано сложное программное обеспечение, дающее возможность эффективно и надежно решать практические задачи больших объемов. Эти программы и системы снабжены развитыми системами подготовки исходных данных, средствами их анализа и представления полученных результатов.
В развитие и совершенствование этих систем вложен труд и талант многих математиков, аккумулирован опыт решения тысяч задач. Владение аппаратом линейного программирования необходимо каждому специалисту в области математического программирования. Линейное программирование тесно связано с другими методами математического программирования (например, нелинейного программирования, где целевая функция не линейна).
Задачи с нелинейной целевой функцией и линейными ограничениями называют задачами нелинейного программирования с линейными ограничениями. Оптимизационные задачи такого рода можно классифицировать на основе структурных особенностей нелинейных целевых функций. Если целевая функция Е - квадратичная функция, то мы имеем дело с задачей квадратичного программирования; если Е – это отношение линейных функций, то соответствующая задача носит название задачи дробно-линейного программирования, и т.д. Деление оптимизационных задач на эти классы представляет значительный интерес, поскольку специфические особенности тех или иных задач играют важную роль при разработке методов их решения.
Современные методы линейного программирования достаточно надежно решают задачи общего вида с несколькими тысячами ограничений и десятками тысяч переменных. Для решения сверхбольших задач используются уже, как правило, специализированные методы.
1.ПОСТАНОВКА ЗАДАЧИ ОПТИМИЗАЦИИ
В цехе имеется токарный станок и станок-автомат. Цех выпускает детали 1,2 и 3 в комплекте: на каждую деталь 1 – по 2 детали 2 и 3. Часовая производительность станков по каждой из деталей приведена в таблице:
|
Станки |
Детали | ||
|
1 |
2 |
3 | |
|
1.Токарный |
5 |
5 |
10 |
|
2.Автомат |
15 |
15 |
10 |
Таблица 1. Часовая производительность станков
Составить программу работы станков, при которой в течение смены (8 часов) будет выпускаться максимальное количество комплектов деталей.
Введем переменные, которые требуется определить:
X1 – время, которое работал токарный станок над деталями типа 1 в течение рабочей смены;
X2 – время, которое работал токарный станок над деталями типа 2 в течение рабочей смены;
X3 – время, которое работал токарный станок над деталями типа 3 в течение рабочей смены;
X4 – время, которое работал станок-автомат над деталями типа 1 в течение рабочей смены;
X5 – время, которое работал станок-автомат над деталями типа 2 в течение рабочей смены;
X6 – время, которое работал станок-автомат над деталями типа 3 в течение рабочей смены.
Система ограничений состоит из двух групп. Первая группа устанавливает, что каждый из станков может работать не более 8 часов в смену.
Ограничение времени работы токарного станка:
X1 + X2 + X3 £ 8;
Ограничение времени работы станка-автомата:
X4 + X5 + X6 £ 8.
Вторая группа ограничений направлена на выполнение требования о комплектации деталей: на каждую деталь 1 должно приходиться по 2 детали 2 и 3. Но перед тем, как вводить это ограничение, определим, сколько деталей каждого типа у нас будет производиться за смену:
5X1 + 15X4 - будет произведено за смену деталей типа 1;
5X2 + 15X5 - будет произведено за смену деталей типа 2;
10X3 + 10X6 - будет произведено за смену деталей типа 3.
Теперь введем сами ограничения:
2(5X1 + 15X4) = 5X2 + 15X5;
2(5X1 + 15X4) = 10X3 + 10X6.
Очевидно, что все переменные в задаче неотрицательные (объем продукции не может быть отрицательным):
X1 , X2 , X3 , X4 , X5 , X6 ≥ 0.
Целевая функция в нашей задаче должна выражать количество комплектов деталей, выпускаемых за смену, поэтому сложим все выпускаемые детали и поделим на 5 (в комплект, как уже упоминалось, входят 1 деталь типа 1 и по 2 детали типа 2 и 3):
E= (5X1 + 15X4 + 5X2 + 15X5 + 10X3 + 10X6)/5 Þ max
или, если упростить это выражение, то получим:
E= X1 + X2 + 2X3 + 3X4 + 3X5 + 2X6 Þ max
Целевую функцию надо максимизировать.
Таким образом, формальная постановка задачи оптимизации имеет следующий вид:
X1 + X2 + X3 £ 8;
X4 + X5 + X6 £ 8;
2(5X1 + 15X4) = 5X2 + 15X5;
2(5X1 + 15X4) = 10X1 + 10X6;
X1 , X2 , X3 , X4 , X5 , X6 ≥ 0.
E= X1 + X2 + 2X3 + 3X4 + 3X5 + 2X6 Þ max
ПРИВЕДЕНИЕ ЗАДАЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ К СТАНДАРТНОЙ ФОРМЕ
Любая задача линейного программирования приводится к стандартной (канонической) форме основной задачи линейного программирования, которая формулируется следующим образом: найти неотрицательные значения переменных X1 , X2 , Xn , удовлетворяющих ограничениям в виде равенств:
A11X1 + A12X2 + … + A1nXn = B1;
A21X1 + A22X2 + … + A2nXn = B2;
……………………………………
Am1X1 + Am2X2 + … + AmnXn = Bm;
Xj ≥ 0, j=1,…,n
и обращающих в максимум линейную функцию этих переменных:
E = C1X1 + C2X2 + … + CnXn Þ max
При этом также требуется, чтобы правые части равенств были неотрицательны, т.е. должны соблюдаться условия:
Bj ≥ 0, j=1,…,n
Приведение к стандартной
- перейти
от минимизации целевой
- изменить
знаки правых частей
- перейти
от ограничений-неравенств к
- избавиться от переменных, не имеющих ограничений на знак.
Для решения нашей задачи воспользуемся симплекс-методом, так как этот метод предназначен для решения задач линейного программирования любой размерности.
2.МЕТОДЫ РЕШЕНИЯ
ОСНОВНАЯ ИДЕЯ СИМПЛЕКС-МЕТОДА
Экстремум целевой функции всегда
достигается в угловых точках
области допустимых решений. Симплекс-метод,
называемый также методом
При построении начального базиса в заданной задаче использовался метод искусственного базиса, поэтому найденное решение не является допустимым. В этом случае для решения задачи необходимо использовать двухэтапный симплекс-метод.
ДВУХЭТАПНЫЙ СИМПЛЕКС-МЕТОД
Задача с помощью этого метода решается в два этапа: сначала отыскивается начальное допустимое решение, не содержащее искусственных переменных, а затем на основе найденного решения ищется оптимальное решение исходной задачи. Основные шаги, реализации метода следующие.
1. Задача линейного
2. Строится искусственный базис.
3. Составляется искусственная
4. Реализуется первый этап
5. Реализуется второй этап
3. ПРИМЕРЫ РЕШЕНИЯ
ПРИМЕР РЕШЕНИЯ ЗАДАЧИ НА ОСНОВЕ СИМПЛЕКС-ТАБЛИЦ
ПРИВЕДЕНИЕ ЗАДАЧИ К СТАНДАРТНОЙ ФОРМЕ
Для приведения данной задачи к стандартной форме необходимо лишь перейти от ограничений – неравенств к равенствам. Для этого введем дополнительные балансовые неотрицательные переменные. Также для упрощения дальнейших вычислений разделим обе части ограничений на комплектацию деталей на 5:
X1 + X2 + X3 + X7 = 8;
X4 + X5 + X6 + X8 = 8;
2X1 – X2 + 6X4 – 3X5 = 0;
2X1 – 2X3 + 6X4 – 2X6 =0;
X1 , X2 , X3 , X4 , X5 , X6 , X7 , X8 ≥ 0.
E= X1 + X2 + 2X3 + 3X4 + 3X5 + 2X6 Þ max
где Х7 , Х8 – остаточные переменные.
Итак, нашу исходную задачу мы привели к стандартной форме основной задачи линейного программирования.
ОПРЕДЕЛЕНИЕ НАЧАЛЬНОГО ДОПУСТИМОГО РЕШЕНИЯ
Для задачи, представленной в стандартной форме, количество переменных обычно больше, чем количество ограничений. Поэтому для нахождения начального решения задачи требуется выразить m переменных (т.е. количество переменных, равное количеству уравнений) через остальные n-m переменных, принять эти n-m переменных равными нулю и, таким образом, найти значения m переменных (в заданной задаче m=4 и n=8). Переменные, значения которых принимаются равными нулю, называются небазисными, а остальные m переменных - базисными. Значения базисных переменных неотрицательны (некоторые из них могут оказаться равными нулю). Количество базисных переменных всегда равно количеству ограничений. Найденное таким образом решение называется начальным допустимым базисным решением. Оно соответствует всем ограничениям.
Начальное решение проще всего найти в случае, когда в каждом ограничении есть переменная, которая входит в него с коэффициентом 1 и при этом отсутствует в других ограничениях. Такие переменные принимаются в качестве базисных (они образуют начальный базис задачи). Остальные (небазисные) переменные принимаются равными нулю. Таким образом, базисные переменные принимают значения, равные правым частям ограничений.
Итак, для нахождения начального допустимого решения необходимо, чтобы в каждое из уравнений входила переменная с коэффициентом 1 и не входила в другие уравнения (базисная переменная). В нашем случае мы имеем только 2 базисные переменные (X7 и X8) , не хватает еще двух базисных переменных. Их можно создать с помощью специального способа, который называется построением искусственного базиса.
ПОСТРОЕНИЕ ИСКУССТВЕННОГО БАЗИСА
Методы искусственного базиса предназначены для построения начального базиса (т.е. для получения начального решения) в случаях, когда его построение непосредственно на основе стандартной формы невозможно. При использовании искусственного базиса начальное решение оказывается недопустимым; от него по определенным алгоритмам выполняется переход к начальному допустимому решению.
Для того, чтобы построить искусственный базис, необходимо в каждое уравнение стандартной формы, не содержащее базисных переменных (т.е. полученное из ограничения-равенства или "не меньше"), добавить по одной искусственной переменной. В нашем случае это:
2X1 – X2 + 6X4 – 3X5 + Х9 = 0;
2X1 – 2X3 + 6X4 – 2X6 + Х10 =0.
где Х9 и Х10 – искусственные переменные, не имеющие никакого физического смысла, причем Х9 , Х10 ≥0.
После построения искусственного базиса, придав нулевые значения всем переменным, кроме базисных, получим начальный базис: Х7 , Х8 , Х9 , Х10 . Всего в базисе имеется четыре переменные и их значения равны правым частям ограничений, т.е.:
Х7 = 8;
Х8 = 8;
Х9 = 0;
Х10 = 0.
Теперь необходимо решить эту задачу, т.е. найти оптимальное допустимое решение. Для этого воспользуемся двухэтапным симплекс-методом.
ПЕРВЫЙ ЭТАП ДВУХЭТАПНОГО СИМПЛЕКС-МЕТОДА
Итак, на первом этапе двухэтапного метода отыскивается начальное допустимое решение. Для этого выполним следующие действия:
- Строим искусственную целевую функцию – сумму всех искусственных переменных:
W = X9 + X10 Þ min
- Так как целевая функция должна быть выражена только через небазисные переменные, то выражаем искусственные переменные X9 и X10 через небазисные переменные, а затем, упростив полученное выражение, переписываем искусственную целевую функцию:
X9 = - 2X1 + X2 - 6X4 + 3X5;
X10 = - 2X1 + 2X3 - 6X4 + 2X6.
W = - 4X1 + X2 + 2X3 – 12X4 + 3X5 + 2X6 Þ min
- Для приведения к стандартной форме направим искусственную целевую
функцию на максимум, для этого умножим обе ее части на –1:
-W = 4X1 - X2 - 2X3 + 12X4 - 3X5 - 2X6 Þ max
- Определяем начальное, недопустимое решение. Базис состоит из четырех
переменных, из них две искусственные, остальные две - остаточные. Базисные переменные принимают значения, равные ограничениям задачи. Остальные переменные считаем равными нулю. В этом случае целевая функция Е принимает значение 0, искусственная целевая функция –W также принимает значение 0.
- Составляем исходную симплекс-таблицу:
БП |
X1 |
X2 |
X3 |
X4 |
X5 |
X6 |
X7 |
X8 |
X9 |
X10 |
БР |
E |
-1 |
-1 |
-2 |
-3 |
-3 |
-2 |
0 |
0 |
0 |
0 |
0 |
-W |
-4 |
1 |
2 |
-12 |
3 |
2 |
0 |
0 |
0 |
0 |
0 |
X7 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
8 |
X8 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
8 |
X9 |
2 |
-1 |
0 |
6 |
-3 |
0 |
0 |
0 |
1 |
0 |
0 |
X10 |
2 |
0 |
-2 |
6 |
0 |
-2 |
0 |
0 |
0 |
1 |
0 |
Таблица 2. Симплекс-таблица №1.
Итак, в первом столбце таблицы
указаны базисные переменные, в последнем
столбце - их значения, а так же значения
целевой и искусственной
- Реализуем первый этап двухэтапного метода: с помощью процедур симплекс-метода выполняем максимизацию функции -W. При этом переменные, включаемые в базис, выбираются по W-строке (т.е. на каждом цикле в базис включается переменная, которой соответствует максимальный по модулю отрицательный элемент в W-строке; столбец, соответствующий этой переменной, становится ведущим). В нашем случае это столбец X4, т. к. коэффициент при этой переменной в W-строке равен –12. Ведущую строку определяем следующим образом: рассчитываем так называемые симплексные отношения, т. е. отношения текущих значений базисных переменных к положительным коэффициентам ведущего столбца, соответствующим данным базисным переменным. Затем берем минимальное из этих отношений и по тому, какой строке оно соответствует, определяем ведущую строку. У нас есть три таких отношения: по переменной Х8 (8/1=8), Х9 (0/6=0) и Х10 (0/6=0). Получилось два минимальных значения, значит, возьмем любое из них, например по переменной Х9. После находим ведущий элемент, он расположен на пересечении ведущей строки и ведущего столбца (в нашем случае он равен 6). Затем определяем переменные, которые будем исключать из базиса и включать в него. Переменную, которой соответствует ведущий столбец, будем включать в базис вместо переменной, которой соответствует ведущая строка. Далее все преобразования выполняем по обычным формулам симплекс-метода или по "правилу прямоугольника". Преобразованиям подвергается вся симплекс-таблица, включая E-строку, W-строку и столбец решений. Получаем новую симплекс-таблицу:
БП |
X1 |
X2 |
X3 |
X4 |
X5 |
X6 |
X7 |
X8 |
X9 |
X10 |
БР |
E |
0 |
-1,5 |
-2 |
0 |
-4,5 |
-2 |
0 |
0 |
0,5 |
0 |
0 |
-W |
0 |
-1 |
2 |
0 |
-3 |
2 |
0 |
0 |
2 |
0 |
0 |
X7 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
8 |
X8 |
-0,33 |
0,17 |
0 |
0 |
1,5 |
1 |
0 |
1 |
-0,17 |
0 |
8 |
X4 |
0,33 |
-0,17 |
0 |
1 |
-0,5 |
0 |
0 |
0 |
0,17 |
0 |
0 |
X10 |
0 |
1 |
-2 |
0 |
3 |
-2 |
0 |
0 |
-1 |
1 |
0 |
Таблица 3. Симплекс-таблица №2.
Мы получили новое решение (Х7,Х8,Х4,Х10)=(
БП |
X1 |
X2 |
X3 |
X4 |
X5 |
X6 |
X7 |
X8 |
X9 |
X10 |
БР |
E |
0 |
0 |
-5 |
0 |
0 |
-5 |
0 |
0 |
-1 |
1,5 |
0 |
-W |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
X7 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
8 |
X8 |
-0,33 |
-0,33 |
1 |
0 |
0 |
2 |
0 |
1 |
0,33 |
-0,5 |
8 |
X4 |
0,33 |
0 |
-0,33 |
1 |
0 |
-0.33 |
0 |
0 |
0 |
0,17 |
0 |
X5 |
0 |
0,33 |
-0,67 |
0 |
1 |
-0,67 |
0 |
0 |
-0,33 |
0,33 |
0 |
Таблица 4. Симплекс-таблица №3.
ВТОРОЙ ЭТАП ДВУХЭТАПНОГО СИМЛЕКС-МЕТОДА
Итак, как видно из Таблицы 4, все искусственные переменные вышли из базиса, искусственная целевая функция обнулилась – значит, первый этап двухэтапного симплекс-метода закончен, найдено начальное допустимое решение: (Х1,X2,X3,X4,X5,X6) = (0,0,0,0,0,0), целевая функция Е=0. Теперь переходим к реализации второго этапа: вычеркиваем из таблицы строку искусственной целевой функции и столбцы искусственных переменных; над новой таблицей выполняем обычные процедуры симплекс-метода, а именно: ведущий столбец определяется также, как и для первого этапа двухэтапного симплекс-метода, единственное различие состоит в том, что максимальный по модулю отрицательный коэффициент находим по Е-строке целевой функции. Расчет ведем до тех пор, пока в Е-строке не останется отрицательных коэффициентов:
БП |
X1 |
X2 |
X3 |
X4 |
X5 |
X6 |
X7 |
X8 |
БР |
E |
0 |
0 |
-5 |
0 |
0 |
-5 |
0 |
0 |
0 |
X7 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
8 |
X8 |
-0,33 |
-0,33 |
1 |
0 |
0 |
2 |
0 |
1 |
8 |
X4 |
0,33 |
0 |
-0,33 |
1 |
0 |
-0,33 |
0 |
0 |
0 |
X5 |
0 |
0,33 |
-0,67 |
0 |
1 |
-0,67 |
0 |
0 |
0 |
Таблица 5. Симплекс-таблица №4.
Наше начальное допустимое решение не является оптимальным, так как в Е-строке содержатся отрицательные коэффициенты. Определим по Е-строке новую переменную для включения в базис. Это переменная X3, т.к. –5 – максимальное по модулю отрицательное число (коэффициент Е-строки при переменной X6 также равен –5, поэтому выбрали любую из этих переменных, например X3). Столбец X3 становится ведущим. По минимальному симплексному отношению ( 8/1=8; 8/1=8) для исключения из базиса выбираем переменную Х7 (симплексное отношение при переменной X8 также равно 8, поэтому выбрали любую из этих переменных). Ведущий элемент равен 1. После проведенных пересчетов получаем новую симплекс-таблицу:
БП |
X1 |
X2 |
X3 |
X4 |
X5 |
X6 |
X7 |
X8 |
БР |
E |
5 |
5 |
0 |
0 |
0 |
-5 |
5 |
0 |
40 |
X3 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
8 |
X8 |
-1,33 |
-1,33 |
0 |
0 |
0 |
2 |
-1 |
1 |
0 |
X4 |
0,67 |
0,33 |
0 |
1 |
0 |
-0,33 |
0,33 |
0 |
2,67 |
X5 |
0,67 |
1 |
0 |
0 |
1 |
-0,67 |
0,67 |
0 |
5,33 |

- Задачи линейного программирования
- Задачи линейного программирования
- Задачи лицензирования
- Задачи логопедического воздействия на детей с ОНР по формированию словаря
- Задачи маркетинга в условиях российского рынка
- Задачи маркетинговой логистики
- Задачи менеджмента
- Задачи календарного планирования
- Задачи коммунистических организаций, Белое Братство иерархическая структура
- Задачи корреляционно-регрессивного анализа и моделирования
- Задачи кредитно-денежной политики
- Задачи криминалистики
- Задачи линейного программирования
- Задачи линейного программирования