Как составить симплекс таблицу по условию задачи

Подробный разбор симплекс-метода

Время на прочтение
6 мин

Количество просмотров 192K

Пролог

Недавно появилась необходимость создать с нуля программу, реализующую алгоритм симплекс-метода. Но в ходе решения я столкнулся с проблемой: в интернете не так уж много ресурсов, на которых можно посмотреть подробный теоретический разбор алгоритма (его обоснование: почему мы делаем те или иные шаги) и советы по практической реализации — непосредственно, алгоритм. Тогда я дал себе обещание — как только завершу задачу, напишу свой пост на эту тему. Об этом, собственно, и поговорим.

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

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

Определение:

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

Общая задача линейного программирования (далее – ЛП) имеет вид:

image

§2. Каноническая форма задачи ЛП

Каноническая форма задачи ЛП:

image

Замечание:

Любая задача ЛП сводится к канонической.

Алгоритм перехода от произвольной задачи ЛП к канонической форме:

  1. Неравенства с отрицательными $b_i$ умножаем на (-1).
  2. Если неравенство вида (≤), то к левой части добавляем $s_i$ – добавочную переменную, и получаем равенство.
  3. Если неравенство вида (≥), то из левой части вычитаем $s_i$, и получаем равенство.
  4. Делаем замену переменных:

Замечание:

Будем нумеровать

$s_i$ по номеру неравенства, в которое мы его добавили.

Замечание:

$s_i$ ≥0.

§3. Угловые точки. Базисные/свободные переменные. Базисные решения

Определение:

Точка

$Х ∈ D$ называется угловой точкой, если представление

$ Х= αХ^1+ (1-α) Х^2,где Х^1,Х^2 ∈D;0< α<1 $ возможно только при

$Х^1=Х^2 $.

Иными словами, невозможно найти две точки в области, интервал проходящий через которые содержит

$Х$ (т.е.

$Х$ – не внутренняя точка).

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

Определение:

Пусть есть система m уравнений и n неизвестных (m < n). Разделим переменные на два множества: (n-m) переменные положим равными нулю, а остальные m переменных определяются решением системы исходных уравнений. Если это решение единственно, то тогда ненулевые m переменных называют базисными; нулевые (n-m) переменных – свободными (небазисными), а соответствующие результирующие значения переменных называют базисным решением.

§4. Симплекс-метод

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

Необходимые условия для применения симплекс-метода:

  1. Задача должна иметь каноническую форму.
  2. У задачи должен быть явно выделенный базис.

Определение:

Явно выделенным базисом будем называть вектора вида:

$(..0100..)^T, (..010..)^T,(..0010..)^T...$, т.е. только одна координата вектора ненулевая и равна 1.

Замечание:

Базисный вектор имеет размерность (m*1), где m – количество уравнений в системе ограничений.

Для удобства вычислений и наглядности обычно пользуются симплекс-таблицами:

image

  • В первой строке указывают «наименование» всех переменных.
  • В первом столбце указывают номера базисных переменных, а в последней ячейке – букву Z (это строка функционала).
  • В «середине таблицы» указывают коэффициенты матрицы ограничений — aij.
  • Последний столбец – вектор правых частей соответствующих уравнений системы ограничений.
  • Крайняя правая ячейка – значение целевой функции. На первой итерации ее полагают равной 0.

Замечание:

Базис – переменные, коэффициенты в матрице ограничений при которых образуют базисные вектора.

Замечание:

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

Замечание:

Коэффициенты в строке функционала берутся со знаком “-”.

Алгоритм симплекс-метода:

1. Выбираем переменную, которую будем вводить в базис. Это делается в соответствии с указанным ранее принципом: мы должны выбрать переменную, возрастание которой приведет к росту функционала. Выбор происходит по следующему правилу:

  • Если задача на минимум – выбираем максимальный положительный элемент в последней строке.
  • Если задача на максимум – выбираем минимальный отрицательный.

Такой выбор, действительно, соответствует упомянутому выше принципу: если задача на минимум, то чем большее число вычитаем – тем быстрее убывает функционал; для максимума наоборот – чем большее число добавляем, тем быстрее функционал растет.

Замечание:

Хотя мы и берем минимальное отрицательное число в задаче на максимум, этот коэффициент показывает направление роста функционала, т.к. строка функционала в симплекс-таблице взята со знаком “-”. Аналогичная ситуация с минимизацией.

Определение:

Столбец симплекс-таблицы, отвечающий выбранному коэффициенту, называется ведущим столбцом.

