|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Задача линейного программированияЗадача линейного программирования – это оптимизационная задача с линейной целевой функцией и линейными ограничениями в виде равенств и неравенств: целевая функция
и ограничения
xi ³0, где xi, – вектор оптимизируемых управляемых параметров; сi – удельные эффект или затраты, приходящиеся на единицу xi ; aij и bi – параметры (коэффициены) ограничений; m – общее число оптимизируемых параметров; n – общее число ограничений. Такой вид имеет формализованная постановка общей задачи линейного программирования. Пример. Автомобиль при работе на объекте 1 имеет производительность 20 единиц, на объекте 2 – 25 единиц. На этих объектах необходимо освоить объем перевозок не более чем 175 единиц. Общее число автомобилей, задействованных на перевозках не должно превышать 8 единиц. Эффект от работы автомобиля на 1-м объекте составляет 5 единиц; на 2-м – 6 единиц. Требуется найти оптимальный вариант распределения автомобилей по объектам перевозок. Пусть x1 – число автомобилей для работы на 1-м объекте и x2 – на 2-м объекте. Тогда задача в математической форме имеет вид: 20 x1+ 25 x2 <= 175 x1 + x2 <= 8 ограничения x1 >= 0 x2 >= 0 5 x1 + 6 x2 = max – целевая функция. Двухмерная задача линейного программирования может быть решена графическим методом. Этот метод основан на получении выпуклого многоугольника допустимых решений и нахождении на нем точки (точек) экстремума. Алгоритм графического метода следующий: 1) строятся линии ограничений и исключаются из рассмотрения запрещенные области по всем ограничениям. В результате получается выпуклый многоугольник допустимых решений; 2) строится изолиния целевой функции для произвольного ее значения; 3) изолиния целевой функция перемещается параллельно таким образом, чтобы она только касалась полученного многоугольника допускаемых решений по точке или линии при экстремуме целевой функции. Рассмотрим графическое решение на вышеприведенном примере (рисунок 3.19). Строим линии ограничений и исключаем запрещенные области. 1 ограничение: x1 = 0; x2 = 175/25 = 7; x2 = 0; x1 = 175/20 = 8.75. 2 ограничение: x1 = 0; x2 = 8; x2 = 0; x1 = 8. Кроме того, ограничениями являются оси координат, так как x1 ³ 0; x2 ³ 0. Полученная незапрещенная область (на рисунке затемненная) – область допустимых решений. Строим изолинию целевой функции. Пусть Z = 30, тогда x1 = 0; x2 = 5; x2 = 0; x1 = 6. Перемещая изолинию параллельно все выше и выше, находим наибольшее значение Z, когда изолиния только касается многоугольника допустимых решений и имеется хотя бы одна общая точка с ним. Точка "В", в которой x1 = 5 и x2 = 3 соответствует оптимальному решению поставленной задачи. Если линия уровня целевой функции касалась бы многоугольника допустимых решений не в точке, а по линии – то мы имели бы случай, когда задача имеет множество решений. Если ограничения задачи противоречивы, то задача не имеет решения (например, 1-е ограничение 20 х1 + 25 х2≥ 500). При изменениях коэффициентов целевой функции оптимальное решение может изменяться. Так, например, при целевой функции вида 4 x1 + 6 x2 = max решение в точке А, при функции 5x1 + 6.25 x2 = max – множество точек отрезка [А,В], при функции 5x1 + 5 x2 = max – множество точек отрезка [В, C] и при функции 10x1 + 6 x2 = max решение в точке С. При числе оптимизируемых параметров более двух мы имеем дело с выпуклым многогранником ограничений (при m = 3 ограничения определяются плоскостями, допустимая область – выпуклым многогранником, уровень целевой функции – плоскостью, решение – касание допустимой области плоскостью целевой функции). Для решения задачи в m-мерном пространстве применяется симплекс-метод. Идея метода – последовательный пересмотр вершин многогранника допустимых значений и выбор одной из них, соответствующей экстремуму целевой функции. x2 А 7 2-е ограничение
изолиния целевой функции
В В 1-е ограничение
С 1 2 3 4 5 6 7 8 x1
Рисунок 3.19 – Графическое решение общей задачи линейного программирования
Для применения симплекс-метода исходные данные задачи приводят к каноническому (стандартному) виду путем ввода дополнительных переменных по числу ограничений типа неравенств из общего числа n. Цель – заменить ограничения типа неравенств ограничениями типа равенств. Стандартная форма задачи имеет вид: целевая функция ci = 0 для ; ограничения
где M = m+n и . Для неравенств типа £ dij=1 и для типа ³ dij= - 1. Например, стандартная форма для ранее приведенной задачи следующая: 20 x1+ 25 x2 + 1 x3+ 0 x4 = 175 x1 + x2 + 0 x1+ 1 x2 = 8 Z = 5 x1+ 6 x2 + 0 x3+ 0 x4 = max. Основные шаги решения задачи (после представления исходной системы в стандартном виде): 1) формируется первоначальное базисное решение; 2) выражается Z через небазисные переменные; 3) проверяется базисное решение на оптимальность. Если оптимально, то на п.10; 4) проверяется задача на наличие решения. Если решения нет, то выход; 5) выбирается из небазисных переменных та, которая способна при введении ее в базис в большей степени улучшить значение целевой функции, и вводится в базис; 6) определяется базисная переменная, которая выводится из базиса; 7) алгебраически выражается вводимая в базис переменная через переменную, выводимую из базиса и другие небазисные переменные; 8) алгебраически выражаются другие базисные переменные через небазисные; 9) переход на п. 2; 10) определяются значения базисных переменных. Они являются решением задачи. Итерационный процесс (шаги 2–9) повторяются до тех пор, пока не произойдет выход на шаге 3 или 4. Алгоритм реализации отдельных шагов при решении задачи на максимум и ограничениях типа £ следующий: Шаг 1 состоит в назначении базисных переменных по числу ограничений в задаче. Базисные переменные xu выражаются через небазисные xp из равенств, в которые они входят через значимые коэффициенты. При этом небазисные переменные принимаются нулевыми. На первом шаге в качестве базисных принимаются дополнительные переменные, а в качестве небазисных – основные, т.е. и . Тогда первое базисное решение xm+1 = b1; xm+2 = b2; ... xM = bn; x1 = 0; x2 = 0; ... xm = 0. Шаг 2 – алгебраически выражается целевая функция Z через небазисные переменные . Шаг 3 – проверяется все ли сp≤0. Если да, то решение оптимально. Шаг 4 – оценка наличия решения. Если при хp, имеющем сp >0, во всех уравнениях apj<0 (j =1, 2,..., n), то решение отсутствует (выход из программы с соответствующим сообщением). Шаг 5 – определяется та небазисная переменная, которую наиболее целесообразно ввести в базис, по максимуму положительного коэффициента в текущем выражении для целевой функции , где s– номер переменной, вводимой в базис. Шаг 6 – определяется одна из базисных переменных для вывода ее из базиса. Для этого во всех j-х равенствах для хs вычисляется отношение свободного члена bj к соответствующему коэффициенту asj (asj >0), т.е. bj/asj. Минимальное из отношений указывает на j-е равенство и соответственно на выводимую переменную из базиса. Шаг 10 – формируется окончательное решение в виде численных значений искомых переменных, которые входят в базис. Вычисляются из последних выражений для них при значениях небазисных переменных, равных нулю. С практической точки зрения определение численных значений базисных переменных, которые являются дополнительными, не требуется. Основные переменные, которые не входят в базис, равны нулю. Для ручного решения задачи могут использоваться симплекс-таблицы. Решение задачи при ограничениях одновременно типа £, = и ³ отличается от приведенного алгоритма введением искусственных переменных /4/. Рассмотрим решение симплекс-методом ранее приведенного примера задачи. 1-я итерация: 1) базисные переменные x3 = 175 и x4 = 8 и небазисные x1 = 0 и x2 = 0; 2) целевая функция Z = 5 x1 + 6 x2 ; 3) поскольку 5>0 и 6>0, то решение не оптимально; 4) так как a1.1 > 0, a1.2 > 0, a2.1 > 0 и a2.2 > 0, то не следует, что решения нет; 5) поскольку 6>5 и поиск на max, то вводим в базис x2 ; 6) исходя из минимума соотношений (175/25=7 в первом уравнении и 8/1=8 во втором) необходимо выводить из базиса переменную x3 (1-е уравнение); 7) выражаем x2 = (175-20.x1 -x3)/25 = 7-0.8.x1-0.04.x3 (уравнение 0.8.x1+0.04.x3+ x2 =7); 8) выражаем другие базисные через небазисные x4 = 8 - x1 -x2 = 8 -x1 -(7- 0.8.x1 - 0.04.x3) = = 1- 0.2.x1 + 0.04.x3 (уравнение 0.2.x1 - 0.04.x3 + x4 =1); 9) переход на шаг 2. 2-я итерация: 2) целевая функция Z = 5 x1 + 6 x2 = 5 x1 + 6 (7- 0.8.x1 - 0.04.x3) = 42 + 0.2.x1 - 0.24.x3; 3) поскольку 0.2>0, то решение не оптимально; 4) так как при x1 (c1> 0) a1.1 > 0 и a1.2 > 0 (для текущих уравнений, приведенных к основному виду со свободным членом в правой части), то не следует, что решения нет; 5) поскольку 0.2>-0.24 и поиск на max, то вводим в базис x1 ; 6) исходя из минимума соотношений 7/0.8=8.75 в первом уравнении и 1/0.2=5 во втором необходимо выводить из базиса переменную x4; 7) выражаем x1: x1 = (1+ 0.04.x3 -x4)/0.2 = 5 + 0.2.x3 - 5.x4; 8) выражаем другие базисные переменные через небазисные x2 = 7- 0.8.x1 - 0.04.x3 =7 - 0.8.(5 + 0.2.x3 - 5.x4)- 0.04.x3 = 3 - 0.20.x3 + 4.x4; 9) переход на шаг 2. 3-я итерация: 2) целевая функция Z=5 x1 + 6 x2 = 5 (5 + 0.2.x3 - 5.x4)+6 (3 - 0.20.x3 + 4.x4) = 43 - 0.2.x3 - 1.x4; 3) поскольку -0.2 <0 и -1 <0, то решение оптимально; 10) базисные переменные x1 = 5 и x2 = 3. Таким образом, как и при графическом методе, получаем, что оптимальное решение: x1 = 5 и x2 = 3. Компьютерная программа решения задачи линейного программирования рассмотренного вида (целевая функция на максимум и ограничения типа ≤) приведена в приложении 6. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.01 сек.) |