Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмиз.задач_управл..DOCX
Скачиваний:
55
Добавлен:
17.11.2019
Размер:
369.31 Кб
Скачать

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

1.3.1. Цель: закрепить навыки нахождения исходного опорного плана ЗЛП и оп-ределения возможности его улучшения и нахождения оптимального плана с помощью симплекс-метода.

1.3.2. Теоретическая часть

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

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

  • базисные компоненты исследуемого опорного плана;

  • элементы матрицы ||Xij||mn ;

m

 оценки векторов условий  jZ jC j , j  1, n, Z j  ci xij ;

i1

  • значение линейной формы Z0, соответствующее исследуемому опорному плану

m

X 1 , Z0 ci xi .

  1. 1

  • результате исследования должно быть установлено:

    - либо оптимальность плана X 1 ;

    • либо неразрешимость задачи;

    • либо возможность перехода к новому плану X 2 (новому базису); связанному с

    большим значением линейной формы (для задачи максимизации).

    При ручном счете вычисления удобно оформлять в виде специального вида сим-плекс-таблиц (табл.2).

    Рассмотрим каноническую ЗЛП, записанную в векторной форме:

    n

    • c j x j max,

    1. 1 n

    aij x j bi ,(i 1, m),

    1. 1

    x j 0, j 1,n.

    Запишем ее в виде симплекс-таблицы (см. табл.2). Для этого введем в исходную таблицу те параметры, что соответствуют начальному опорному плану:

    • коэффициенты при неизвестных переменных в исходной ЦФ Cj – верхняя строка симплекс-таблицы,

    • коэффициенты при базисных переменных Сi, записанные в соответствующем столбце,

    • базисные переменные – столбец “базис”,

    • соответствующие значения базисных переменных, составляющие данное опорное решение – столбец “Х(аi0)”,

    • матрицу коэффициентов задачи – столбцы “х1” – “хn”,

    • коэффициенты, необходимые для определения ведущей строки – столбец “Qi”,

    • оценки  j , соответсвующие коэффициентам ЦФ для данного опорного плана

    18

    m

    j Z j C j , Z j ci xij , j 1, n

    1. 1

  • значение ЦФ для данного опорного плана Z.

    Таблица 2

    i

    базис

    Сi

    C1

    C2

    Cm

    Cm+1

    Ck

    Cn

    Q(i)

    х1

    х2

    хm

    xm+1

    xk

    xn

    X 1

    (ai0)

    1

    x1

    c1

    a10

    1

    0

    0

    a1,m+1

    a1k

    a1n

    Q1

    2

    x2

    c2

    a20

    0

    1

    0

    a2,m+1

    a2k

    a2n

    Q2

    l

    xl

    cl

    al0

    0

    0

    0

    al,m+1

    alk

    aln

    Ql

    m

    xm

    cm

    am0

    0

    0

    1

    am,m+1

    amk

    amn

    Qm

    m

    m+1

    Z j  j

    Z ci ai0

    1

    2

    m

    m1

    k

    n

    i1

    Таблица обрабатывается по следующему алгоритму.

    Первая итерация. Заполняется таблица 2, соответствующая исходному опорному плану X1 с базисом х1,х2,…,хm.

    r(l+1) -я итерация (переход от таблицы с номером “r” к таблице с номером “(r+1)”).

    Пусть заполнена таблица с номером “r” за исключением столбца Q (r).Рассмотрим элементы (m+1)-й строки. Здесь возможны три случая:

    а) все j0, тогда опорный план, X r полученный после l-й итерации, - решение задачи;

    б) k0, а все элементы столбца " xk " aik<0 в этом случае задача неразрешима;

    в) в каждом столбце xk , для которого k<0, имеется хотя бы один положительный элемент. В этом случае в базис вводится один из векторов хk (для определенности бу-дем считать c наименьшей оценкой k). Для определения вектора xl , который нужно вывести из базиса, заполняется столбец Q (r), r-й таблицы, точнее те его позиции, кото-рые соответствуют aik(r )  0;

    Q(r ) ai0 .

    aik

    Вектор хl, на котором достигается min Q (r), выводится из базиса. Новый базис со-держит (m-1) векторов старого базиса и вектор xk. В этом базисе вычисляется новый план xr 1  (x1 , x2 ,..., xk ,..., xm ,0,...,0)

    Векторы, не входящие в базис, разлагают по векторам базиса, причем единствен-ным образом.

    Составляющие ai(0r 1) нового плана определяются из соотношений:

    xi(r 1)

    ai(0r 1) ai(0r )

    a(r ) a(r )

    l0

    ik

    ,il,i  1, m;

    alk(r )

    xk(r 1)

    ak(r01)

    a

    ( r)

    ,il.

    l 0

    alk(r)

    Элементы аij(r+1)

    - из соотношений:

    aij(r 1)

    aij(r )

    a( r) a

    (r )

    li

    ik

    ,il,i  1,m;

    alk(r )

    a

    (r )

    akj(r 1)

    lj

    ,il.

    alk(r )

    Элементы (m+1)-й строки вычисляются по формулам:

    Z0(r 1) Z0(r )

    al(0r ) (kr )

    ;

    alk(l)

    (jr 1) Z (jr 1) C j (jr )

    alj(r ) (kr )

    , j  1,

    n

    .

    alk(r)

    Этим завершается (r+1)-я итерация.

    Если в ( m+1)-й строке все j(r+1)0, то получено оптимальное решение, в против-ном случае переходим к (r+2)-й итерации.

    Замечание. Если первоначальная задача связана с минимизацией, то критерием оптимальности плана является выполнение условия j0 в (m+1) строке на r-й итера-ции.

    Пример: решить ЗЛП

    2x1x2x3x4  max,

    x1 x2 x3 1,

    2x1x2x4  3,

    x j 0, j 1,4.

    Система содержит полный единичный базис (x3; x4), которому соответствует опорное решение (0; 0; 1; 3). Избавимся в ЦФ от базисных переменных:

    1.  2x1x2  1 x1x2  3  2x1x2 2  3x1  3x2  max .

    И перенеся все переменные в левую часть полученного уравнения, получим

    1.  3x1  3x2 2.

    Заполним исходную симплекс-таблицу (см. табл.4).

    Таблица 4.

    i

    базис

    Сi

    2

    1

    1

    -1

    х1

    х2

    х3

    x4

    Q(1)

    X 1

    (ai0)

    1

    x3

    1

    1

    1

    -1

    1

    0

    1

    2

    х4

    -1

    3

    2

    1

    0

    1

    3 2

    m+1

    Z

    -2

    -3

    -3

    0

    0

    Среди оценок ((m+1)-я строка) имеются отрицательные 1<0 и 2<0, причем, в со-ответствующих им столбцам есть положительные элементы. Поэтому можно перейти к новому, более лучшему, базису. Так как 1=2= -3, то выберем в качестве разрешаю-щего тот столбец, который дает наименьшее отношение. Это 1-й столбец (х1). Разре-шающий элемент определяется как минимальное отношение элементов столбца сво-бодных членов (аi0) к соответствующим элементам разрешающего столбца. Им оказал-ся элемент а11=1 (выделен жирным шрифтом). Проводим первую итерацию по изло-женному выше алгоритму, после которой получаем следующую таблицу (см. табл. 5).

    Таблица 5.

    i

    базис

    Сi

    2

    1

    1

    -1

    х1

    х2

    х3

    x4

    Q(2)

    X 2

    (ai0)

    1

    x1

    2

    1

    1

    -1

    1

    0

    2

    х4

    -1

    1

    0

    3

    -2

    1

    1 3

    m+1

    Z

    1

    0

    -6

    3

    0

    Из таблицы 5 видно, что улучшение плана можно продолжить. Разрешающим столбцом выбираем единственный столбец, имеющий отрицательную оценку 2= -6, а разрешающим элементом – единственный положительный элемент ведущего столбца. Переходим к следующему базису X 3 (см. табл.6).

    Таблица 6.

    i

    базис

    Сi

    2

    1

    1

    -1

    х1

    х2

    х3

    x4

    Q(3)

    X 3

    (ai0)

    1

    x1

    2

    4 3

    1

    0

    1 3

    1 3

    4

    2

    х2

    1

    1 3

    0

    1

     2 3

    1 3

    m+1

    Z

    3

    0

    0

    -1

    2

    Так как таблица 6 содержит отрицательную оценку, то переходим к плану X 4 (см.

    табл.7).

    Таблица 7.

    i

    базис

    Сi

    2

    1

    1

    -1

    х1

    х2

    х3

    x4

    Q(4)

    X 4

    (ai0)

    1

    x3

    1

    4

    3

    0

    1

    1

    4

    2

    х2

    1

    3

    2

    1

    0

    1

    m+1

    Z

    7

    3

    0

    0

    3

    Все оценки неотрицательны, следовательно, найденное решение оптимально.

    То есть хопт=(0; 3; 4; 0), Zmax=7.