2. Выбираем переменную, которую будем вводить в базис. Для этого нужно определить, какая из базисных переменных быстрее всего обратится в нуль при росте новой базисной переменной. Алгебраически это делается так:

  • Вектор правых частей почленно делится на ведущий столбец
  • Среди полученных значений выбирают минимальное положительное (отрицательные и нулевые ответы не рассматривают)

Определение:

Такая строка называется ведущей строкой и отвечает переменной, которую нужно вывести из базиса.

Замечание:

Фактически, мы выражаем старые базисные переменные из каждого уравнения системы ограничений через остальные переменные и смотрим, в каком уравнении возрастание новой базисной переменной быстрее всего даст 0. Попадание в такую ситуацию означает, что мы «наткнулись» на новую вершину. Именно поэтому нулевые и отрицательные элементы не рассматриваются, т.к. получение такого результата означает, что выбор такой новой базисной переменной будет уводить нас из области, вне которой решений не существует.

3. Ищем элемент, стоящий на пересечении ведущих строки и столбца.

Определение:

Такой элемент называется ведущим элементом.

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

5. Далее начинается процесс вычисления нового базисного решения. Он происходит с помощью метода Жордана-Гаусса.

  • Новая Ведущая строка = Старая ведущая строка / Ведущий элемент
  • Новая строка = Новая строка – Коэффициент строки в ведущем столбце * Новая Ведущая строка

Замечание:

Преобразование такого вида направлено на введение выбранной переменной в базис, т.е. представление ведущего столбца в виде базисного вектора.

6. После этого проверяем условие оптимальности. Если полученное решение неоптимально – повторяем весь процесс снова.

§5. Интерпретация результата работы симплекс-метода

1. Оптимальность

Условие оптимальности полученного решения:

  • Если задача на максимум – в строке функционала нет отрицательных коэффициентов (т.е. при любом изменении переменных значение итогового функционала расти не будет).
  • Если задача на минимум – в строке функционала нет положительных коэффициентов (т.е. при любом изменении переменных значение итогового функционала уменьшаться не будет).

2. Неограниченность функционала

Однако, стоит отметить, что заданный функционал может не и достигать максимума/минимума в заданной области. Алгебраический признак этого можно сформулировать следующим образом:

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

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

3. Альтернативные решения

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

Алгебраический признак существования альтернативы:

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

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

Эпилог

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

Чуть позже напишу статью о практической реализации симплекс-метода, а также несколько статей о Методе искусственных переменных (М-Метод), Методе Гомори и Методе ветвей и границ.

Спасибо за внимание!

P.S.

Если уже сейчас Вы мучаетесь с реализацией симплекс-метода, советую почитать книгу А. Таха Введение в исследование операций — там все неплохо разобрано и в теории, и на примерах; а также посмотрите примеры решения задач matburo.ru — это поможет с реализацией в коде.

Симплекс метод для чайников

Понятие и алгоритм

Математик из США Бернард Данциг

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

Метод был разработан в 1947 году математиком из США Бернардом Данцигом. Предложенный способ оказался весьма эффективным для решения задач, связанных с оптимизацией использования ограниченных ресурсов. То есть он позволяет оценить и откорректировать параметры системы, а также получить качественные аналитические результаты.

Существует два подхода решения задачи:

  • графический;
  • симплексный.

Два подхода решения задачи

Первый можно использовать для оптимизационного решения двухмерных задач. Например, существует два производственных цикла по сборке ящиков. Выпуск товара характеризуется ограничением в поставках древесины и временем формовки изделия. Для одного необходимо 30 досок, а для другого — 40. Поставщики доставляют в неделю 2 тыс. единиц материала. Первый ящик собирается за 15 минут, а второй — за 30. Нужно определить, какое количество ящиков необходимо производить за неделю на первом конвейере и на втором. При этом первое изделие приносит 10 рублей прибыли, а второе — пять. Время изготовление ограничено 160 часами.

Решение заключается в принятии за Х1 и Х2 количество выпущенных ящиков. Затем — в нахождении максимальной еженедельной прибыли и описании процесса ограничения в виде уравнения.

Это типовая двухмерная задача, условия неотрицательности которой определяются границами прямых: 30*Х1 + 4 0*Х 2 ≤ 2000 (для досок) и 20*Х 1 ≤ 50*Х 2 = 1600 (для сборки). Отложив по оси ординат Х1, а Х2 по абсцисс, и указав на них точки соответствующие уравнениям, можно будет подобрать оптимальное решение для использования сырья и времени.

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

Симплекс-метод при базисном решении

Впервые способ был изложен Данцигом в книге «Линейное программирование, его обобщения и применения», изданной на русском языке в 1966 году. Эта теория основывалась на вычислительной процедуре и представлялась в виде стандартных алгебраических форм. Основное направление метода заключается в указании способа нахождения опорного решения, переходе к другому, более оптимальному расчёту и определении критериев, позволяющих остановить перебор опорных вариантов.

Симплекс-метод решения задач

Алгоритм решения задачи линейного программирования симплекс методом следующий:

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

  1. Свести поставленную задачу к канонической форме путём переноса свободных членов в правую часть и ввода дополнительных переменных. В случае отрицательных переменных неравенство умножается на -1. Если в записи используется знак «меньше или равно», переменная используется положительная, в противном случае — отрицательная.
  2. В зависимости от количества вводимых значений все переменные принимаются за основные. Их необходимо выразить через неосновные и перейти к базовому решению.
  3. Через неосновные переменные выражается функция цели.
  4. Если при решении отыскивается ответ с максимумом или минимумом линейной формы и все неосновные переменные получаются только положительными, то задача считается выполненной.
  5. Если найденный максимум (минимум) линейной формы в функции имеет одну или несколько неосновных переменных с отрицательными коэффициентами, необходимо перейти к новому базисному решению.
  6. Из переменных, входящих в форму с отрицательными или положительными коэффициентами, выбирается наибольшая (по модулю) и переводится в основные.

Другими словами, указывается оптимальное опорное решение, способ перехода от одного нахождения ответа к другому, варианты улучшения расчётов. После нахождения первоначального решения с «единичным базисом» вычисляется оценка разложения векторов по базису и заполняется симплексная таблица.

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

Двухфазный способ

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

Например, существует ограниченность, описываемая функцией:

F = C 1 X 1+ C 2 X 2+…+ CnXn. Используется условие, что Х1Р1+Х2Р2+…+Х(m +1) P (m +1)+ +… XnPn = Р0, где Х j больше либо равно 0 (j =1, n). Принимается, что среди чисел bi (i =1, m) имеются отрицательные.

Двойственный метод решения линейных задач

Решением будет выражение: х= (b1; b2;…; bm ;0;…;0), однако этот ответ не будет разрешать задание, так как к нему могут относиться и отрицательные числа. Так как векторы Р1, Р2… Рм единичные, то каждый из них можно описать линейной областью, состоящей из них же. При этом коэффициентами разложения векторов Рj по области будут числа: Xij = aij (i =1, m; j =1, n) по модулю.

Выражение х= ( b1; b2;…; bm ;0;…;0) определяется базисом. Называют его псевдоплан. Считается, что если дельта j больше либо равна нулю, то для любого: j ( j =1, n ) по модулю. В то же время если в псевдоплане с находимым базисом существует хотя бы одно отрицательное число, то тогда задача вообще не будет иметь планов. Но когда для этих отрицательных чисел верно, что аij меньше нуля, то можно будет перейти к новому псевдоплану.

Объяснение псевдоплана помогает построить алгоритм двойственного метода. Если взять за основу х = (b1; b2;…; bm ;0;…;0) и представить это выражение псевдопланом, то, учитывая исходные данные, можно составить симплекс-таблицу. В ней часть элементов будет отрицательная. Так как дельта j должна быть больше либо равна нулю, то при отсутствии таких чисел в таблице уже будет записан оптимальный план. В обратном случае выбирается по модулю наибольшее из чисел с минусом.

Принцип решения задачи включает следующее:

  • нахождение псевдоплана;
  • проверка его на оптимальность;
  • выбор разрешающей строки путём нахождения абсолютной величины отрицательного числа, отношения элементов (m+1) и соответствующей им строке;
  • нахождение нового псевдоплана.

Нахождение псевдоплана

Если анализ оптимален, считается, что найдено верное решение. В другом случае устанавливается неразрешимость задачи либо составляется новый псевдоплан. Делается это в результате пересчёта табличных данных, например, методом Жордана-Гаусса.

Пример задачи

Использование метода линейного программирования распространено в решениях транспортных задач. Он помогает в целевых расчётах и нужен для минимизации затрат в условиях ограниченной грузоподъёмности и времени обслуживания заказчиков.

Задачи линейного программирования (ЗЛП) позволяют выбрать оптимальную загрузку при перемещении какого-либо товара из одних мест в другие. Во вводных данных указывается число пунктов отправления (м) и количество мест назначения (n). Первые обозначаются как А1, А2…Ам, а вторые – В1, В2…Вn. За аi принимается объём продукции на складе, а bi – потребность. Затраты на перевозку с i пункта в j обозначаются Сij.

Главная задача — составить план таким образом, чтобы общая стоимость была минимальна. Пусть дано четыре песчаных карьера, с которых необходимо поставить песок на четыре склада. При этом осуществляться перевозки должны за определённую стоимость. Составляем таблицу.

Пример задачи

Записываем уравнение ограничения. Сумма всего перевезённого песка с первого карьера должна быть меньше или равна 140. Поэтому можно записать: x11+x12+x12+x14+T1 = 140, где Т1 переменная для хранения остатка. Сумма ограничений будет записана как х11+х21+х31 =115. Аналогичные уравнения составляют и для оставшихся карьеров.

 формируют матрицу,

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

  • A0 – последний столбец из матрицы;
  • Сб – стоимость перевозок;
  • Х11, Т3 – данные из полученной матрица.

Вычитают значение суммы

В последней строчке прямоугольника проставляют сумму произведений Сб на этот столбец и вычитают значение суммы перемножения Сб с А0. Делают дополнительное вычисление. Для каждой строки А0 делят на выделенное число, ищут наименьший результат и умножают его на положительные числа из последней строки.

Наибольшее число определяется пересечением ранее выбранных значений,

Наибольшее число определяется пересечением ранее выбранных значений, на базе которых создают новый базис. После в соответствии с единичными базисами меняют Сб и Хб. Операцию повторяют до тех пор, пока не исчезнут все положительные числа из последней строки. Заполняют новую таблицу.

Расчёт в Excel

Для включения пакета анализа в программе необходимо перейти в раздел «Параметры» и выбрать строчку «Перейти». В новом окне найти строчку «Пакет анализа», кликнуть по ней и нажать кнопку ОК.

Затем понадобится загрузить и открыть шаблон для проверки в Excel. Используя манипулятор типа «мышь» или клавиатуру, выбрать ячейку G4 и выполнить команду «Сервис/Поиск решения». Далее указать исходные данные, а после нажать кнопку «Выполнить».

Полученное решение можно представить в форме отчёта, содержащего:

  1. Результаты – содержит информацию об исходных и конечных значениях целевой и влияющих ячеек, дополнительные сведения об ограничениях.
  2. Устойчивость — отчёт, включающий данные о чувствительности решения к малым изменениям.
  3. Пределы – включают исходные и конечные значения, а также верхние и нижние границы значений, которые принимают влияющие ячейки при введённых ограничениях.

Онлайн-сервис для чайников

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

Онлайн-сервис для чайников

Удобным является ещё и то, что обычно на сайтах предлагается создать шаблон решения в Excel или Maple. Решаться любая задача будет почти мгновенно. Подробно можно выполнить расчёт онлайн-калькулятор по методу симплекса на следующих сайтах:

  1. «Семестр» (semestr.ru).
  2. «Мир математики» (matworld.ru).
  3. «Высшая математика» (math-pr.com).
  4. «Матзона» (mathzone.ru).
  5. «Контрольная работа» (kontrolnaya-rabota.ru).

Выполнить расчёт с помощью онлайн-сервисов сможет любой. При этом вероятность ошибки в ответе стремится к нулю. Тем более что для решения задачи даже необязательно знать принцип симплекс-метода.

Общая
постановка задачи

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

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

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

Алгоритм
симплексного метода

1.Математическую
модель задачи привести к каноническому
(стандартному) виду.

2.
Построить
начальную симплекс-таблицу исходя из
стандартного вида.

3. Найти разрешающий
столбец. В строке коэффициентов ЦФ найти
значение с самим маленьким отрицательным
числом. Этот столбец и будет разрешающим.

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

5.Построить
новую симплекс-таблицу-второй шаг.

При построении
новой таблицы убрать из базиса строку
с переменной разрешающей строки в
предыдущей таблице. Ввести в базис
строку с названием разрешающего столбца
предыдущей таблицы.

  • Построение ведущей
    строки в новой таблице. Почленно поделить
    всю разрешающую строку на разрешающий
    элемент.

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

6. Проверяем таблицу
второго шага на оптимальность. Если в
строке целевой функции нет отрицательных
элементов, тогда таблица имеет оптимальный
план, записать ответ. Если в строке ЦФ
есть отрицательный элемент (элементы),
тогда переходят к следующему (третьему)
шагу, строят новую симплекс-таблицу в
соответствии п.5 и затем проверяют ее
на оптимальность. Построение таблиц
заканчивается с нахождением оптимального
плана.

Прямая задача на
минимум решается следующим образом:

  • Написать
    математическую модель двойственной
    задачи в стандартном виде

  • Решить двойственную
    модель симплекс — методом

  • Записать ответ.

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

Для этого достаточно
воспользоваться соответствием переменных
прямой и двойственной задач в последней
симплекс-таблице.

Х1

x2

xn

S1

S2

Sm

S1

S2

Sm

y1

y2

ym

Задача

На предприятии
имеется возможность выпускать n видов
продукции (1,2,…n). При ее изготовлении
используются ресурсы Р1, Р2, Р3. Размеры
прямых затрат ресурсов ограничены
соответственно величинами b1, b2, b3. Расход
i –го ресурса на единицу продукции
j-того вида составляют aij. Цена единицы
продукции j-того вида равна cj ден. ед.
Сформулировать прямую и двойственную
задачу и раскрывать экономический смысл
всех переменных.

Требуется:

Найти оптимальный
план симплекс-методом.

Найти решение
двойственной задачи

Указать дефицитность
ресурсов

Обосновать
эффективность плана производства

Оценить
целесообразность приобретения ресурса

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

Данные :

b1 = 25, b2
= 30, b3 = 42

a11= 2,
a12= 3, a13= 2, a14= 1

a21= 4,
a22= 1, a23= 3, a24= 2

a31= 3, a32= 5, a33= 2,a34= 2

c1= 6, c2= 5, c3= 4, c4= 3

Математическая
модель прямой задачи

max (Z=
6×1+5×2+4×3+3×4)

2×1+3×2+2×3+x4<
25

4×1+x2+3×3+2×4<
30

3×1+5×2+2×3+2×4<
42

x1,
x2,
x3,
x4
>
0

Математическая
модель двойственной задачи

min (Z*=
25y1+30y2+42y3)

2y1+4y2+3y3>
6

3y1+y2+5y3>
5

2y1+3y2+2y3>
4

y1+2y2+2y3>
3

y1,
y2,
y3,
y4
>
0

Стандартный вид

min
(Z=
-6×1-5×2-4×3-3×4)

2×1+3×2+2×3+x4+S1=25

4×1+x2+3×3+2×4+S2=30

3×1+5×2+2×3+2×4+S3=42

x1,
x2,
x3,
x4,
S1,
S2,
S3
>
0

Экономический
смысл переменных

Xi – количество
произведенной продукции

Yj – цена ресурса

Si – количество
оставшегося ресурса

базис

значение

x1

x2

x3

x4

S1

S2

S3

отношение

Z

0

-6

-5

-4

-3

0

0

0

S1

25

2

3

2

1

1

0

0

12,5

S2

30

4

1

3

2

0

1

0

7,5

S3

42

3

5

2

2

0

0

1

14

Таблица
2

базис

значение

x1

x2

x3

x4

S1

S2

S3

отношение

Z

45

0

-3,5

0,5

0

0

1,5

0

S1

10

0

2,5

0,5

0

1

-0,5

0

4

x1

7,5

1

0,25

0,75

0,5

0

0,25

0

30

S3

19,5

0

4,25

-0,3

0,5

0

-0,8

1

4,59

Таблица 3

базис

значение

x1

x2

x3

x4

S1

S2

S3

отношение

Z

59

0

0

1,2

0

1,4

0,8

0

x2

4

0

1

0,2

0

0,4

-0,2

0

x1

6,5

1

0

0,7

0,5

-0,1

0,3

0

S3

2,5

0

0

-1,1

0,5

-1,7

0,1

1

Анализ решения

Продукции 1 вида
производим 6,5 ед., второго вида 4 единицы,
третьего и четвертого вообще не
производим. Прибыль при этом составит
59 ден. единиц.

Ресурс 1 типа стоит
1,4 ден. ед., 2 типа – 0,8 ден. ед. Третий тип
ресурса у нас остался в количестве 2,5
ед., поэтому его покупать не нужно.

Ресурсы 1 и 2 типа
дефицитны, 3 типа избыточен.

Эффективность
производства

Z = 6*6.5+5*4+4*0+3*0=59
Z*=25*1.4+30*0.8+42*0=59 Производство в целом
эффективно

2*1,4+4*0,8+3*0<
6 6=6 Производство 1 вида продукции
эффективно

3*1,4+1*0,8+5*0<
5 5=5 Производство 2 вида продукции
эффективно

2*1,4+3*0,8+2*0<
4 5,2> 4 Производство 3 вида продукции не
эффективно

1*1,4+2*0,8+2*0<
3 3=3 Т.к. x4 не входит в базис, то оптимальный
план не единственен.

Оценить
целесообразность покупки 5 ед. второго
ресурса по цене 10 ден. ед, т.е. единица
ресурса обойдется нам в 2 ден. ед. Мы же
готовы покупать только по 0,8 ден. ед. за
1 единицу ресурса.

а1 = 2, а2 = 2, а3 = 4.
Цена новой продукции равна 4.

2*1,4+2*0,8+2*0<
4 4,4> 4 Производство 5 вида продукции не
эффективно.

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

1.Определение
математической модели экономической
задачи.

2.Виды математических
моделей ЛП.

3.Составление
математической модели.

4.Экономическая
формулировка математической модели
прямой и двойственной задач.

5.Понятие
двойственности в задачах линейного
программирования.

6.Правило построения
математической модели двойственной
задачи.

7. Первая теорема
двойственности.

8. Вторая теорема
двойственности.

9. Третья теорема
двойственности.

10.Алгоритм
геометрического метода решения задач
ЛП.

11.Симплексный
метод решения задач ЛП и его применение.

12.Алгоритмм
симплексного метода.

13.Анализ решения
задачи по симплекс – таблице, отвечающей
критерию оптимальности.

Соседние файлы в предмете Методы оптимизации

  • #
  • #

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

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

Решение задачи табличным симплекс-методом

Решение задачи происходит в несколько последовательных этапов. Разберем их на небольшом примере производственной задачи.

1. Определение исходных данных

В нашем примере, по условиям задачи предприятие выпускает 4 вида изделий, обрабатывая их на 3 станках.

Исходные данные для производственной задачи запишем в формате матриц:

  • Матрица A — нормы времени на обработку изделий;
  • Матрица B — фонд времени работы станков;
  • Матрица C — продажи производимых изделий.

Таким образом, нормы времени (мин./шт.) на обработку изделий на станках, заданы матрицей A:

Решение производственной задачи табличным симплекс-методом

Фонд времени работы станков (мин.) задан в матрице B:

Решение производственной задачи табличным симплекс-методом

Прибыль от продажи каждой единицы изделия (руб./шт.) задана матрицей C:

Решение производственной задачи табличным симплекс-методом

Кроме того, обозначим через Xi планируемое количество изделий каждого вида. Тогда искомый план: X1, X2, X3, X4.

2. Запись ограничений плана в виде системы неравенств

Запишем ограничения плана в виде системы неравенств:

Решение производственной задачи табличным симплекс-методом

Коэффициенты при переменных в левой части системы неравенств берем из матрицы A, значения из правой части — из матрицы B.

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

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

3. Определение целевого показателя

В нашей задаче целевой показатель — прибыль, которую следует максимизировать путем составления оптимального плана производства.

Тогда целевая прибыль может быть записана через следующее равенство:

Решение производственной задачи табличным симплекс-методом

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

4. Приведение системы неравенств к системе линейных уравнений

Для решения получившейся задачи на условный экстремум, заменим систему неравенств системой линейных уравнений путем ввода в нее дополнительных неотрицательных переменных (X5, X6, X7).

Решение производственной задачи табличным симплекс-методом

Эти переменные являются фиктивными изделиями, на которые мы списываем неиспользованные остатки фондов времени работы станков.

5. Формирование опорного плана

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

X1 = 0, X2 = 0, X3 = 0, X4 = 0, X5 = 252, X6 = 144, X7 = 80.

Здесь основным переменным (количеству изделий производимых в рамках плана) сопоставляем нулевые значения, а дополнительным (фиктивным) переменным — соответствующие величины фондов времени работы станков.

6. Составление симплекс-таблицы

Занесем исходные данные в специальную симплекс-таблицу.

В столбец Базис выписываем дополнительные переменные (X5..X7). В колонку H вносим величины фонда времени работы станков. В столбцы X1..X7 помещаем коэффициенты при этих переменных из составленной ранее системы уравнений (если переменных в уравнении нет, как например, X6 и X7 в первом равенстве, то коэффициенты будут равны 0). Кроме того, следует предусмотреть дополнительный столбец (b) для показателя, который мы будем рассчитывать на следующем этапе.

Решение производственной задачи табличным симплекс-методом

Количество строк в таблице соответствует числу дополнительных переменных (X5..X7). В последнюю строку (c) заносим коэффициенты при целевой функции с обратным знаком (коэффициенты при дополнительных переменных X5..X7 будут нулевыми).

7. Вычисление показателя b

Выбираем в последней строке наибольшее (по модулю!) отрицательное число.

В нашем примере это -48 (еще раз подчеркнем, что отрицательные числа сравниваем без учета знака).

Решение производственной задачи табличным симплекс-методом

Далее вычислим для столбца, которому соответствует выбранное число, специальный показатель bi = Нi / ai, где ai — значение ячейки выбранного столбца и соответствующей строки.

8. Нахождение разрешающего элемента

Среди вычисленных значений b выбираем наименьшее.

Пересечение выбранных столбца и строки даст нам разрешающий элемент (РЭ). Меняем базисную переменную (из первой колонки в выбранной строке) на переменную соответствующую разрешающему элементу (X5 на X1).

Решение производственной задачи табличным симплекс-методом

9. Перерасчет элементов симплекс-таблицы

Теперь необходимо пересчитать все элементы симплекс-таблицы, кроме столбца b (который очищается).

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

  • Сам разрешающий элемент (РЭ) обращается в единицу;
  • Для элементов разрешающей строки применяется формула: aij* = aij / РЭ (то есть каждый элемент делим на значение разрешающего элемента и получаем новые данные);
  • Для элементов разрешающего столбца — они просто обнуляются;
  • Остальные элементы таблицы пересчитываем по правилу прямоугольника:

    Решение производственной задачи табличным симплекс-методом

    Формула здесь следующая: aij* = aij — ( A × B / РЭ )

    Как видите, мы берем пересчитываемую ячейку и ячейку с разрешающим элементом. Они образуют противоположные углы прямоугольника. Далее перемножаем значения из ячеек 2-х других углов этого прямоугольника. Это произведение (A × B) делим на разрешающий элемент (РЭ) и вычитаем из текущей пересчитываемой ячейки (aij) то, что получилось. В итоге имеем новое значение — aij*.

Полученные в результате перерасчета значения заносим в новую симплекс-таблицу:

Решение производственной задачи табличным симплекс-методом

10. Проверяем последнюю строку симплекс-таблицы на наличие отрицательных чисел: если их нет — оптимальный план найден (п. 11), если есть — план требует улучшения (п. 7)

Вновь проверяем последнюю строку (c) на наличие отрицательных чисел. Если их нет — оптимальный план найден, переходим к последнему этапу решения задачи (пункт 11). Если есть — план еще не оптимален, и симплекс-таблицу вновь нужно пересчитать.

Так как у нас в последней строке снова имеются отрицательные числа, начинаем новую итерацию (повторение) вычислений с пункта 7.

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

Решение производственной задачи табличным симплекс-методом

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

Решение производственной задачи табличным симплекс-методом

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

11. Определение производственного плана и вычисление общей прибыли

В соответствии с найденным планом (смотрим какие переменные перешли в колонку «Базис») выпускать мы будем изделия X1 и X2 (X7 не учитываем, т. к. это фиктивное изделие, не производимое на предприятии и введенное для приведения системы неравенств к системе уравнений).

Прибыль от производства каждой единицы продукции нам известна (матрица C). Остается перемножить ее с найденными объемами выпуска изделий X1 и X2 (значения X3 и X4 нулевые, т. к. эти изделия производить оказалось невыгодно), для получения общей (максимально возможной!) прибыли.

Ответ План производства: X1 = 32 шт., X2 = 20 шт., X3 = 0 шт., X4 = 0 шт., общая прибыль: P = 48 × 32 + 33 × 20 = 2 196 руб.

Источники

  1. Галяутдинов Р. Р. Курс лекций по логистике
  2. Симплекс-метод // Википедия. URL: http://ru.wikipedia.org/wiki/Симплекс-метод (дата обращения: 25.11.2013)

Статья дополнена и доработана автором 5 ноя 2020 г.

© Копирование любых материалов статьи допустимо только при указании прямой индексируемой ссылки на источник: Галяутдинов Р.Р.



Теория
Работа проверена:

Время решения: 5 мин


Сложность: 4.3

Для упрощения процесса решения исходные данные задачи линейного программирования при решении ее симплекс методом записываются в специальные симплекс-таблицы. Поэтому одна из модификаций симплекс метода получила название табличный симплекс метод. Задача линейного программирования в каноническом виде:
F=a0,1x1+a0,2x2+…a0,nxn +b0 → max
a1,1x1+a1,2x2+…a1,nxn + xn+1=b1
a2,1x1+a2,2x2+…a2,nxn +xn+2 =b2
…………………………………
am,1x1+am,2x2+…am,nxn+xn+m=bm
Исходная таблица для задачи имеет следующий вид:

x1 x2 xn-1 xn b
F -a0,1 -a0,2 -a0,n-1 -a0,n -b0
xn+1 a1,1 a1,2 a1,n-1 a1,n b1
xn+2 a2,1 a2,2 a2,n-1 a2,n b2
xn+m am,1 am,2 am,n-1 am,n bm

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

  Алгоритм симплекс-метода.

 Подготовительный этап
Приводим задачу ЛП  к каноническому виду
F=a0,1x1+a0,2x2+…a0,nxn +b0 → max
a1,1x1+a1,2x2+…a1,nxn+xn+1=b1
a2,1x1+a2,2x2+…a2,nxn+xn+2=b2
…………………………………
am,1x1+am,2x2+…am,nxn+xn+m=bm
В случае если в исходной задаче необходимо найти минимум – знаки коэффициентов целевой функции F меняются на противоположные a0,n=-a0,n. Знаки коэффициентов ограничивающих условий со знаком “≥” так же меняются на противоположные. В случае если условие содержит знак “≤” – коэффициенты запишутся без изменений.

 Шаг 0. Составляем симплексную таблицу, соответствующую исходной задаче

x1 x2 xn-1 xn b
F -a0,1 -a0,2 -a0,n-1 -a0,n -b0
xn+1 a1,1 a1,2 a1,n-1 a1,n b1
xn+2 a2,1 a2,2 a2,n-1 a2,n b2
xn+m am,1 am,2 am,n-1 am,n bm

 Шаг 1. Проверка на допустимость.

Проверяем на положительность элементы столбца b (свободные члены), если среди них нет отрицательных то найдено допустимое решение (решение соответствующее одной из вершин многогранника условий) и мы переходим к шагу 2. Если в столбце свободных членов имеются отрицательные элементы то выбираем среди них максимальный по модулю – он задает ведущую строку k. В этой строке так же находим максимальный по модулю отрицательный элемент ak,l – он задает ведущий столбец – l и является ведущим элементом. Переменная, соответствующая ведущей строке исключается из базиса, переменная соответствующая ведущему столбцу включается в базис. Пересчитываем симплекс-таблицу согласно правилам.
Если же среди свободных членов есть отрицательные элементы – а в соответствующей строке – нет то условия задачи несовместны и решений у нее нет.
Если после перерасчета в столбце свободных членов остались отрицаетельные элементы, то переходим к первому шагу, если таких нет, то ко второму.
Шаг 2. Проверка на оптимальность.
На предыдущем этапе найдено допустимое решение. Проверим его на оптимальность Если среди элементов симплексной таблицы, находщихся в строке F (не беря в расчет элемент b0 – текущее значение целевой функции) нет отрицательных, то найдено оптимальное решение.
Если в строке F есть отрицательные элементы то решение требует улучшения. Выбираем среди отрицательных элементов строки F максимальный по модулю (исключая значение функции b0)

a0,l=min{a0,i }

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

bk/ak,l =min {bi/ai,l } при ai,l>0, bi>0

k – cтрока, для которой это отношение минимально – ведущая. Элемент ak,l – ведущий (разрешающий). Переменная, соответствующая ведущей строке (xk) исключается из базиса, переменная соответствующая ведущему столбцу (xl) включается в базис.

Пересчитываем симплекс-таблицу по формулам. Если в новой таблице после перерасчета в строке F остались отрицательные элементы переходим к шагу 2

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

Если в строке F и в столбце свободных членов все элементы положительные, то найдено оптимальное решение.

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

    • Вместо базисной переменной xk записываем xl; вместо небазисной переменной xl записываем xk.
    • ведущий элемент заменяется на обратную величину ak,l‘= 1/ak,l
    • все элементы ведущего столбца (кроме ak,l) умножаются на -1/ak,l
    • все элементы ведущей строки (кроме ak,l) умножаются на 1/ak,l
    • оставшиеся элементы симплекс-таблицы преобразуются по формуле ai,j‘= ai,j– ai,lx ak,j/ ak,l

Схему преобразования элементов симплекс-таблицы (кроме ведущей строки и ведущего столбца) называют схемой ”прямоугольника”.
схема прямоугольника
Преобразуемый элемент ai,j и соответствующие ему три сомножителя как раз и являются вершинами ”прямоугольника”.

Пример

Купить уже готовую работу

Так же вы можете купить уже выполненные похожие работы. Для удобства покупки
работы размещены на независимой бирже. Подробнее об условиях покупки тут.

 

4.24

user2235229

Я Екатерина — специалист в области права и смежных наук! Имею опыт в подготовке контрольных, творческих и курсовых работ! Окажу любую помощь в выполнении ваших работ!!!

Понравилась статья? Поделить с друзьями:
  • Как можно найти девушку для серьезных отношений
  • Как составить электронную формулу карбоната
  • Как найти площадь боковой пов пирамиды
  • Как найти телеканал украина
  • Как найти штраф организации по инн